nacos-mcp
Nacos MCP Server — 让 AI 助手能够查询和管理 Nacos 配置中心与服务注册中心。
支持 Nacos 1.x / 2.x。配置管理走 v1 API,服务发现与命名空间走 v2 API。
功能概览
| 能力 | 工具数 | 说明 |
|---|---|---|
| 配置管理 | 4 | 查询、列表、发布、删除配置 |
| 服务发现 | 3 | 列出服务、查询实例、服务详情 |
| 命名空间 | 1 | 列出所有命名空间 |
| 配置历史 | 1 | 查询配置变更记录 |
快速开始
前置条件
- Python 3.10+
- 能访问目标 Nacos 服务器的网络
安装配置
所有 MCP 客户端配置格式相同,只需修改配置文件路径。
Claude Code — 项目 .mcp.json 或全局 ~/.claude.json:
{
"mcpServers": {
"nacos": {
"command": "uvx",
"args": ["nacos-mcp"],
"env": {
"NACOS_HOST": "localhost",
"NACOS_PORT": "8848",
"NACOS_USERNAME": "nacos",
"NACOS_PASSWORD": "nacos",
"NACOS_NAMESPACE": "dev",
"NACOS_READ_ONLY": "false"
}
}
}
}
Cursor — ~/.cursor/mcp.json
Claude Desktop — claude_desktop_config.json
Windsurf — ~/.codeium/windsurf/mcp_config.json
Cline — VS Code 设置中的 MCP 配置
以上客户端配置格式相同,只需把配置放到对应位置即可。
环境变量
| 变量 | 说明 | 默认值 | 必填 |
|---|---|---|---|
NACOS_HOST |
Nacos 服务器地址 | localhost |
是 |
NACOS_PORT |
Nacos 端口 | 8848 |
是 |
NACOS_USERNAME |
登录用户名 | nacos |
否 |
NACOS_PASSWORD |
登录密码 | nacos |
否 |
NACOS_NAMESPACE |
默认命名空间 ID | public |
否 |
NACOS_READ_ONLY |
只读模式(禁止发布/删除) | false |
否 |
工具列表
1. nacos_list_namespaces — 列出命名空间
列出 Nacos 所有命名空间及配置数量。
帮我看看 Nacos 有哪些命名空间
2. nacos_list_configs — 配置列表
列出指定命名空间下的配置项,支持按 group/dataId 过滤。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
namespace_id |
string | 否 | 命名空间 ID |
group |
string | 否 | 按分组名过滤 |
data_id |
string | 否 | 按 dataId 过滤(精确匹配) |
page_no |
int | 否 | 页码,默认 1 |
page_size |
int | 否 | 每页条数,默认 100 |
列出 dev 命名空间下所有配置
查一下 dev 下有没有 group 为 PROD_GROUP 的配置
3. nacos_get_config — 获取配置
获取指定配置的完整内容。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
data_id |
string | 是 | 配置 ID |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
namespace_id |
string | 否 | 命名空间 ID |
response_format |
string | 否 | markdown(默认)或 json |
获取 dev 下 application-common.yml 的配置内容
以 JSON 格式返回 datasource.yml 的配置
4. nacos_publish_config — 发布/更新配置
发布新配置或更新已有配置。只读模式下不可用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
data_id |
string | 是 | 配置 ID |
content |
string | 是 | 配置内容 |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
namespace_id |
string | 否 | 命名空间 ID |
config_type |
string | 否 | 类型:yaml/json/text/properties/xml/html/toml |
desc |
string | 否 | 配置描述 |
把以下配置发布到 dev 命名空间,dataId 为 redis.yml:
spring:
redis:
host: 192.168.1.100
port: 6379
更新 application.yml,把 server.port 改成 9090
5. nacos_delete_config — 删除配置
删除指定配置。只读模式下不可用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
data_id |
string | 是 | 配置 ID |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
namespace_id |
string | 否 | 命名空间 ID |
删除 dev 下 test-config.yml 这个配置
6. nacos_list_config_history — 配置变更历史
查询配置的变更历史记录。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
data_id |
string | 是 | 配置 ID |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
namespace_id |
string | 否 | 命名空间 ID |
page_no |
int | 否 | 页码 |
page_size |
int | 否 | 每页条数,默认 20 |
查看 datasource.yml 的变更历史
7. nacos_list_services — 列出服务
列出 Nacos 中注册的所有服务。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
namespace_id |
string | 否 | 命名空间 ID |
group_name |
string | 否 | 按分组过滤 |
page_no |
int | 否 | 页码 |
page_size |
int | 否 | 每页条数 |
Nacos 里注册了哪些服务?
dev 命名空间下有哪些微服务?
8. nacos_list_instances — 查询服务实例
查询指定服务的所有实例,包含 IP、端口、健康状态、权重、元数据等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
service_name |
string | 是 | 服务名 |
namespace_id |
string | 否 | 命名空间 ID |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
healthy_only |
bool | 否 | 是否只返回健康实例 |
查看 ruoyi-gateway 有几个实例
列出 book 服务的所有健康实例
9. nacos_get_service_detail — 查询服务详情
查询服务的详细信息,包括保护阈值、元数据、集群配置等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
service_name |
string | 是 | 服务名 |
namespace_id |
string | 否 | 命名空间 ID |
group_name |
string | 否 | 分组名,默认 DEFAULT_GROUP |
查看 ruoyi-auth 的服务详情
使用教程
教程 1:日常配置查看
用户:帮我看看 Nacos 里有哪些命名空间?
AI:(调用 nacos_list_namespaces)→ 返回表格
用户:dev 下有哪些配置?
AI:(调用 nacos_list_configs, namespace_id="dev")→ 返回配置列表
用户:看看 gateway 的配置内容
AI:(调用 nacos_get_config, data_id="ruoyi-gateway.yml", namespace_id="dev")
→ 返回完整 YAML 配置
教程 2:配置变更排查
用户:datasource.yml 最近有没有被改过?
AI:(调用 nacos_list_config_history, data_id="datasource.yml")
→ 返回变更记录,包含操作人、IP、时间
用户:谁改的?改成什么了?
AI:根据历史记录回答操作人和操作类型(I=新增, U=更新, D=删除)
教程 3:服务健康检查
用户:帮我检查一下所有服务是否健康
AI:
1.(调用 nacos_list_services)→ 获取服务列表
2. 逐个(调用 nacos_list_instances)→ 检查每个服务的实例健康状态
3. 汇总报告:哪些服务全健康、哪些有不健康实例
教程 4:发布新配置
用户:帮我在 dev 下新建一个 oss.yml 配置:
oss:
endpoint: oss-cn-hangzhou.aliyuncs.com
bucket: my-bucket
AI:(调用 nacos_publish_config, data_id="oss.yml", content="...", namespace_id="dev")
→ 返回发布成功确认
用户:确认一下发布的内容对不对
AI:(调用 nacos_get_config, data_id="oss.yml")→ 返回刚发布的内容
教程 5:只读模式(生产环境保护)
生产环境建议开启只读模式,防止 AI 误操作修改或删除配置:
{
"env": {
"NACOS_HOST": "nacos-prod.example.com",
"NACOS_PORT": "8848",
"NACOS_USERNAME": "readonly",
"NACOS_PASSWORD": "your-password",
"NACOS_NAMESPACE": "prod",
"NACOS_READ_ONLY": "true"
}
}
开启后 nacos_publish_config 和 nacos_delete_config 会返回"只读模式,禁止操作",其余查询工具正常可用。
连接失败排查
如果 MCP 工具返回连接失败的引导信息,按以下步骤排查:
- 检查 Nacos 是否在线 — 浏览器访问
http://{NACOS_HOST}:{NACOS_PORT}/nacos - 检查网络连通性 —
ping {NACOS_HOST}或telnet {NACOS_HOST} {NACOS_PORT} - 检查账号密码 — 默认
nacos/nacos,修改后需要同步更新环境变量 - 检查命名空间 ID — Nacos 控制台的命名空间 ID(不是名称)
架构说明
nacos-mcp
├── client.py # NacosClient 单例,鉴权 + 持久化 httpx 连接池 + 所有 API
└── server.py # 9 个 MCP 工具定义
- 配置管理走 v1 API —
/nacos/v1/cs/configs(兼容性好,有配置列表接口) - 服务发现走 v2 API —
/nacos/v2/ns/(字段更丰富,包含 ephemeral、metadata 等) - 命名空间走 v2 API —
/nacos/v2/console/namespace/list - 连接池管理 — httpx AsyncClient 持久化,空闲 5 分钟自动释放
- 错误处理 — 所有异常捕获为字符串返回,MCP 进程不会崩溃
开发
git clone https://github.com/pkyit/nacos-mcp.git
cd nacos-mcp
# 安装依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 本地启动 MCP Server
nacos-mcp
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nacos_mcp-1.1.1.tar.gz.
File metadata
- Download URL: nacos_mcp-1.1.1.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99517cc6db55d41d2aa3ad114f4f1ab1e149daacbede09d2f83e559f075e959d
|
|
| MD5 |
6ef2177263622d2b0ea16ee1dbbdca45
|
|
| BLAKE2b-256 |
e76e6b6e15b049305a46513945093a5c9bec73f3404afbef34ed92e2f14f8d18
|
File details
Details for the file nacos_mcp-1.1.1-py3-none-any.whl.
File metadata
- Download URL: nacos_mcp-1.1.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2f5bdbd74d8772c9ce8121840149f1ca2d5a08efcbfaa684041c0cabfc0973d
|
|
| MD5 |
7e056dd8b7757bc1c9c9ab7b5fd26356
|
|
| BLAKE2b-256 |
cfbd84f2080410b8913bddf252398b27634a1b6f676eb5ebe96af89d3f9610bb
|