Nacos MCP服务器

一个用于与Nacos集群交互和自动化的MCP服务器,提供通过大型语言模型搜索和读取命名空间、服务和配置相关信息的功能。

  • by nacos-group
  • Python
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 nacos-group/nacos-mcp-server

使用说明

mcp服务器nacos:nacos mcp服务器

概述

纳科斯 是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。它可以帮助您轻松构建云原生应用程序和微服务平台。

此MCP(模型上下文协议)服务器用于Nacos交互和自动化。此服务器提供搜索和阅读工具 namespace, service 和 configuration 通过大型语言模型获取Nacos集群中的相关信息。

请注意 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`.

工具

  1. list_namespaces
    • 检索当前Nacos集群中的命名空间列表。
    • 输入:
      • 无
    • 返回:当前Nacos集群中的命名空间列表。
  2. 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,可选):服务的namespaceId,默认值为 public 如果丢失。
      • groupNameParam(string,可选):服务的groupName模式,默认为null表示所有组(如果缺少)。
      • serviceNameParam(string,可选):服务的serviceName模式,默认为null表示缺少所有服务。
      • ignoreEmptyService(bool,可选):是否忽略结果中的空服务,默认为true。
      • withInstances(bool,可选):result、recommended和default中是否包含每个服务下的实例为false。
    • 返回:指定命名空间下的服务列表。
  3. get_service
    • 此工具检索指定服务的详细信息,包括元数据和集群,不包括实例列表。
    • 输入:
      • namespaceId(string,可选):服务的namespaceId,默认值为 public 如果丢失。
      • groupName(string,可选):服务的groupName模式,默认为 DEFAULT_GROUP 如果丢失。
      • serviceName(string):服务的serviceName模式,必填。
    • 返回:指定服务的详细信息。
  4. list_service_instances
    • 此工具检索指定服务的实例列表。
    • 输入:
      • namespaceId(string,可选):服务的namespaceId,默认值为 public 如果丢失。
      • groupName(string,可选):服务的groupName模式,默认为 DEFAULT_GROUP 如果丢失。
      • serviceName(string):服务的serviceName模式,必填。
      • clusterName(string,可选):服务中实例的集群名称,可选,默认为null表示匹配所有集群。
    • 返回:指定服务的实例列表。
  5. list_service_subscribers
    • 此工具检索指定服务的订阅者列表。
    • 输入:
      • pageNo(number):当前页码,默认为1。
      • pageSize(number):每页中服务订阅者的大小,默认为100。
      • namespaceId(string,可选):服务的namespaceId,默认值为 public 如果丢失。
      • groupName(string,可选):服务的groupName模式,默认为 DEFAULT_GROUP 如果丢失。
      • serviceName(string):服务的serviceName模式,必填。
      • aggregation(bool,可选):是否从整个集群聚合。
    • 返回:指定服务的订阅者列表。
  6. list_configs
    • 此工具检索指定命名空间下的配置列表。
    • 输入:
      • pageNo(number):当前页码,默认为1。
      • pageSize(number):每页配置的大小,默认为100。
      • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
      • groupName(string,可选):配置的groupName模式,默认null表示所有组。
      • dataId(string,可选):配置的dataId模式,默认null表示所有dataId。
      • type(string,可选):配置的类型,默认null表示所有类型。
      • configTags(string,可选):配置的标签,默认null表示所有标签。
      • appName(string,可选):配置的appName,默认为null表示所有appName。
      • search(string,可选):列表配置的搜索方式,默认为 blur,可选值 accurate.
    • 返回:指定命名空间下的配置列表。
  7. get_config
    • 检索指定配置的详细信息。
    • 输入:
      • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
      • groupName(string):配置的groupName,必填。
      • dataId(string):配置的dataId,必填。
    • 返回:指定配置的详细信息。
  8. list_config_history
    • 此工具检索配置的完整发布历史记录。
    • 输入:
      • pageNo(number):当前页码,默认为1。
      • pageSize(number):每页配置历史记录的大小,默认为100。
      • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
      • groupName(string):配置的groupName,必填。
      • dataId(string):配置的dataId,必填。
    • 返回:指定命名空间下的配置列表。
  9. get_config_history
    • 检索配置的特定历史更改记录。
    • 输入:
      • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
      • groupName(string):配置的groupName,必填。
      • dataId(string):配置的dataId,必填。
      • nid(number):配置历史记录的实际id,从列表配置历史工具中获取, id 现场。
    • 返回:配置的历史更改记录。
  10. list_config_listeners
  • 检索订阅特定配置的侦听器列表。
  • 输入:
    • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
    • groupName(string):配置的groupName,必填。
    • dataId(string):配置的dataId,必填。
    • aggregation(bool,可选):是否从整个集群聚合。
  • 返回:订阅特定配置的侦听器列表。
  1. list_listened_configs
  • 检索列出了特定客户端IP地址订阅的配置。
  • 输入:
    • namespaceId(string,可选):配置的namespaceId,默认值为 public 如果丢失。
    • ip(string):配置侦听器的客户端ip,必填。
    • aggregation(bool,可选):是否从整个集群聚合。
  • 返回:列出特定客户端IP地址订阅的配置。

安装

使用紫外线(推荐)

使用时 uv 不需要特定的安装。我们将 使用 uvx 直接运行 mcp服务器nacos.

使用PIP

或者,您可以安装 mcp-server-nacos 通过pip:

pip install mcp-server-nacos

安装后,您可以使用以下命令将其作为脚本运行:

python -m mcp_server_nacos

配置

使用Claude Desktop

将此添加到您的 claude_desktop_config.json:

Using 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`"
      ],
  }
}

您可能需要将完整路径放在 uvx 可执行于 command 现场。你可以通过跑步来获得这个 which uvx 在MacOS/Linux或 where uvx 在Windows上。

Using pip installation
"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`"
      ],
  }
}

发展

如果您正在进行本地开发,只需按照以下步骤操作:

  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服务器nacos根据Apache 2.0许可证获得许可。这意味着您可以根据Apache 2.0许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅 LICENSE 项目存储库中的文件。