尧图精选

干货分享 | 如何把 MaxKB (V1) 应用发布成 MCP 服务并改到 TaoToken?

🕒 发布时间:2026/10/1 14:29:08 📁 来源:尧图网络
1. MaxKB V1 应用发布 MCP 服务到底解决什么问题MaxKB 本身是个知识库问答系统V1 版本里每个应用对外只暴露 HTTP API调用方得自己拼请求、传 API KEY、解析返回结构。如果你手上有客服、财务、运维好几个 MaxKB 应用想让 Claude Desktop、Cursor、Dify 或者 LangChain 在对话里自动挑一个来用传统做法是在工作流里写死判断逻辑——用户问差旅标准走财务应用问入职流程走人事应用。业务规则一改编排就得重画。MCPModel Context Protocol解决的就是这个运行时动态发现工具的问题。把 MaxKB 应用包装成标准 MCP Tool 之后任何支持 MCP 的客户端在对话开始时就能看到工具列表和描述大模型根据用户问题自己决定调哪个、传什么参数不需要你提前穷举组合。新增一个 MaxKB 应用只要多起一个 MCP 容器、在客户端配置里加一行不用动原有工作流。这篇要交付的链路是Docker 部署 MaxKB 应用 MCP 封装镜像 → 配置 API KEY / BASE_URL / APP_ID → 把 MCP 服务端点统一改到 TaoToken 的 Key/API 通道 → 用 MCP 客户端验证连通性。适合已经在跑 MaxKB V1、想把手头应用变成可被 AI 客户端直接调用的 MCP Tool 的运维和开发。下面每一步都给可复制的配置和验证命令照着做能跑通。2. TaoToken 前置准备与 MCP 服务端点改造思路在动手改配置之前先把 TaoToken 这条通道的角色说清楚。MaxKB 应用 MCP 封装镜像默认是直连你本地或云上的 MaxKB 地址也就是BASE_URL指向https://east-mk.fit2cloud.cn/api/application这类地址。但很多团队的实际场景是MaxKB 应用本身要调用大模型能力或者 MCP 客户端侧要统一走一个 Key 通道来管理模型调用。这时候把 MCP 服务端点改到 TaoToken就能让 MaxKB 应用和 MCP 客户端共用同一套 Key 和 API 入口省去每个应用单独配 Key 的麻烦。TaoToken 的定位是统一的模型 API 通道官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。你需要先在控制台创建一个 API Key这个 Key 后面会填到 MCP 容器的环境变量里也会填到 MCP 客户端的配置里。具体要准备三样东西第一是 TaoToken 的 API Key。进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 创建复制出来形如sk-xxxxxxxx的字符串。这个 Key 是后续所有请求的凭证。第二是 MaxKB 应用自己的 API KEY 和 APP_ID。在 MaxKB 后台进入目标应用找到API 访问或应用信息页面能看到application-30XXXXX格式的 API KEY以及53e12e8e-ac93-11ef-959e-0242xxxxxxxac180002格式的 APP_ID。这两个是 MaxKB 应用本身的身份标识MCP 封装镜像靠它们去调 MaxKB 的问答接口。第三是确认你的 MCP 客户端支持 Streamable HTTP 或 SSE。Claude Desktop、Cursor、Dify、LangChain 都支持但配置写法不一样。Claude Desktop 用claude_desktop_config.jsonCursor 用mcp.jsonDify 在工具配置里填 URL。改造思路是这样的MCP 封装镜像本身监听 8000 端口对外提供 MCP Tool 接口。它内部会拿API_KEY和APP_ID去调 MaxKB 的BASE_URL。如果你希望 MCP 客户端侧统一走 TaoToken那就在客户端配置里把 MCP 服务地址指向你部署的容器地址同时在客户端的大模型配置里把 Base URL 改成https://taotoken.net/apiKey 填 TaoToken 的 Key。这样客户端调模型走 TaoToken调 MCP Tool 走本地容器两条链路各司其职。如果你希望 MaxKB 应用内部调用大模型也走 TaoToken那就在 MaxKB 后台的模型设置里把 OpenAI 兼容接口的 Base URL 改成https://taotoken.net/apiKey 填 TaoToken 的 Key模型 ID 填你在 TaoToken 控制台看到的模型名。这一步不是必须的但统一通道之后 Key 管理会清爽很多。注意TaoToken 的 API 入口是https://taotoken.net/api不要加 UTM 参数到 API 请求里UTM 只用于官网跳转统计。填到配置文件里的 Base URL 就是干净的https://taotoken.net/api。3. 可复制的 Docker 与 MCP 配置片段这一节给完整的可复制配置。先拉镜像、加载、写 docker-compose.yml再写 MCP 客户端配置。第一步下载并加载镜像。镜像已经打包好直接docker load即可# 下载镜像 tar 包 wget -O maxkb-app-mcp.tar https://f2c-east-1258036468.cos.ap-shanghai.myqcloud.com/MaxKB%E5%BA%94%E7%94%A8%EF%BC%88%E5%8B%BF%E5%88%A0%EF%BC%89/maxkb-app-mcp.tar # 加载镜像到本地 Docker docker load -i maxkb-app-mcp.tar # 确认镜像存在 docker images | grep maxkb-app-mcp第二步写docker-compose.yml。这里把环境变量逐项说明你替换成自己的值version: 3.8 services: mcp-maxkb-server: image: maxkb-app-mcp:latest container_name: maxkb-mcp-app ports: - 8000:8000 # Host:Container 端口映射客户端连 8000 environment: API_KEY: application-30XXXXX # 替换为 MaxKB 应用的实际 API 密钥 BASE_URL: https://east-mk.fit2cloud.cn/api/application # 替换为你的 MaxKB 部署地址 APP_ID: 53e12e8e-ac93-11ef-959e-0242xxxxxxxac180002 # 替换为 MaxKB 应用的实际 API ID SERVER_NAME: 飞致云公司员工手册查询助手 # MaxKB 应用名称按实际改 TOOL_NAME: ai_chat # MCP 工具名称可自定义 TOOL_DESCRIPTION: 发送消息关于查询飞致云员工手册查询信息提供飞致云公司员工手册查询能力支持查询出差、发票、入职、人事等员工手册等相关内容 # 描述越详细MCP 调用准确率越高 restart: alwaysTOOL_DESCRIPTION这一项值得多花点心思。大模型是靠这段描述来判断用户这个问题该不该调这个工具的所以要把应用能回答的领域、典型问题类型都写进去。比如你有个财务报销应用描述里就写清楚支持查询报销标准、发票要求、差旅补贴、审批流程比只写财务助手命中率高得多。第三步启动容器并看日志docker-compose up -d docker logs -f maxkb-mcp-app日志里看到 MCP 服务启动、监听 8000 端口、工具注册成功的输出就说明容器侧 OK 了。第四步配置 MCP 客户端。以 Claude Desktop 为例编辑claude_desktop_config.json{ mcpServers: { maxkb-employee-handbook: { url: http://127.0.0.1:8000/mcp, transport: streamable-http } } }如果你用的是 Cursor在mcp.json里写{ mcpServers: { maxkb-employee-handbook: { url: http://127.0.0.1:8000/mcp, transport: streamable-http } } }如果你希望客户端的大模型调用也走 TaoToken在客户端的模型配置里填{ baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, modelId: 你在TaoToken控制台看到的模型ID }这三件套——Base URL、Key、Model ID——在 TaoToken 控制台都能找到。Base URL 固定是https://taotoken.net/apiKey 是你创建的sk-开头字符串Model ID 按你实际要用的模型填。填完之后客户端调模型走 TaoToken调 MCP Tool 走本地 8000 容器。4. 验证 MCP 服务连通性与成功结果配置写完得验证两件事MCP 服务本身能不能被客户端发现工具以及调用之后能不能拿到 MaxKB 应用的回答。先做容器侧的健康检查。用 curl 直接打 MCP 服务的端点看返回# 检查 MCP 服务是否在监听 curl -s http://127.0.0.1:8000/mcp # 如果返回 JSON-RPC 格式的响应或工具列表说明服务正常更完整的验证是发一个 MCP 的tools/list请求curl -s -X POST http://127.0.0.1:8000/mcp \ -H Content-Type: application/json \ -d { jsonrpc: 2.0, id: 1, method: tools/list, params: {} }正常返回里应该能看到你配置的TOOL_NAME比如ai_chat以及TOOL_DESCRIPTION里写的那段描述。如果返回空列表或者报错说明容器环境变量没配对回去检查API_KEY、APP_ID、BASE_URL三项。然后在 MCP 客户端里验证。以 Claude Desktop 为例重启客户端后在对话里问一个你 MaxKB 应用能回答的问题比如出差住宿标准是多少。如果配置正确你会看到 Claude 先调用ai_chat工具工具返回 MaxKB 应用的答案然后 Claude 基于这个答案组织回复。在 MaxKB 后台也能看到调用记录。进入应用的对话日志或API 调用记录能看到来自 MCP 容器的请求包含用户问题、返回内容、耗时。这一步能确认链路是通的客户端 → MCP 容器 → MaxKB 应用 → 返回。如果你在客户端侧也配了 TaoToken 的模型通道可以在 TaoToken 控制台的调用记录里看到模型请求。两条链路分开看MCP 调用记录在 MaxKB 后台模型调用记录在 TaoToken 控制台。实测下来最容易出问题的是BASE_URL的结尾。MaxKB 的 API 地址要精确到/api/application少一段或者多一个斜杠都会导致 404。另外APP_ID和API_KEY要对应同一个应用别把 A 应用的 Key 配到 B 应用的 ID 上。5. 本篇常见报错排查这一节列几个真实会撞上的报错和对应处理。报错一401 Unauthorized日志里出现invalid api key这是 MaxKB 应用侧的 API KEY 不对。检查docker-compose.yml里的API_KEY是不是完整的application-开头字符串有没有多余空格。MaxKB 后台重新生成一次 Key 再试。如果 Key 是对的还报 401确认这个 Key 对应的应用是不是被停用了。报错二local proxy failed或连接超时容器里访问BASE_URL失败。如果你 MaxKB 部署在宿主机上容器里的127.0.0.1指向的是容器自己不是宿主机。这时候BASE_URL要写成宿主机的局域网 IP比如http://192.168.1.100:8080/api/application。或者用 Docker 的host.docker.internalMac/Windows或--network hostLinux。报错三reading choices相关解析错误这个通常出现在客户端侧模型调用返回格式不对的时候。如果你把客户端的 Base URL 改成了 TaoToken确认填的是https://taotoken.net/apiKey 是sk-开头的 TaoToken KeyModel ID 是控制台里实际存在的模型名。三者有一个不对返回结构就可能不是标准的 OpenAI 格式客户端解析choices字段就报错。报错四OAuth 或鉴权跳转有些 MCP 客户端在连 HTTP 端点时会尝试 OAuth 流程。如果你用的是本地容器不需要 OAuth在客户端配置里明确写transport: streamable-http不要让它走自动发现。如果客户端坚持要 OAuth检查是不是 URL 写成了需要鉴权的网关地址本地容器直接写http://127.0.0.1:8000/mcp即可。报错五工具列表为空容器起来了但tools/list返回空。检查TOOL_NAME和TOOL_DESCRIPTION有没有填。有些版本的镜像要求这两个变量非空才会注册工具。另外确认APP_ID格式正确带连字符的 UUID 格式别漏段。报错六Docker 端口冲突8000:8000映射失败提示端口被占用。改宿主机端口比如18000:8000然后客户端配置里的 URL 相应改成http://127.0.0.1:18000/mcp。容器内部还是监听 8000不用改。排查顺序建议先docker logs -f maxkb-mcp-app看容器日志再 curl 打tools/list最后在客户端里试。一层一层往上查比一上来就怀疑客户端配置高效。6. 把 MCP 通道固定下来的几个操作跑通之后建议把几个东西固定下来避免后面重复踩坑。第一把docker-compose.yml里的环境变量抽到.env文件API_KEY、BASE_URL、APP_ID都放进去compose 文件里用${API_KEY}引用。这样换应用的时候只改.env不用动 compose 文件。多个 MaxKB 应用就起多个 service每个 service 一套环境变量端口错开。第二MCP 客户端的配置里把 MCP 服务地址和模型通道地址分开管理。MCP 服务地址指向你的容器模型通道地址指向https://taotoken.net/api。如果你团队里多人共用把 TaoToken 的 Key 统一在控制台管理谁需要谁去申请子 Key别把主 Key 散落在各个配置文件里。第三TOOL_DESCRIPTION当成产品文案来写。每新增一个 MaxKB 应用花五分钟把描述写清楚这个应用回答什么领域的问题、典型问法有哪些、不覆盖什么。描述写得好大模型调用准确率直接上去比后面调提示词省事。第四验证动作固化成脚本。把curl -X POST .../tools/list那段写成一个check-mcp.sh每次改完配置跑一遍确认工具还在、描述还对。容器重启后也跑一遍避免环境变量丢失导致工具没注册。如果你后面要接更多 MCP 客户端比如 Dify 或者 LangChain配置逻辑是一样的URL 填容器地址transport 填streamable-http。Dify 在工具→自定义工具里填LangChain 用MultiServerMCPClient配。模型通道那边统一走 TaoToken 的https://taotoken.net/apiKey 和 Model ID 按控制台里的填。需要长期跑编码类 Agent 或者多应用编排的可以看下 Coding Plan 的通道配置https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 。API Key 在控制台创建https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 里面有各客户端的配置示例。想先验证模型通不通用模型对话页面发一条测试消息https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 。Claude Code 相关的接入配置在 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_maxkb_v1utm_campaignrewrite 。最后说个实际经验MaxKB 应用 MCP 化之后最大的收益不是技术上的而是业务侧新增智能体不用再改工作流。以前加一个IT 报修应用得在编排里加判断分支、测试、上线现在起一个容器、客户端配置加一段、重启五分钟搞定。这个链路跑顺之后MaxKB 就从一个问答系统变成了一堆可被 AI 动态调用的能力单元。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →