返回市场
nacos-mcp-服务器

nacos-mcp-服务器

作者:nacos-group6 星标更新:2025-06-10

项目介绍

mcp-server-nacos: 一个用于Nacos的MCP服务器

概述

Nacos 是一个易于使用的平台,旨在实现动态服务发现、配置和服务管理。它帮助您轻松构建云原生应用程序和微服务平台。

此MCP(模型上下文协议)服务器用于与Nacos进行交互和自动化。该服务器提供了工具,通过大型语言模型在Nacos集群中搜索和读取与namespaceserviceconfiguration相关的信息。

请注意,mcp-server-nacos目前处于早期开发阶段。随着我们继续开发和完善服务器,其功能和可用工具可能会发生变化和扩展。另外,请注意mcp-server-nacos当前仅提供读取、搜索和列出操作,不支持写入操作。写入操作计划在未来版本中支持。

还请注意,此mcp-server-nacos所需的版本:

1. Nacos版本需高于`3.0.0`,因为依赖于3.x版本中的[Nacos Admin API](https://nacos.io/en/swagger/admin/)。
2. Python版本需为3.x,推荐高于`3.13`。

工具

  1. list_namespaces
    • 获取当前Nacos集群中的命名空间列表。
    • 输入:
    • 返回:当前Nacos集群中的命名空间列表。
  2. list_services
    • 此工具获取指定命名空间下的服务列表。响应格式取决于withInstances参数:withInstances=true:返回带有实例的服务详情(ServiceDetailInfo对象)。withInstances=false:返回不带实例的服务元数据(ServiceView对象)。注意:withInstances=true时,API可能消耗大量内存和网络资源。如果只需要获取少量或单个服务的实例列表,建议使用withInstances=false结合List Service Instances
    • 输入:
      • pageNo(数字):当前页码,默认为1。
      • pageSize(数字):每页的服务数量,默认为1_00。
      • namespaceId(字符串,可选):服务的命名空间ID,默认为public
      • groupNameParam(字符串,可选):服务的组名模式,默认为空表示所有组。
      • serviceNameParam(字符串,可选):服务的服务名模式,默认为空表示所有服务。
      • ignoreEmptyService(布尔值,可选):是否忽略结果中的空服务,默认为true。
      • withInstances(布尔值,可选):结果中是否包含每个服务下的实例,默认为false。
    • 返回:指定命名空间下的服务列表。
  3. get_service
    • 此工具获取指定服务的详细信息,包括元数据和集群,但不包括实例列表。
    • 输入:
      • namespaceId(字符串,可选):服务的命名空间ID,默认为public
      • groupName(字符串,可选):服务的组名模式,默认为DEFAULT_GROUP
      • serviceName(字符串):服务的服务名模式,必需。
    • 返回:指定服务的详细信息。
  4. list_service_instances
    • 此工具获取指定服务的实例列表。
    • 输入:
      • namespaceId(字符串,可选):服务的命名空间ID,默认为public
      • groupName(字符串,可选):服务的组名模式,默认为DEFAULT_GROUP
      • serviceName(字符串):服务的服务名模式,必需。
      • clusterName(字符串,可选):服务中实例的集群名,可选,默认为空表示匹配所有集群。
    • 返回:指定服务的实例列表。
  5. list_service_subscribers
    • 此工具获取指定服务的订阅者列表。
    • 输入:
      • pageNo(数字):当前页码,默认为1。
      • pageSize(数字):每页的服务订阅者数量,默认为100。
      • namespaceId(字符串,可选):服务的命名空间ID,默认为public
      • groupName(字符串,可选):服务的组名模式,默认为DEFAULT_GROUP
      • serviceName(字符串):服务的服务名模式,必需。
      • aggregation(布尔值,可选):是否从整个集群聚合。
    • 返回:指定服务的订阅者列表。
  6. list_configs
    • 此工具获取指定命名空间下的配置列表。
    • 输入:
      • pageNo(数字):当前页码,默认为1。
      • pageSize(数字):每页的配置数量,默认为100。
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • groupName(字符串,可选):配置的组名模式,默认为空表示所有组。
      • dataId(字符串,可选):配置的数据ID模式,默认为空表示所有数据ID。
      • type(字符串,可选):配置的类型,默认为空表示所有类型。
      • configTags(字符串,可选):配置的标签,默认为空表示所有标签。
      • appName(字符串,可选):配置的应用名,默认为空表示所有应用名。
      • search(字符串,可选):配置列表的搜索方式,默认为blur,可选值accurate
    • 返回:指定命名空间下的配置列表。
  7. get_config
    • 获取指定配置的详细信息。
    • 输入:
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • groupName(字符串):配置的组名,必需。
      • dataId(字符串):配置的数据ID,必需。
    • 返回:指定配置的详细信息。
  8. list_config_history
    • 此工具获取配置的完整发布历史。
    • 输入:
      • pageNo(数字):当前页码,默认为1。
      • pageSize(数字):每页的配置历史记录数量,默认为100。
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • groupName(字符串):配置的组名,必需。
      • dataId(字符串):配置的数据ID,必需。
    • 返回:指定命名空间下的配置列表。
  9. get_config_history
    • 获取配置的具体历史变更记录。
    • 输入:
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • groupName(字符串):配置的组名,必需。
      • dataId(字符串):配置的数据ID,必需。
      • nid(数字):配置历史记录的实际ID,从list config history工具的id字段获取。
    • 返回:配置的历史变更记录。
  10. list_config_listeners
    • 获取特定配置的监听器列表。
    • 输入:
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • groupName(字符串):配置的组名,必需。
      • dataId(字符串):配置的数据ID,必需。
      • aggregation(布尔值,可选):是否从整个集群聚合。
    • 返回:特定配置的监听器列表。
  11. list_listened_configs
    • 获取特定客户端IP地址订阅的配置列表。
    • 输入:
      • namespaceId(字符串,可选):配置的命名空间ID,默认为public
      • ip(字符串):配置监听器的客户端IP,必需。
      • aggregation(布尔值,可选):是否从整个集群聚合。
    • 返回:特定客户端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中添加以下内容:

<details> <summary>使用uvx</summary>
"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来获取此路径。

</details> <details> <summary>使用pip安装</summary>
"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`"
      ],
  }
}
</details>

开发

如果您正在进行本地开发,请遵循以下步骤:

  1. 将此仓库克隆到您的本地环境中。
  2. 修改src/mcp_server_nacos中的代码以实现您想要的功能。
  3. 使用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文件。