ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

使用 Nacos 将存量 HTTP 接口转换为 MCP 服务:TaoToken 统一 Key 通道下的 SSE 接入实践

使用 Nacos 将存量 HTTP 接口转换为 MCP 服务:TaoToken 统一 Key 通道下的 SSE 接入实践 1. 存量 HTTP 接口接入 MCP 的真实痛点手里有一套跑了很久的 HTTP 接口可能是订单查询、用户信息、库存同步这类内部服务接口稳定、逻辑清晰但每次想让大模型或 AI Agent 调用它们就得重新写一遍适配层。MCP 协议出来之后理论上只要把接口包装成 MCP Tool任何支持 MCP 的客户端都能直接调用但真到落地这一步问题就来了接口散落在不同服务里没有统一的服务发现协议转换要自己写代码鉴权、Key 管理、调用通道各搞一套维护成本比接口本身还高。我试过的做法是用 Nacos 做控制面把存量服务声明成 MCP Server用 Higress 做数据面完成 HTTP 到 MCP 的协议转换最后所有调用统一走 TaoToken 的 Key/API 通道做鉴权和转发。这样存量接口几乎零代码改造就能被 MCP 客户端消费而且 Key 只维护一份不用在每个客户端里重复配置。这套方案适合谁如果你已经有注册在 Nacos 里的 HTTP 服务或者愿意把服务注册进去同时希望用 MCP 协议让 AI 应用调用这些接口那这篇内容可以直接跟着做。核心检索词就三个Nacos 服务注册、Higress 协议转换、MCP SSE 接入。下面从环境准备开始一步步给出可复制的配置片段和验证动作。需要提前说明的是Nacos 负责的是“声明有哪些 MCP 服务和工具”Higress 负责“把 HTTP 请求翻译成 MCP 协议并通过 SSE 暴露出去”TaoToken 负责“统一 Key 通道和调用入口”。三者分工明确缺一不可。很多人卡在只配了 Nacos 没配 Higress结果 SSE 端点根本连不上这个后面排障章节会细说。2. TaoToken 统一 Key 通道的前置准备在动手配 Nacos 和 Higress 之前先把 TaoToken 的 Key 通道准备好因为后面 MCP 客户端调用时会统一走这个通道提前配好能少走弯路。TaoToken 在这里的角色是统一鉴权和 API 入口你不需要在每个 MCP 客户端里单独配不同的 Key只需要在 TaoToken 侧生成一个 Key然后在客户端配置里指向 TaoToken 的 API 地址即可。第一步打开 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并登录控制台。进入控制台后找到 API Keys 管理页面路径是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 点击创建新的 API Key。创建时建议给 Key 起一个能识别用途的名字比如nacos-mcp-sse方便后面排查问题时定位。创建完成后Key 只会完整显示一次复制下来保存到安全的地方。这个 Key 就是后面 MCP 客户端配置里的凭证。如果你用的是 Claude Code 这类工具Key 的配置方式会略有不同可以参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里的说明。第二步确认 API 基础地址。TaoToken 的 API 入口是 https://taotoken.net/api 注意这个地址不带 UTM 参数配置时直接用这个。后面在 MCP 客户端或者 Higress 的转发配置里Base URL 就填这个。第三步如果你打算长期跑编码类或 Agent 类任务可以了解一下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它适合需要持续调用模型的场景。如果只是验证模型连通性用模型对话页面 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 先测一下也行。这里要强调一点TaoToken 的 Key 通道是统一入口Nacos 和 Higress 负责的是服务发现和协议转换两者不冲突。你完全可以在 Higress 里配置转发规则把 MCP 请求最终指向 TaoToken 的 API 地址这样鉴权和调用就统一了。前置准备做完后下面进入 Nacos 服务注册的具体配置。3. Nacos 服务注册与 Higress SSE 端点可复制配置这一节是整篇的核心给出可以直接复制粘贴的配置片段。先配 Nacos再配 Higress最后把两者串起来。3.1 Nacos 侧声明 MCP Server 和 Tool登录 Nacos 控制台进入 MCP 管理 MCP 列表点击创建 MCP Server。关键配置如下配置项填写内容MCP 服务名order-query-mcp按业务域-功能-mcp 命名协议类型sse后端服务选择“使用已有服务”服务引用选中你已注册的存量服务创建完成后进入该服务的编辑页面修改服务版本号然后在 Tools 区域点击添加。Tool 的配置需要写清楚名称、描述和协议转化配置。描述要具体比如“根据订单 ID 查询订单详情返回状态、金额、创建时间”不要只写“查订单”。协议转化配置里需要指定实际映射的 HTTP API 信息包括 URL 和参数映射关系。这部分语法参考 MCP 模版配置手册核心是把 HTTP 的 query 参数或 body 参数映射到 MCP Tool 的入参。配置完成后保存Nacos 侧的服务声明就完成了。3.2 Higress 侧开启 MCP 协议转换Higress 的配置分两块一块是全局 ConfigMap一块是服务来源。先改 ConfigMap在全局配置的 data 段里加上data: higress.mcpServer.enable: true higress.mcpServer.redis.addr: redis:6379Redis 地址用于会话保持SSE 是长连接没有 Redis 做会话存储会出现连接断开后状态丢失的问题。如果你用的是单机 Redis地址填127.0.0.1:6379即可集群模式按实际地址填。然后在 Higress 控制台添加 Nacos 3.x 作为服务来源。配置项包括 Nacos 地址、命名空间、认证信息。添加完成后Higress 会自动发现 Nacos 中注册的 MCP 服务并代理。3.3 串起来SSE 端点地址Nacos 声明 Higress 转换都配好后SSE 端点地址的格式是http://{higress_host}:{higress_port}/mcp/{你的MCP服务名}/sse比如你的 Higress 跑在192.168.1.100:8080MCP 服务名是order-query-mcp那端点就是http://192.168.1.100:8080/mcp/order-query-mcp/sse这个地址就是后面 MCP 客户端要连接的地址。如果你希望调用统一走 TaoToken 通道可以在 Higress 的路由配置里加一条转发规则把请求指向https://taotoken.net/api并在请求头里带上 TaoToken 的 Key。这样客户端只需要配 SSE 端点鉴权和模型调用都由 TaoToken 统一处理。配置片段给一个 Higress 路由的示例apiVersion: networking.higress.io/v1 kind: McpBridge metadata: name: taotoken-bridge namespace: higress-system spec: registries: - name: nacos-mcp type: nacos3 domain: nacos-server:8848 nacosGroups: - DEFAULT_GROUP这段配置的作用是让 Higress 从 Nacos 拉取 MCP 服务列表。配完后重启 Higress 或等待自动同步然后在 Nacos 控制台确认 MCP Server 状态是“已上线”。4. 验证请求与成功结果核对配置写完不代表能用必须实际发一次请求验证。验证分两步先验 SSE 连接是否通再验 Tool 调用是否返回正确结果。4.1 验证 SSE 连接最直接的方式是用 curl 看 SSE 端点是否返回事件流curl -N http://192.168.1.100:8080/mcp/order-query-mcp/sse如果配置正确你会看到类似这样的输出连接保持不关闭event: endpoint data: /mcp/order-query-mcp/message?sessionIdxxxx event: message data: {jsonrpc:2.0,method:notifications/initialized}如果 curl 直接返回 404 或连接被拒绝说明 Higress 的 MCP 转换没生效回到第 5 节排查。4.2 用 MCP 客户端调用 Tool以 Claude Desktop 为例配置文件里加上{ mcpServers: { nacos-order: { url: http://192.168.1.100:8080/mcp/order-query-mcp/sse } } }如果你希望走 TaoToken 统一通道把 url 换成 TaoToken 的接入地址并在 headers 里带上 Key{ mcpServers: { nacos-order: { url: https://taotoken.net/api/mcp/order-query-mcp/sse, headers: { Authorization: Bearer 你的TaoTokenKey } } } }保存后重启 Claude Desktop在对话里让它调用order-query-mcp的查询工具传入一个真实的订单 ID。成功的话会返回订单详情 JSON字段和你的 HTTP 接口返回一致。4.3 用 JavaScript 直接连 SSE 验证如果你不想装客户端用一段 Node 脚本也能验const eventSource new EventSource( http://192.168.1.100:8080/mcp/order-query-mcp/sse ); eventSource.onmessage (event) { const data JSON.parse(event.data); console.log(收到消息:, data); }; eventSource.onerror (err) { console.error(SSE 错误:, err); };跑起来后如果控制台持续打印消息说明 SSE 通道正常。这一步能过基本就成功了。5. 本篇常见错误排查配置过程中最容易踩的坑集中在几个报错上逐个说。401 Unauthorized这个通常出现在走 TaoToken 通道时 Key 没带对。检查请求头里的Authorization字段格式是不是Bearer 你的KeyKey 有没有多余空格。如果 Key 是在控制台刚创建的确认没有复制错。另外检查 TaoToken 的 API 地址是不是https://taotoken.net/api不要带多余路径。local proxy failed这个报错一般出现在 Higress 转发环节。原因可能是 Higress 的 ConfigMap 里higress.mcpServer.enable没设成true或者 Redis 地址配错导致会话建立失败。先确认 ConfigMap 改完有没有重启 Higress再确认 Redis 能连通。如果 Redis 有密码地址格式要写成redis:6379并在额外配置里加密码。reading choices 相关报错这个多出现在 MCP 客户端解析返回结果时。常见原因是 Nacos 里 Tool 的参数映射配错了HTTP 接口返回的字段和 MCP 声明的 schema 对不上。回到 Nacos 控制台检查 Tool 的协议转化配置确认参数名称、类型、必填项和实际 HTTP 接口一致。特别是数组类型和嵌套对象容易映射错。OAuth 相关报错如果你在 Higress 或 Nacos 侧开了 OAuth 认证但 MCP 客户端没带 token会报这个。检查服务来源配置里的认证信息确认客户端请求头里带了正确的凭证。如果不需要 OAuth直接关掉相关配置用 TaoToken 的 Key 通道做鉴权就够了。SSE 连接建立后立刻断开大概率是 Redis 没配或配错会话无法保持。确认higress.mcpServer.redis.addr指向的 Redis 可访问并且没有防火墙拦截。Tool 调用返回空先确认后端 HTTP 服务本身正常用 curl 直接打后端接口看有没有返回。如果后端正常但 MCP 调用为空检查 Higress 日志里协议转换的请求体看参数有没有正确透传。排查时建议按“Nacos 状态 → Higress 配置 → Redis 连通 → 客户端配置”的顺序逐层确认不要跳步。每层都有对应的日志可看Nacos 看 MCP 服务状态Higress 看访问日志Redis 看连接数。6. 统一 Key 通道下的调用入口整套流程跑通后你的存量 HTTP 接口就已经变成 MCP 服务了。Nacos 负责声明和管理Higress 负责协议转换和 SSE 暴露TaoToken 负责统一 Key 通道和调用入口。客户端只需要配一个 SSE 端点和一个 Key就能调用所有注册在 Nacos 里的工具。如果你在验证模型连通性可以用模型对话页面 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 先测一下 Key 是否有效。如果打算长期跑编码或 Agent 任务Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 更适合持续调用场景。Key 的管理和创建在 API Keys 页面 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入细节看文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后给一个实用技巧Nacos 里 Tool 的描述信息会直接影响模型选择工具的准确率描述写得越具体模型越不容易选错。比如“根据订单 ID 查询订单详情”比“查订单”好得多。另外服务命名用业务域-功能-mcp的格式后面工具多了也不会乱。配置改完记得在 Nacos 控制台确认版本号更新Higress 同步有延迟时手动触发一次刷新。
返回列表