关于 mcp-server-nacos: A Nacos MCP server
面向 Nacos 集群交互与自动化的 MCP 服务,供需要查询服务发现和配置数据的用户使用。它支持读取、搜索和列出相关信息,目前不支持写入操作,且处于早期开发阶段。
主要功能
- 01列出命名空间与服务
- 02查询服务详情和实例
- 03搜索配置及配置历史
- 04查看配置监听关系
- 05仅支持读取与查询
适用场景
- 01通过对话检查 Nacos 服务与实例
- 02查找配置内容及其历史变更
- 03排查服务订阅者或配置监听者
MCP 相关
向 MCP 客户端提供用于查询 Nacos 集群的工具,涵盖命名空间、服务、实例、配置、历史记录及监听关系。当前仅支持读取、搜索和列出,不支持写入。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-server-nacos:Nacos MCP 服务
概述
Nacos 是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。它能帮助你轻松构建云原生应用和微服务平台。
此 MCP(模型上下文协议)服务用于与 Nacos 交互并实现自动化。该服务提供工具,可通过大语言模型在 Nacos 集群中搜索和读取 namespace、service 和 configuration 相关信息。
请注意,mcp-server-nacos 目前仍处于早期开发阶段。随着我们持续开发和改进该服务,其功能和可用工具可能会发生变化并有所扩展。还请注意,当前版本的 mcp-server-nacos 仅提供读取、搜索和列表操作,不支持任何写入操作。我们计划在未来版本中支持写入操作。
另外请注意,mcp-server-nacos 的所需版本:
1. Nacos version required upper `3.0.0`, because of depended on the [Nacos Admin API](https://nacos.io/en/swagger/admin/) in 3.x.
2. python version required 3.x, recommend upper `3.13`.
工具
list_namespaces- 获取当前 Nacos 集群中的命名空间列表。
- 输入:
- 无
- 返回:当前 Nacos 集群中的命名空间列表。
list_services- 此工具获取指定命名空间下的服务列表。响应格式取决于
withInstances参数:withInstances=true:返回包含实例的服务详情(ServiceDetailInfo对象)。withInstances=false:返回不包含实例的服务元数据(ServiceView对象)。注意: 当withInstances=true时,API 可能会消耗过多内存和网络资源。如果只想获取少量或单个服务的实例列表,建议使用withInstances=false和List Service Instances。 - 输入:
pageNo(number):当前页码,默认为 1。pageSize(number):每页服务数量,默认为 100。namespaceId(string, optional):服务的 namespaceId,缺省时默认为public。groupNameParam(string, optional):服务的 groupName 匹配模式,缺省时默认值为 null,表示所有 group。serviceNameParam(string, optional):服务的 serviceName 匹配模式,缺省时默认值为 null,表示所有服务。ignoreEmptyService(bool, optional):是否忽略结果中的空服务,默认为 true。withInstances(bool, optional):结果中是否包含每个服务下的实例,建议使用且默认为 false。
- 返回:指定命名空间下的服务列表。
- 此工具获取指定命名空间下的服务列表。响应格式取决于
get_service- 此工具获取指定服务的详细信息,包括元数据和集群,但不包括实例列表。
- 输入:
namespaceId(string, optional):服务的 namespaceId,缺省时默认为public。groupName(string, optional):服务的 groupName 匹配模式,缺省时默认为DEFAULT_GROUP。serviceName(string):服务的 serviceName 匹配模式,必填。
- 返回:指定服务的详细信息。
list_service_instances- 此工具获取指定服务的实例列表。
- 输入:
namespaceId(string, optional):服务的 namespaceId,缺省时默认为public。groupName(string, optional):服务的 groupName 匹配模式,缺省时默认为DEFAULT_GROUP。serviceName(string):服务的 serviceName 匹配模式,必填。clusterName(string, optional):服务中实例的集群名称,可选;默认为 null,表示匹配所有集群。
- 返回:指定服务的实例列表。
list_service_subscribers- 此工具获取指定服务的订阅者列表。
- 输入:
pageNo(number):当前页码,默认为 1。pageSize(number):每页服务订阅者数量,默认为 100。namespaceId(string, optional):服务的 namespaceId,缺省时默认为public。groupName(string, optional):服务的 groupName 匹配模式,缺省时默认为DEFAULT_GROUP。serviceName(string):服务的 serviceName 匹配模式,必填。aggregation(bool, optional):是否汇总整个集群的数据。
- 返回:指定服务的订阅者列表。
list_configs- 此工具获取指定命名空间下的配置列表。
- 输入:
pageNo(number):当前页码,默认为 1。pageSize(number):每页配置数量,默认为 100。namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。groupName(string, optional):配置的 groupName 匹配模式,缺省时默认值为 null,表示所有 group。dataId(string, optional):配置的 dataId 匹配模式,缺省时默认值为 null,表示所有 dataId。type(string, optional):配置类型,缺省时默认值为 null,表示所有类型。configTags(string, optional):配置标签,缺省时默认值为 null,表示所有标签。appName(string, optional):配置的 appName,缺省时默认值为 null,表示所有 appName。search(string, optional):配置列表的搜索方式,默认为blur,可选值为accurate。
- 返回:指定命名空间下的配置列表。
get_config- 获取指定配置的详细信息。
- 输入:
namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。groupName(string):配置的 groupName,必填。dataId(string):配置的 dataId,必填。
- 返回:指定配置的详细信息。
list_config_history- 此工具获取配置的完整发布历史记录。
- 输入:
pageNo(number):当前页码,默认为 1。pageSize(number):每页配置历史记录数量,默认为 100。namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。groupName(string):配置的 groupName,必填。dataId(string):配置的 dataId,必填。
- 返回:指定命名空间下的配置列表。
get_config_history- 获取配置的一条指定历史变更记录。
- 输入:
namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。groupName(string):配置的 groupName,必填。dataId(string):配置的 dataId,必填。nid(number):配置历史记录的实际 ID,可从 list config history 工具的id字段中获取。
- 返回:配置的历史变更记录。
list_config_listeners
- 获取订阅了指定配置的监听器列表。
- 输入:
namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。groupName(string):配置的 groupName,必填。dataId(string):配置的 dataId,必填。aggregation(bool, optional):是否汇总整个集群的数据。
- 返回:订阅了指定配置的监听器列表。
list_listened_configs
- 获取特定客户端 IP 地址订阅的配置列表。
- 输入:
namespaceId(string, optional):配置的 namespaceId,缺省时默认为public。ip(string):配置监听器的客户端 IP,必填。aggregation(bool, optional):是否汇总整个集群的数据。
- 返回:特定客户端 IP 地址订阅的配置列表。
安装
使用 uv(推荐)
使用 uv 时,无需进行特定安装。我们将使用
uvx 直接运行 mcp-server-nacos。
使用 PIP
或者,你也可以通过 pip 安装 mcp-server-nacos:
pip install mcp-server-nacos
安装后,你可以将其作为脚本运行:
python -m mcp_server_nacos
配置
与 Claude Desktop 配合使用
将以下内容添加到你的 claude_desktop_config.json:
使用 uvx
"mcpServers": {
"git": {
"command": "uvx",
"args": [
"nacos-mcp-server",
"--host",
"your_nacos_host",
"--port",
"your_nacos_main_port, such as 8848",
"--access_token",
"your_nacos_access_token, get from `login` api: /nacos/v3/auth/user/login with `username` and `password`"
],
}
}
你可能需要在
command字段中填写uvx可执行文件的完整路径。你可以在 MacOS/Linux 上运行which uvx,或在 Windows 上运行where uvx来获取该路径。
使用 pip 安装
"mcpServers": {
"git": {
"command": "python",
"args": [
"-m",
"nacos-mcp-server",
"--host",
"your_nacos_host",
"--port",
"your_nacos_main_port, such as 8848",
"--access_token",
"your_nacos_access_token, get from `login` api: /nacos/v3/auth/user/login with `username` and `password`"
],
}
}
开发
如果你要进行本地开发,只需按照以下步骤操作:
- 将此仓库克隆到本地环境。
- 修改
src/mcp_server_nacos中的代码,以实现你想要的功能。 - 使用 Claude 桌面应用进行测试。在 claude_desktop_config.json 中添加以下内容:
{
"mcpServers": {
"mcp-server-nacos": {
"command": "uv",
"args": [
"--directory",
"/<path to mcp-server-nacos>/src/mcp_server_nacos",
"run",
"mcp-server-nacos"
]
}
}
许可证
mcp-server-nacos 根据 Apache 2.0 许可证授权。这意味着你可以自由使用、修改和分发该软件,但须遵守 Apache 2.0 许可证的条款和条件。详情请参阅项目仓库中的 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。