起因:一个每周都会发生的场景

维护 Spring Cloud 微服务的同学应该都熟悉这个流程:

测试:这个功能 test 环境不对,dev 是好的。
我:(打开 Nacos 控制台 → 登录 dev → 找到配置 → 复制值 → 切到 test 控制台 → 再登录 → 再找 → 肉眼对比……)

配置分散在 dev / test / pre / pro 四个 Nacos 集群、十几个 dataId 里,"两个环境这个配置一致吗"这种问题,每次都要点十几次鼠标。

今年开始用 Cursor 之后我想:这种活就该 AI 干。于是给 Nacos 写了个 MCP server。用了一段时间后把它去掉公司业务硬编码,开源了:

https://github.com/kestiny18/spring-nacos-mcp

现在的效果是,直接在 Cursor 里问:

“GsbpXmglServiceImpl.java 第 34-37 行的两个 SSO 配置,dev 和 test 一致吗?”

Claude 自己调工具搜索配置、跨环境取值,最后给我一张对比表和结论。

【截图:Cursor 对话 + 工具调用过程 + 对比表】

它和官方 nacos-mcp-server 有什么区别?

阿里官方有 nacos-mcp-server,连一个集群,需要手动配 host/port/token,适合运维视角管理集群。

我做的是另一个方向:项目视角

官方 nacos-mcp-server spring-nacos-mcp
配置方式 每个集群手动配 host/port/token 零配置:直接解析你的项目仓库
多环境 一个实例连一个集群 所有 profile 一次接入,每个工具带 env 参数
跨环境 diff 做不到 内置 nacos_diff_config,key 级结构化对比
写操作 规划中 永远没有(只读设计)

核心思路一句话:你的项目仓库里本来就写着所有环境的 Nacos 连接信息application-dev.ymlbootstrap-test.yml……),为什么还要再配一遍?

server 启动时扫描 */src/main/resources/ 下所有 application-* / bootstrap-* 文件(yml/yaml/properties 都支持,包括多文档 YAML 和 ${...} 占位符),自动发现全部环境。在我自己 6 个模块的真实仓库上,一行配置没写,发现了 6 个环境:

$ python tools/nacos_mcp.py --check
  OK   env 'dev':    addr=10.x.x.x:8848  namespace=xxx-dev   group=XXX_GROUP
  OK   env 'test':   addr=10.x.x.x:8848  namespace=xxx-test  group=XXX_GROUP
  FAIL env 'pre':    addr=nacos-0.nacos-hs.xxx.svc.cluster.local:8848 ...
  ...
check: 6 environments discovered, 4 reachable

(pre/pro 是 K8s 集群内部地址,本机连不上是正常的)

几个设计决策

1. 只读,且是结构性只读。 代码里只有 GET 和登录两类请求,不存在写 Nacos 的代码路径。给 AI 的工具,权限宁可窄。

2. 单文件、零依赖。 整个 server 是一个纯标准库的 Python 文件(连 YAML 解析器都是手写的子集实现)。内网开发机连不上 PyPI?把文件拷进去就能跑。

3. 跨环境 diff 是一等公民。 nacos_diff_config(env_a, env_b, data_id) 服务端直接返回结构化结果:哪些 key 只在 A 有、哪些只在 B 有、哪些值不同。这是单集群架构做不到的事,也是这个工具存在的理由。

4. 为 AI 安装而设计。 仓库带了 llms-install.md——写给 AI agent 看的安装手册。你只需要对 Cursor / Claude Code 说一句:

帮我安装 https://github.com/kestiny18/spring-nacos-mcp 这个 MCP server 并验证可用

agent 会自己下载、写配置、跑 --check 验证(退出码区分"全部可达 / 没发现环境 / 发现了但网络不通",AI 能准确判断装没装好)。我实测 Cursor 全程无人工干预完成安装。

【截图:AI 自动安装过程】

5. 敏感信息考虑过了。 配置内容会进 LLM 上下文,所以提供可选脱敏(SPRING_NACOS_MCP_MASK=1,key 含 password/secret/token 的值替换成 ***),README 里也明确建议用只读 Nacos 账号。

安装

# 方式一:拷一个文件进仓库
curl -sfL -o tools/nacos_mcp.py https://raw.githubusercontent.com/kestiny18/spring-nacos-mcp/main/src/spring_nacos_mcp/server.py
// .cursor/mcp.json
{
  "mcpServers": {
    "spring-nacos-mcp": { "command": "python", "args": ["tools/nacos_mcp.py"] }
  }
}

或者直接让 AI 装(见上)。支持 Cursor / Claude Code / Claude Desktop / Codex / Trae。

最后

  • 仓库:https://github.com/kestiny18/spring-nacos-mcp (Apache-2.0)
  • 8 个只读工具:环境列表、读配置、应用级配置(含 shared-configs)、列表、全文搜索、跨环境 diff、服务列表、实例列表
  • Nacos 1.x/2.x 实测可用,3.x 走 v1 兼容 + v3 登录回退

如果你的团队也在用 Spring Cloud + Nacos,欢迎试试,issue 和 PR 都欢迎。特别想听到的反馈:你的仓库布局有没有发现不了的环境(--check 退出码 1 的情况),这是我目前最想覆盖的边界。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐