Skip to main content
Glama
nacos-group

Nacos MCP Server

Official
by nacos-group

mcp-server-nacos: A Nacos MCP server

Overview

Nacos is an easy-to-use platform designed for dynamic service discovery and configuration and service management. It helps you to build cloud native applications and microservices platform easily.

This MCP(Model Context Protocol) Server is for Nacos interaction and automation. This server provides tools to search and read namespace, service and configuration relative information in Nacos Cluster via Large Language Models.

Please note that mcp-server-nacos is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server. And also note that mcp-server-nacos only provide read, search and list operation, not support any write operation for current version. Write operation is planning supported in future versions.

One more note that this mcp-server-nacos required version:

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`.

Tools

  1. list_namespaces

    • Retrieves the list of namespaces in the current Nacos cluster.

    • Input:

      • None

    • Returns: list of namespaces in the current Nacos cluster.

  2. list_services

    • This tool retrieves the list of services under a specified namespace. The response format depends on the withInstances parameter:withInstances=true: Returns service details with instances (ServiceDetailInfo objects). withInstances=false: Returns service metadata without instances (ServiceView objects). **NOTE: ** When withInstances=true, The API may cost too much memory and networks, If Only want get instance list with little or one service, Suggest use withInstances=false with List Service Instances.

    • Input:

      • pageNo(number): The current page number, default is 1.

      • pageSize(number): The size of services in each page, default is 100.

      • namespaceId(string, optional): The namespaceId of services, default is public if missing.

      • groupNameParam(string, optional): The groupName pattern of services, default null means all group if missing.

      • serviceNameParam(string, optional): The serviceName pattern of services, default null means all service if missing.

      • ignoreEmptyService(bool, optional): Whether ignore the empty service in result, default is true.

      • withInstances(bool, optional): Whether contain instances under each services in result, recommend and default is false.

    • Returns: list of services under a specified namespace.

  3. get_service

    • This tool retrieves detailed information of a specified service, including metadata and clusters, not including instance list.

    • Input:

      • namespaceId(string, optional): The namespaceId of services, default is public if missing.

      • groupName(string, optional): The groupName pattern of services, default is DEFAULT_GROUP if missing.

      • serviceName(string): The serviceName pattern of services, required.

    • Returns: detailed information of a specified service.

  4. list_service_instances

    • This tool retrieves the list of instances for a specified service.

    • Input:

      • namespaceId(string, optional): The namespaceId of services, default is public if missing.

      • groupName(string, optional): The groupName pattern of services, default is DEFAULT_GROUP if missing.

      • serviceName(string): The serviceName pattern of services, required.

      • clusterName(string, optional): The cluster name of instances in service, optional and default is null means match all cluster.

    • Returns: list of instances for a specified service.

  5. list_service_subscribers

    • This tool retrieves the list of subscribers for a specified service.

    • Input:

      • pageNo(number): The current page number, default is 1.

      • pageSize(number): The size of service subscribers in each page, default is 100.

      • namespaceId(string, optional): The namespaceId of services, default is public if missing.

      • groupName(string, optional): The groupName pattern of services, default is DEFAULT_GROUP if missing.

      • serviceName(string): The serviceName pattern of services, required.

      • aggregation(bool, optional): Whether aggregation from whole cluster.

    • Returns: list of subscribers for a specified service.

  6. list_configs

    • This tool retrieves the list of configurations under a specified namespace.

    • Input:

      • pageNo(number): The current page number, default is 1.

      • pageSize(number): The size of configs in each page, default is 100.

      • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

      • groupName(string, optional): The groupName pattern of configs, default null means all group.

      • dataId(string, optional): The dataId pattern of configs, default null means all dataId.

      • type(string, optional): The type of configs, default null means all type.

      • configTags(string, optional): The tags of configs, default null means all tags.

      • appName(string, optional): The appName of configs, default null means all appName.

      • search(string, optional): The search way of list configs, default is blur, optional value accurate.

    • Returns: list of configurations under a specified namespace.

  7. get_config

    • retrieves the details of the specified configuration.

    • Input:

      • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

      • groupName(string): The groupName of config, Required.

      • dataId(string): The dataId of config, Required.

    • Returns: the details of the specified configuration.

  8. list_config_history

    • This tool retrieves the complete publish history of a configuration.

    • Input:

      • pageNo(number): The current page number, default is 1.

      • pageSize(number): The size of config history records in each page, default is 100.

      • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

      • groupName(string): The groupName of config, Required.

      • dataId(string): The dataId of config, Required.

    • Returns: list of configurations under a specified namespace.

  9. get_config_history

    • retrieves a specific historical change record of a configuration.

    • Input:

      • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

      • groupName(string): The groupName of config, Required.

      • dataId(string): The dataId of config, Required.

      • nid(number): the actual id of config history record, Get from list config history tool, id field.

    • Returns: historical change record of a configuration.

  10. list_config_listeners

  • retrieves the list of listeners subscribed to a specific configuration.

  • Input:

    • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

    • groupName(string): The groupName of config, Required.

    • dataId(string): The dataId of config, Required.

    • aggregation(bool, optional): Whether aggregation from whole cluster.

  • Returns: list of listeners subscribed to a specific configuration.

  1. list_listened_configs

  • retrieves lists the configurations subscribed to by a specific client IP address.

  • Input:

    • namespaceId(string, optional): The namespaceId of configs, default is public if missing.

    • ip(string): The client ip of config listeners, Required.

    • aggregation(bool, optional): Whether aggregation from whole cluster.

  • Returns: lists the configurations subscribed to by a specific client IP address.

Related MCP server: Lark MCP Server

Installation

When using uv no specific installation is needed. We will use uvx to directly run mcp-server-nacos.

Using PIP

Alternatively you can install mcp-server-nacos via pip:

pip install mcp-server-nacos

After installation, you can run it as a script using:

python -m mcp_server_nacos

Configuration

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

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

You may need to put the full path to the uvx executable in the command field. You can get this by running which uvx on MacOS/Linux or where uvx on Windows.

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

Development

If you are doing local development, simply follow the steps:

  1. Clone this repo into your local environment.

  2. Modify codes in src/mcp_server_nacos to implement your wanted features.

  3. Test using the Claude desktop app. Add the following to your 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"
    ]
  }
}

License

mcp-server-nacos is licensed under the Apache 2.0 License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the Apache 2.0 License. For more details, please see the LICENSE file in the project repository.

Available Tools

11 tools
get_configC

This interface retrieves the details of the specified configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of configs, default is `public` if missing
groupNameYesThe groupName of config, Required.
dataIdYesThe dataId of config, Required.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'retrieves' implies a read-only operation, it doesn't specify permissions required, rate limits, error conditions, or what format the configuration details are returned in. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of configuration management (implied by multiple sibling tools), no annotations, and no output schema, the description is incomplete. It doesn't explain what 'configuration details' include, how they're structured, or provide context about the configuration system, making it inadequate for an agent to fully understand the tool's role and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters thoroughly. The description adds no additional meaning about the parameters beyond what's in the schema, such as explaining the relationship between namespaceId, groupName, and dataId. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieves') and resource ('details of the specified configuration'), making the purpose understandable. However, it doesn't differentiate this tool from its siblings like 'get_config_history' or 'list_configs', which likely retrieve related but different configuration data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'get_config_history' and 'list_configs' available, there's no indication of what distinguishes this retrieval operation from those, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_config_historyB

This interface retrieves a specific historical change record of a configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of configs, default is `public` if missing
groupNameYesThe groupName of config, Required.
dataIdYesThe dataId of config, Required.
nidNothe actual id of config history record, Get from list config history api/tool, `id` field.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it 'retrieves' (read operation) but doesn't disclose behavioral aspects like authentication requirements, rate limits, error conditions, or what format the historical record returns. For a tool with no annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 4 parameters (2 required), the description is incomplete. It doesn't explain what the historical record contains, how to obtain the 'nid' parameter (only hinted in schema), or any behavioral constraints. For a retrieval tool with specific identifiers, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain relationships between parameters like how 'nid' relates to 'list_config_history'). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieves') and resource ('specific historical change record of a configuration'), distinguishing it from siblings like 'get_config' (current config) and 'list_config_history' (multiple records). However, it doesn't explicitly contrast with these siblings in the description text itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a specific historical record, but doesn't explicitly state when to use this versus alternatives like 'list_config_history' (for multiple records) or 'get_config' (for current config). No guidance on prerequisites or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_serviceA

This interface retrieves detailed information of a specified service, including metadata and clusters, not including instance list.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of services, default is `public` if missing
groupNameNoThe groupName pattern of services, default is `DEFAULT_GROUP` if missing
serviceNameYesThe serviceName pattern of services, required.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adequately describes the read-only nature ('retrieves') and specifies the scope of returned data. However, it doesn't mention potential limitations like rate limits, authentication requirements, error conditions, or response format details that would be helpful for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the tool's purpose, scope, and limitations. Every word earns its place with no redundant information or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read operation with no annotations and no output schema, the description provides adequate basic information about what the tool does and what data it returns. However, it lacks details about the response format, error handling, or any behavioral constraints that would help an agent use it effectively in complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all three parameters thoroughly. The description doesn't add any additional parameter semantics beyond what's in the schema descriptions, so it meets the baseline expectation without providing extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('retrieves detailed information'), the target resource ('a specified service'), and the scope of information returned ('including metadata and clusters, not including instance list'). It distinguishes this tool from sibling tools like 'list_service_instances' by explicitly excluding instance data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool by specifying what information it returns (metadata and clusters) and what it excludes (instance list). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools for different use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_config_historyC

This interface retrieves the complete publish history of a configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoYesThe current page number, default is 1.
pageSizeYesThe size of config history records in each page, default is 100
namespaceIdNoThe namespaceId of config, default is `public` if missing
groupNameYesThe groupName pattern of config, required.
dataIdYesThe dataId pattern of config, required.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions 'retrieves' which implies a read operation, but doesn't cover critical aspects like pagination behavior (implied by parameters but not explained), rate limits, authentication needs, or what 'complete publish history' entails (e.g., timestamps, versions). This leaves significant gaps for safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and every part earns its place, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool with 5 parameters and pagination behavior. It doesn't explain the return format (e.g., what fields are in the history), error conditions, or how 'complete' history interacts with pagination. For a read operation with multiple inputs, more context is needed for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 5 parameters with defaults and requirements. The description adds no additional meaning beyond implying pagination and filtering by namespace/group/data patterns, which are already clear from the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieves') and resource ('complete publish history of a configuration'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_config_history' or 'list_configs', which might have overlapping functionality, so it doesn't achieve full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_config_history' or 'list_configs'. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_config_listenersB

This interface retrieves the list of listeners subscribed to a specific configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of configs, default is `public` if missing
groupNameYesThe groupName of config, Required.
dataIdYesThe dataId of config, Required.
aggregationNoWhether aggregation from whole cluster, if `false`, only get listeners from requested node, default `true` if missing

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('retrieves'), but lacks details on permissions, rate limits, pagination, or error handling. For a tool with four parameters and no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is minimal but covers the basic purpose. It lacks details on behavioral traits, output format, and usage context, making it adequate but with clear gaps for an agent to rely on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples, resulting in a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieves') and resource ('list of listeners subscribed to a specific configuration'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'list_service_subscribers' or 'list_listened_configs', which might have overlapping functionality, so it misses the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as 'list_listened_configs' or 'list_service_subscribers', nor does it mention prerequisites or exclusions. It only states what it does, leaving usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_configsC

This interface retrieves the list of configurations under a specified namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoYesThe current page number, default is 1.
pageSizeYesThe size of configs in each page, default is 100
namespaceIdNoThe namespaceId of configs, default is `public` if missing
groupNameNoThe groupName pattern of configs, default null means all group. if not null, server will search all config match groupName. If `search=blur`, this parameter allow use `*` to do blur search, such as `*test` to do prefix and `test*` to do suffix
dataIdNoThe dataId pattern of configs, default null means all dataId. if not null, server will search all config match dataId. If `search=blur`, this parameter allow use `*` to do blur search, such as `*test` to do prefix and `test*` to do suffix
typeNoThe type of configs, default null means all type, if not null, server will search all config match type. Multiple type using `,` to split, such as `text,json`
configTagsNoThe tags of configs, default null means all tags, if not null, server will search all config match tags. Multiple tags using `,` to split, such as `tag1,tag2`
appNameNoThe appName of configs, default null means all appName, if not null, server will search all config match appName.
searchNoThe search way of list configs, default is `blur` means blur search groupName and dataId. Or using `accurate` means accurate match with groupName and dataId.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it 'retrieves' a list, implying a read-only operation. It doesn't disclose behavioral traits such as pagination handling (beyond schema hints), rate limits, authentication needs, error conditions, or what happens with invalid inputs, which are critical for a tool with 9 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized for a list operation, though it could be more front-loaded with key usage details to improve structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (9 parameters, no output schema, no annotations), the description is insufficient. It lacks details on return format, pagination behavior, error handling, and how it differs from siblings. For a list tool with rich filtering options, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 9 parameters with defaults and behaviors. The description adds no additional parameter semantics beyond implying namespace filtering, which is already covered in the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieves') and resource ('list of configurations under a specified namespace'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_config_history' or 'get_config', which also retrieve configuration-related data, so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_config' (for single config) or 'list_config_history' (for historical data). It mentions 'under a specified namespace' but doesn't clarify if this is required or how it relates to other tools, leaving usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_listened_configsC

This interface lists the configurations subscribed to by a specific client IP address.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of configs, default is `public` if missing
ipYesThe client ip of config listeners, Required.
aggregationNoWhether aggregation from whole cluster, if `false`, only get listeners from requested node, default `true` if missing

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'lists' configurations, implying a read-only operation, but doesn't mention any behavioral traits such as permissions needed, rate limits, pagination, or what happens if the IP has no subscriptions. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and efficiently conveys the core functionality, making it easy for an agent to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, error handling) or address behavioral aspects like cluster aggregation effects. For a tool with 3 parameters and no structured support, more context is needed to guide proper invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds no additional meaning beyond implying the 'ip' parameter is central, but it doesn't explain parameter interactions or provide context beyond what the schema offers, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('lists') and resource ('configurations subscribed to by a specific client IP address'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_config_listeners' or 'list_configs', which might have overlapping functionality, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_config_listeners' or 'list_configs'. It mentions a specific client IP address but doesn't clarify use cases, prerequisites, or exclusions, leaving the agent to infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_namespacesB

Retrieves the list of namespaces in the current Nacos cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Retrieves') but doesn't describe traits like whether it's read-only, paginated, rate-limited, or requires authentication. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action ('Retrieves') and resource. There is no wasted wording, and it directly communicates the tool's function without redundancy or fluff, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description is adequate as a basic read operation. However, without annotations or output schema, it lacks details on behavioral traits (e.g., safety, pagination) and return values. For a list operation in a cluster context, more completeness would be beneficial, but it meets the minimum viable threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is given since the schema fully handles parameters, and the description doesn't introduce unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieves') and resource ('list of namespaces'), making the purpose unambiguous. It specifies the scope ('in the current Nacos cluster'), which helps distinguish it from generic list operations. However, it doesn't explicitly differentiate from sibling tools like 'list_configs' or 'list_services', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing cluster access, or contrast it with sibling tools like 'list_configs' or 'list_services' for namespace-specific operations. Without such context, users must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_service_instancesC

This interface retrieves the list of instances for a specified service.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceIdNoThe namespaceId of service, default is `public` if missing
groupNameNoThe groupName pattern of service, default is `DEFAULT_GROUP` if missing
serviceNameYesThe serviceName pattern of service, required.
clusterNameNoThe cluster name of instances in service, optional and default is null means match all cluster. If need match multiple cluster, use `,` to split like `cluster1,cluster2`

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'retrieves' data, implying a read-only operation, but doesn't mention permissions, rate limits, pagination, or response format. This is inadequate for a tool with 4 parameters and no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what an 'instance' entails, the return format, or how results are structured, leaving significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all parameters. The description adds no additional meaning beyond implying filtering by service, which is already covered by the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieves') and resource ('list of instances for a specified service'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'list_services' or 'get_service', which reduces its specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_services' or 'get_service'. It lacks context about prerequisites, exclusions, or comparisons with sibling tools, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_servicesA

This interface retrieves the list of services under a specified namespace. The response format depends on the withInstances parameter:withInstances=true: Returns service details with instances (ServiceDetailInfo objects). withInstances=false: Returns service metadata without instances (ServiceView objects). **NOTE: ** When withInstances=true, The API may cost too much memory and networks, If Only want get instance list with little or one service, Suggest use withInstances=false with List Service Instances.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoYesThe current page number, default is 1.
pageSizeYesThe size of services in each page, default is 100
namespaceIdNoThe namespaceId of services, default is `public` if missing
groupNameParamNoThe groupName pattern of services, default null means all group if missing. if not null, server will search all service match groupName both prefix and subfix, such as: input `test`, groupName `test`, `atest`, `testb`, `atestb` will all matched
serviceNameParamNoThe serviceName pattern of services, default null means all service if missing. if not null, server will search all service match serviceName both prefix and subfix, such as: input `test`, serviceName `test`, `atest`, `testb`, `atestb` will all matched
ignoreEmptyServiceNoWhether ignore the empty service in result, default is true
withInstancesNoWhether contain instances under each services in result, recommend and default is false

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the response format varies based on the `withInstances` parameter, warns about performance costs ('may cost too much memory and networks'), and recommends default settings. However, it lacks details on error handling or rate limits, preventing a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose. It uses bold formatting for emphasis and includes a note with performance warnings, but the sentence structure is slightly verbose (e.g., 'If Only want get instance list with little or one service'), which could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations, no output schema), the description does a good job of covering essential context: purpose, usage guidelines, behavioral warnings, and parameter effects. However, it does not describe the output structure (e.g., what fields are in ServiceDetailInfo or ServiceView), which is a gap since there's no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the baseline score is 3. The description adds some value by explaining the impact of the `withInstances` parameter on response format and performance, but does not provide additional semantic context beyond what the schema already documents for other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'retrieves the list of services under a specified namespace.' It specifies the verb ('retrieves') and resource ('services'), but does not explicitly differentiate it from sibling tools like 'list_service_instances' or 'get_service', which reduces it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus alternatives. It states: 'If Only want get instance list with little or one service, Suggest use `withInstances=false` with `List Service Instances`.' This directly compares to a sibling tool and advises on parameter settings for optimal use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_service_subscribersC

This interface retrieves the list of subscribers for a specified service.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoYesThe current page number, default is 1.
pageSizeYesThe size of subscribers in each page, default is 100
namespaceIdNoThe namespaceId of service, default is `public` if missing
groupNameNoThe groupName pattern of service, default is `DEFAULT_GROUP` if missing
serviceNameYesThe serviceName pattern of service, required.
aggregationNoWhether aggregation from whole cluster, if `false`, only get subscribers from requested node, default `true` if missing

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'retrieves' data, implying a read-only operation, but doesn't cover critical aspects like pagination behavior (implied by pageNo/pageSize but not explained), rate limits, authentication needs, or error conditions. This leaves significant gaps for an agent to understand how to interact with it effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded with the core action and resource, making it efficient and easy to parse. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no output schema, and no annotations), the description is insufficient. It doesn't explain the return format (e.g., structure of subscriber data), pagination details, or error handling. For a tool with multiple parameters and no output schema, more context is needed to guide an agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so parameters like 'pageNo', 'pageSize', and 'serviceName' are well-documented in the schema itself. The description adds no additional parameter semantics beyond what the schema provides, such as explaining relationships between parameters or usage examples. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieves') and resource ('list of subscribers for a specified service'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'list_service_instances' or 'list_services', which might have overlapping domains but different specific functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing the service to exist, or compare it to siblings like 'list_service_instances' for broader context. Usage is implied by the purpose but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • First observedget_config
    • First observedget_config_history
    • First observedget_service
    • First observedlist_config_history
    • First observedlist_config_listeners
    • First observedlist_configs
    • First observedlist_listened_configs
    • First observedlist_namespaces
    • First observedlist_service_instances
    • First observedlist_service_subscribers
    • First observedlist_services

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources and actions in the Nacos domain (configurations, services, namespaces, listeners/subscribers). No tools appear to overlap or cause confusion, as each name precisely indicates its function, such as get_config vs. list_configs or get_service vs. list_services.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout, using clear verbs like 'get', 'list', and specific nouns like 'config', 'service', 'namespace'. There are no deviations or mixed conventions, making the naming highly predictable and readable.

Tool Count5/5

With 11 tools, this server is well-scoped for managing configurations and services in Nacos, covering key operations like retrieval, listing, and history tracking. Each tool earns its place without feeling excessive or insufficient for the domain's needs.

Completeness4/5

The tool set provides strong coverage for read operations on configurations, services, namespaces, and related metadata, but lacks explicit create, update, or delete tools for these resources. This minor gap means agents can query effectively but may need workarounds for full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

  • The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

  • The Needle MCP server enables semantic search on documents stored in files like PDFs, DOCX, and XLSX by connecting AI applications to external data sources. It provides capabilities to create and manage document collections, perform natural language searches on stored content, and retrieve relevant information without requiring exact keyword matches.

  • GibsonAI MCP server: manage your databases with natural language

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A multi-functional computing platform server designed to integrate with large language models like Qwen, providing file access, database connections, API integration, and vector database functionality.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A server that enables LLMs to interact with Lark/Feishu services, currently supporting employee information queries via Lark's Contact API.
    12 npm
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that enables AI assistants to query and manage Nacos configurations. It supports Nacos 3.x for retrieving or publishing configuration files and includes an optional read-only mode for secure environments.
    2
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that exposes all AgileConfig RESTful APIs as tools, enabling AI assistants to manage configuration, applications, users, nodes, and more via natural language.
    36
    13 npm
    MIT