MCP Server 服务注册至 Nacos:TaoToken 统一 Key 通道配置与验证
发布时间:2026/9/28 11:20:37 锦皓数字建站

1. 为什么要把 MCP Server 注册到 NacosMCP Server 是模型上下文协议的服务端实现它把本地工具、数据源、业务接口包装成大模型能调用的能力。问题在于当你手上有 Cline、Claude Code、CC Switch 这类多个 AI 工具时每个工具都要单独配一份 MCP 地址和一份 Key改一次配置要改好几处时间一长自己都记不清哪个工具连的是哪个服务。把 MCP Server 注册到 Nacos 之后服务发现这件事就交给注册中心了。Nacos 负责维护服务列表调用方按服务名去找MCP Server 的地址变了也不用挨个改客户端。再叠加 TaoToken 的统一 Key 通道本地多个 AI 工具共用一套 Key 和一套 API 入口配置量直接砍半。这套链路适合谁本地跑着两三个 AI 编码工具、MCP Server 数量超过一个、希望服务能被动态发现而不是硬编码地址的开发者。下面从依赖引入、Nacos 启动、配置骨架、核心代码到注册验证一步步走完。2. TaoToken 统一 Key 通道的前置准备TaoToken 在这里承担的角色是统一入口MCP Server 对外调用模型能力时不再各自持有不同的 Key而是走同一个 API 通道。这样做的直接好处是 Key 轮换、额度查看、调用排查都集中在一个地方。你需要先拿到一把可用的 Key。打开控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite创建完成后在 API Keys 页面复制出来注意它只完整显示一次https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接口基地址统一用https://taotoken.net/api这个地址不带任何查询参数直接作为 OpenAI 兼容风格的 base_url 使用。如果你要确认某个模型名是否可用可以先去模型对话页面试一条https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite接入细节和参数说明在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意Key 不要写进会提交到 Git 的配置文件里。本地调试可以用环境变量或者单独放一个不纳入版本管理的application-local.yml。3. 可复制的依赖与 Nacos 配置骨架3.1 Maven 依赖与镜像源版本对齐很关键spring-ai 用 1.0.0spring-ai-alibaba 用 1.0.0.3-SNAPSHOTJDK 17。先在 properties 里锁定版本properties spring-ai.version1.0.0/spring-ai.version spring-ai-alibaba.version1.0.0.3-SNAPSHOT/spring-ai-alibaba.version /properties核心依赖是 Nacos MCP Server starter 加 WebFlux 支持dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-starter-nacos2-mcp-server/artifactId version${spring-ai-alibaba.version}/version exclusions exclusion groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-core/artifactId /exclusion /exclusions /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-mcp-server-webflux/artifactId version${spring-ai.version}/version /dependency因为用到了 SNAPSHOT 版本仓库地址要补全否则拉不到包repositories repository idspring-milestones/id urlhttps://repo.spring.io/milestone/url snapshotsenabledfalse/enabled/snapshots /repository repository idspring-snapshots/id urlhttps://repo.spring.io/snapshot/url releasesenabledfalse/enabled/releases /repository repository idsonatype/id urlhttps://oss.sonatype.org/content/groups/public//url releasesenabledtrue/enabled/releases snapshotsenabledtrue/enabled/snapshots /repository repository idaliyunmaven/id urlhttps://maven.aliyun.com/repository/public/url /repository /repositories3.2 启动 Nacos 并建命名空间Nacos 用 2.x 版本和依赖里的 nacos2 保持一致。Windows 下进 bin 目录执行startup.cmd -m standalone看到启动日志后浏览器访问http://localhost:8848/nacos默认账号密码都是nacos。登录后新建一个命名空间比如叫mcp-dev生成的那串 ID 要填到配置里别填成命名空间名字。3.3 application.yml 配置骨架spring: application: name: mcp-weather-server-test ai: mcp: server: name: weather-mcp-server version: 1.0.0 type: async sse-message-endpoint: /mcp/message capabilities: tool: true resource: true prompt: true completion: true alibaba: mcp: nacos: namespace: 你的命名空间ID enabled: true server-addr: localhost:8848 username: nacos password: nacos registry: enabled: true service-group: weather-serverservice-group是服务分组后面在 Nacos 服务列表里按这个分组找。type: async配合sse-message-endpoint走 SSE 通道客户端连接时用这个路径。4. 核心代码与多工具配置片段4.1 工具类与启动类工具类用Tool注解暴露能力描述写清楚模型靠描述决定调不调Service Slf4j public class WeatherTool { Tool(description 获取当前天气) public String getWeather() { log.info(getWeather() called); return 小雨,26度; } }启动类里把工具注册成ToolCallbackProviderSpringBootApplication public class WeatherServerApplication { public static void main(String[] args) { SpringApplication.run(WeatherServerApplication.class, args); } Bean public ToolCallbackProvider weatherTools(WeatherTool weatherTool) { return MethodToolCallbackProvider.builder() .toolObjects(weatherTool) .build(); } }4.2 CC Switch 配置片段CC Switch 里把 MCP Server 指向本地 SSE 端点同时模型通道走 TaoToken{ mcpServers: { weather-mcp: { url: http://localhost:8080/mcp/message, type: sse } }, env: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: 你的TaoToken Key } }4.3 Cline 配置片段Cline 的 settings.json 里同样把 base_url 和 Key 指向 TaoTokenMCP 部分填 SSE 地址{ cline.apiProvider: openai, cline.openAiBaseUrl: https://taotoken.net/api, cline.openAiApiKey: 你的TaoToken Key, cline.mcpServers: { weather-mcp: { url: http://localhost:8080/mcp/message, transport: sse } } }这样两个工具共用同一把 KeyMCP Server 也只需要注册一次。如果你后面要跑长期编码任务或者 Agent 流程可以考虑 Coding Plan 来统一管理调用额度https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite5. 启动验证与注册结果确认启动 Spring Boot 应用控制台会打印工具加载日志。确认weatherTools被注册后去 Nacos 控制台看服务列表。进入「服务管理」→「服务列表」选择你建的命名空间服务分组选weather-server应该能看到weather-mcp-server这条记录实例数至少为 1健康状态为健康。再验证一次调用链路。用 curl 打 SSE 端点确认服务活着curl -N http://localhost:8080/mcp/message如果返回 SSE 事件流而不是 404说明 MCP Server 的传输层正常。接着在 Cline 里发一句「帮我查一下天气」观察它是否触发getWeather工具。触发成功的话应用日志里会出现getWeather() called。Nacos 侧还可以点进服务详情看实例的 IP 和端口是否正确。如果实例显示但健康检查失败多半是端口没对上或者防火墙拦了本地回环。6. 常见报错排查拉不到 1.0.0.3-SNAPSHOT 依赖检查 repositories 是否四个都配了尤其是 sonatype 的 snapshots 要 enabled。本地 Maven settings.xml 如果配了 mirror 覆盖所有仓库需要给 sonatype 开例外。Nacos 注册成功但服务列表为空命名空间 ID 填错是最常见原因填成名字不会报错但会注册到错误空间。另外确认registry.enabled是 trueservice-group和你在控制台筛选的分组一致。SSE 端点 404sse-message-endpoint的路径要和客户端配置的 url 完全一致注意有没有多余的斜杠。WebFlux 和 WebMvc 不能同时引入否则端点注册会冲突。工具没被模型调用Tool的 description 太模糊模型判断不出该不该用。把描述写具体比如「获取指定城市的当前天气」比「获取天气」更容易命中。Key 报 401确认 base_url 是https://taotoken.net/api而不是带其他路径Key 有没有多余空格。可以在模型对话页面先用同一把 Key 发一条消息排除是 Key 本身的问题。整条链路跑通后MCP Server 在 Nacos 里可被发现多个 AI 工具共用一套 TaoToken Key新增工具时只需要在客户端填 SSE 地址不用再动服务端配置。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。