资讯动态

存量 REST API 改造为 MCP Server:用 TaoToken 统一 Key 打通 Higress 网关配置

发布时间:2026/9/26 15:26:58 来源:尧图企业网站定制
1. 存量 REST API 为什么值得改造成 MCP Server手里有一套跑了两三年的 REST API接口稳定、鉴权清晰、日志齐全但每次想让 AI 工具去调用它就得写一堆胶水代码要么在 Agent 里硬编码 HTTP 请求要么给每个接口单独写一个 function calling 描述。接口一多维护成本直接爆炸。MCP Server 解决的正是这个问题——它把 REST API 包装成 AI 工具能直接识别的「工具声明」Agent 只需要知道工具名和参数剩下的路由、鉴权、请求转发全部交给网关。Higress 的 MCP Server 托管能力让这件事变得很轻你不需要改一行后端代码只要在网关侧声明「哪个路径对应哪个工具、请求怎么发、响应怎么裁剪」存量接口就变成了 MCP 工具。而 TaoToken 在这里的角色是统一 Key 管理——不管你有多少个 MCP Server、多少个模型调用都可以用同一个 Key 走同一套接入配置省掉每个工具单独配鉴权的麻烦。这篇面向的是已经有一套 REST API、想低成本暴露给 AI 工具调用的后端和平台工程师。我会给出可复制的 Higress 路由与 MCP 工具声明配置骨架、TaoToken 统一 Key 的 settings.json 片段以及用 curl 验证 MCP 工具能被调用的具体动作。目标是一次跑通「存量 API → MCP 工具 → AI Agent 调用」的完整链路。2. TaoToken 前置统一 Key 与接入准备在动手改 Higress 配置之前先把 TaoToken 的接入信息准备好。TaoToken 提供的是统一的模型接入层官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。你需要先在控制台创建一个 API Key这个 Key 后面会同时用于模型对话和 Coding Plan 场景。创建 Key 的入口在控制台的 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。创建时建议按用途命名比如higress-mcp-demo方便后续排查是哪个环境在用。Key 只在创建时显示一次复制后存到本地环境变量里不要直接写进配置文件提交到 Git。如果你后续要用 Claude Code 这类编码工具去调 MCP 工具可以走 Coding Plan 入口https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它和 API Key 是同一套账号体系区别在于计费和使用场景。模型对话的调试入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。把 Key 写进环境变量后面所有配置都引用这个变量export TAOTOKEN_API_KEYsk-你的实际Key echo $TAOTOKEN_API_KEY | head -c 8输出前 8 位能对上就说明环境变量生效了。这一步看起来简单但后面 Higress 的 MCP 插件和 Agent 的 settings.json 都会引用它先确认好能省掉很多「Key 无效」的排查时间。3. Higress 侧配置把 REST API 声明成 MCP 工具3.1 部署 Higress 与 RedisHigress 用 all-in-one 镜像部署最省事Redis 是 MCP Server 的 SSE 会话保持依赖两个都要起。先建工作目录注意后续所有操作都在这个目录下进行不要切走mkdir higress cd higress docker pull higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest docker run -d --rm --name higress-ai \ -v ${PWD}:/data \ -e O11Yon \ -p 8001:8001 -p 8081:8080 -p 8443:8443 \ higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latestRedis 单独起一个容器端口映射到本机 6379docker run -d --rm --name higress-redis \ -p 6379:6379 \ higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/redis-stack-server:7.4.0-v3启动后访问http://localhost:8001进控制台首次访问会让你设置账号密码。设置完登录进去在系统设置里开启 MCP Server 功能。关键配置项是mcpServer.enable设为truesse_path_suffix保持/sseRedis 地址填本机内网 IP不能用 127.0.0.1否则容器内连不上。3.2 配置 MCP Server 会话保持路由MCP 的 SSE 连接需要网关识别哪些路径属于 MCP 会话这靠match_list来声明。假设你的存量 API 路径前缀是/ota就在 match_list 里加一条mcpServer: enable: true sse_path_suffix: /sse redis: address: 192.168.18.158:6379 username: password: db: 0 match_list: - match_rule_domain: * match_rule_path: /ota match_rule_type: prefix servers: []这里的192.168.18.158换成你本机的内网 IP。改完提交Higress 会自动重载配置。这一步的作用是告诉网关所有/ota开头的请求都走 MCP 会话保持逻辑SSE 连接才能正常建立。3.3 声明 MCP 工具requestTemplate 与 responseTemplate这是整个改造的核心。在 Higress 控制台创建一条路由指向你的存量 REST API 服务来源然后在路由的策略里找到「MCP 服务器」插件开启并填入工具声明。下面是一个可复制的骨架声明了两个工具get-hello对应 GET 接口get-list对应 POST 接口server: name: ota-python-server tools: - description: say python hello name: get-hello requestTemplate: method: GET url: http://192.168.18.11:8000/ota/hello responseTemplate: body: - **Msg**: {{.msg}} - description: get ota list name: get-list requestTemplate: method: POST url: http://192.168.18.11:8000/ota/batch/list responseTemplate: body: |- {{- with (index .otas 0) }} - **Name**: {{.name.first}} {{.name.last}} - **Email**: {{.email}} - **Location**: {{.location.city}}, {{.location.country}} - **Phone**: {{.phone}} {{- end }}几个容易踩的点requestTemplate.url填的是后端服务的真实地址不是网关地址responseTemplate.body用的是 Go template 语法{{.msg}}对应响应 JSON 里的字段{{- with (index .otas 0) }}是取数组第一个元素如果你的接口返回的是对象就直接用{{.field}}。保存后插件状态变绿就说明生效了。4. 验证请求用 curl 确认 MCP 工具可被调用配置完别急着接 Agent先用 curl 确认 MCP Server 的 SSE 端点能通。MCP 的 SSE 连接地址是「网关地址 路由前缀 sse 后缀」假设网关映射到 8081 端口路由前缀是/ota那么 SSE 地址就是http://192.168.18.158:8081/ota/sse。先测 SSE 连接是否建立curl -N -H Accept: text/event-stream \ http://192.168.18.158:8081/ota/sse正常的话会看到event: endpoint和data: /ota/message?sessionIdxxx这样的输出说明 SSE 通道通了sessionId 是后续发消息要用的。如果卡住没输出检查 match_list 里的路径前缀是否和路由一致。拿到 sessionId 后用 POST 发一个 MCP 的tools/list请求确认工具声明被正确加载curl -X POST http://192.168.18.158:8081/ota/message?sessionId你的sessionId \ -H Content-Type: application/json \ -d {jsonrpc:2.0,id:1,method:tools/list,params:{}}返回里应该能看到get-hello和get-list两个工具的 name、description 和 inputSchema。再发一个tools/call实际调用get-hellocurl -X POST http://192.168.18.158:8081/ota/message?sessionId你的sessionId \ -H Content-Type: application/json \ -d {jsonrpc:2.0,id:2,method:tools/call,params:{name:get-hello,arguments:{}}}返回的result.content里应该有你 responseTemplate 渲染出来的- **Msg**: ...。到这一步存量 REST API 到 MCP 工具的链路就算跑通了。5. 接入 Agentsettings.json 与 TaoToken 统一 KeyMCP 工具能被 curl 调用后接 Agent 就很简单了。以 Cline 为例在 VS Code 的 settings.json 里加 MCP Server 配置同时把 TaoToken 的 Key 配进去{ mcpServers: { ota_higress_mcp: { type: sse, url: http://192.168.18.158:8081/ota/sse } }, taotoken: { apiKey: ${TAOTOKEN_API_KEY}, baseUrl: https://taotoken.net/api } }${TAOTOKEN_API_KEY}引用的是前面设置的环境变量这样 Key 不会硬编码进配置文件。配好后重启 Cline在对话里问「帮我调一下 ota 的 hello 接口」Agent 会把 MCP 工具列表喂给模型模型分析后返回要调用的工具名和参数然后通过 SSE 调用 MCP 工具拿到结果再交给模型组织成自然语言输出。如果你用的是 Claude Code接入配置在 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_codeutm_campaignrewrite 思路一样只是配置文件位置不同。统一 Key 的好处在这里体现得很明显MCP 工具调用和模型对话走同一个 Key不用为每个环节单独配鉴权。6. 本篇常见错排查SSE 连接建立不了curl 卡住无输出。先确认 match_list 里的match_rule_path和路由前缀完全一致/ota和/ota/在 prefix 匹配下行为不同。再检查 Redis 地址是不是填了 127.0.0.1容器内连不上宿主机的 127.0.0.1必须用内网 IP。tools/list 返回空数组。说明 MCP 插件配置没生效。检查插件是否切到绿色开启状态YAML 视图里server.tools的缩进是否正确。Higress 的 YAML 对缩进敏感tools下面的-要和tools对齐。tools/call 返回 404 或 502。这是 requestTemplate 里的 url 指向的后端服务不通。先在 Higress 容器里 curl 一下那个地址确认网络可达。如果后端服务在宿主机上容器访问宿主机要用内网 IP 而不是 localhost。responseTemplate 渲染出来是空的。大概率是字段路径写错了。先用 curl 直接调后端接口看原始返回的 JSON 结构再对照着写 template。{{.otas}}对应的是顶层otas字段如果实际是data.otas就要写成{{.data.otas}}。Agent 里工具调用报鉴权失败。检查 settings.json 里 TaoToken 的apiKey是否正确引用了环境变量以及baseUrl是不是https://taotoken.net/api。如果 Key 是在控制台刚创建的确认没有多余空格。排查顺序建议从 SSE 连接开始一层层往上SSE 通了再看 tools/listlist 有工具了再测 tools/callcall 通了再接 Agent。这样出问题能快速定位是哪一层。接入相关的配置细节可以参考接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 模型调试用模型对话入口https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 长期跑编码和 Agent 场景建议走 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑