Skip to main content
Glama

mcp-apisix

Apache APISIX Admin API MCP Server —— 让 AI 助手查询与管理 APISIX 网关配置。

兼容 APISIX 2.x/3.x,响应格式(v2/v3)自动探测(优先依据 X-API-VERSION 响应头,头缺失时按响应体结构推断)。

特性

  • 多协议传输stdio(默认)、ssestreamable-http

  • HTTP 接口认证:Bearer Token 保护,未授权请求返回 401

  • 写前确认:创建 / 更新 / 切换状态等写操作强制二次确认,客户端需支持 Elicitation 能力

  • MCP Resourcesapisix:// URI 暴露服务器环境等只读元数据

  • Stateless HTTP:无会话状态,适配 Serverless / 多副本部署

  • 凭据脱敏:强制启用(不可关闭),消费者凭据、插件密钥等响应时自动遮盖

  • 默认只读:写工具默认不注册,需显式 APISIX_READ_ONLY=false 开启

  • 灵活部署uvx 免安装、Docker 公开镜像、或本地构建

Related MCP server: apollo-mcp-server

快速开始

MCP 客户端(stdio,本地)

Claude Code 示例,写入项目 .mcp.json 或全局 ~/.claude.json

{
  "mcpServers": {
    "apisix": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-apisix"],
      "env": {
        "APISIX_BASE_URL": "http://localhost:9180",
        "APISIX_ADMIN_KEY": "your-admin-key",
        "APISIX_READ_ONLY": "false"
      }
    }
  }
}

Cursor / OpenCode / Claude Desktop 等客户端格式相同:command: uvx + args: ["mcp-apisix"] + APISIX_* 环境变量。

APISIX_BASE_URL 格式scheme://host[:port]。Admin API 默认独立监听 9180,Data Plane 监听 9080,二者分离。典型取值:

部署形态

APISIX_BASE_URL 示例

默认

http://<host>:9180

经反向代理转发

填代理对外完整地址

自签名 TLS

https://<host>:9180 + APISIX_INSECURE=true

Docker(公开镜像,免构建)

公开镜像:ghcr.io/zhouweico/mcp-apisix:latest

方式一:stdio(客户端拉起容器)

{
  "mcpServers": {
    "apisix": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/zhouweico/mcp-apisix:latest"],
      "env": {
        "APISIX_BASE_URL": "http://your-apisix-host:9180",
        "APISIX_ADMIN_KEY": "your-admin-key",
        "APISIX_READ_ONLY": "false"
      }
    }
  }
}

必须带 -i(保持 stdin 管道)。

方式二:HTTP + 认证(容器独立运行)

容器启动时会校验 APISIX_ADMIN_KEY(缺失则 ${VAR:?...} 报错退出),必须显式传入。

启动容器:

docker run -d -p 8000:8000 \
  -e MCP_TRANSPORT=streamable-http \
  -e MCP_AUTH_TOKEN=your-strong-token \
  -e APISIX_BASE_URL=http://your-apisix-host:9180 \
  -e APISIX_ADMIN_KEY=your-admin-key \
  -e APISIX_READ_ONLY=false \
  ghcr.io/zhouweico/mcp-apisix:latest

客户端 .mcp.json

{
  "mcpServers": {
    "apisix": {
      "type": "streamable-http",
      "url": "http://localhost:8000/mcp",
      "headers": {
        "Authorization": "Bearer your-strong-token"
      }
    }
  }
}

可用工具

共 22 个原子工具 + 1 个 MCP Resource。

资源读取(11 个,只读)

所有 list_* 工具共享通用参数:page / page_size(有效区间 [10, 500])/ detail(返回完整配置)/ fields(JSON 数组,覆盖默认投影;detail=true 时忽略)。所有资源响应统一经过脱敏层。

工具

对应端点

资源特有过滤参数

只读模式

apisix_list_routes

GET /routes

name / uri / label(v3)/ service_id / upstream_id(引用过滤,≥3.13)

apisix_get_route

GET /routes/{id}

apisix_list_services

GET /services

apisix_get_service

GET /services/{id}

apisix_list_upstreams

GET /upstreams

apisix_get_upstream

GET /upstreams/{id}

apisix_list_consumers

GET /consumers

无(凭据字段已脱敏)

apisix_get_consumer

GET /consumers/{username}

—(凭据字段已脱敏)

apisix_list_global_rules

GET /global_rules

apisix_list_stream_routes

GET /stream_routes

apisix_list_plugin_configs

GET /plugin_configs

global_rules / stream_routes / plugin_configs 有意只提供 list,不提供 get:资源数量通常很少,一次 list 即可获取全部。需完整配置时传 detail=true

语义支撑(3 个,只读)

工具

对应端点

说明

只读模式

apisix_list_plugins

GET /plugins/list

插件名数组(按 priority 降序,不含 schema);subsystemhttp(默认)或 stream

apisix_get_plugin_schema

GET /schema/plugins/{name}

单个插件字段定义、类型、必填项、默认值(含 metadata_schemaconsumer_schema

apisix_get_server_info

探测层数据

客户端探测层状态(响应格式 v2/v3、可用能力清单),非 APISIX 节点运行时信息

资源配置校验(1 个,只读)

工具

对应端点

说明

只读模式

apisix_validate_resource_config

POST /schema/validate/{resource}(≥3.5)

校验配置是否符合 JSON schema;仅校验 schema,不校验引用存在性与插件合法性;通过不代表写入必定成功

写操作(7 个,APISIX_READ_ONLY=true 时不注册)

工具

语义

只读模式

apisix_create_route

POST 创建(服务端生成 id)

apisix_update_route

PATCH 增量(带乐观锁)

apisix_toggle_route

PATCH status 0/1(仅 route 有此字段)

apisix_create_upstream

POST 创建(服务端生成 id)

apisix_update_upstream

PATCH 增量

apisix_create_service

POST 创建(服务端生成 id)

apisix_update_service

PATCH 增量

写操作约定

  • create 严格用 POST,服务端生成 id,不接受 id 参数;禁止 PUT(会静默全量覆盖且无乐观锁)

  • update 用 PATCH,仅传需修改字段,未提及字段保持不变;自带乐观锁,配置在读取后被其他来源修改会返回冲突提示

  • toggle 仅限 route:upstream 和 service 的 schema 无 status 字段,不提供 toggle

  • 不提供 DELETE:破坏性过大,需删除时通过 APISIX Dashboard 或 Admin API 手动处理

  • 不提供 consumer 写操作:consumer 涉及凭据写入,风险过高

写前确认:所有写工具执行前强制向用户确认,确认由 MCP SDK 在参数解析阶段发起(Resolve + Elicit),并按协议版本自动选择传输方式(2025-06-18 同步 Elicitation / 2026-07-28 MRTR)。

⚠️ 客户端能力要求:客户端必须声明 elicitation 能力,否则 SDK 直接返回 -32021 拒绝,写工具不会执行。自 v0.3.0 起不再提供"放行并标注未经人工确认"的降级路径——确认机制失效时一律拒绝,而非视为无需确认。非交互环境(如自动化脚本)如需写入,请直接调用 APISIX Admin API。

多来源共管风险:APISIX 配置可能同时被 Dashboard、Ingress Controller(源自 ApisixRoute 等 CRD)等多方管理。若目标资源由声明式控制器管理,此处修改可能在数秒后被控制器按 CRD 覆盖回原状。写工具的描述中会显式声明此风险。

APISIX 概念

  • route:核心路由配置,匹配请求并指向 upstream 或 service

  • service:可复用的服务配置(upstream + plugins),被 route 引用

  • upstream:后端节点集合(含负载均衡策略、健康检查等)

  • consumer:消费者身份,承载认证凭据(如 key-auth 的 key)与限流配额

  • global_rules:全局生效的插件配置,作用于所有路由

  • plugin_configs:可复用的插件配置组,被 route 引用

  • stream_routes:四层(TCP/UDP)流路由

响应格式 v2/v3:APISIX 3.x 可通过 deployment.admin.admin_api_version 配置返回 v2 格式,APISIX 2.x 原生返回 v2 格式。本 Server 自动探测响应格式(优先依据 X-API-VERSION 响应头,头缺失时按响应体结构推断),无需手动配置。v2 格式下分页与过滤参数被服务端静默忽略,返回结果中会显式告知。

配置

环境变量

MCP 传输与认证

变量

说明

默认值

MCP_TRANSPORT

传输协议:stdio / sse / streamable-http

stdio

MCP_HOST

HTTP 监听地址(stdio 忽略),默认仅本地回环;对外暴露需显式设置并务必配置 MCP_AUTH_TOKEN

127.0.0.1

MCP_PORT

HTTP 监听端口(stdio 忽略)

8000

MCP_AUTH_TOKEN

非空时启用 Bearer Token 认证

-(不鉴权)

MCP_STATELESS_HTTP

启用无状态 HTTP(适配 Serverless)

false

MCP_LOG_LEVEL

日志级别:debug / info / warning / error

info

APISIX 连接

变量

说明

默认值

APISIX_BASE_URL

Admin API 地址,格式 scheme://host[:port]

http://localhost:9180

APISIX_ADMIN_KEY

必填。映射到 X-API-KEY 请求头

-

APISIX_API_VERSION

响应格式:auto(自动探测)/ v2 / v3

auto

APISIX_READ_ONLY

只读模式(禁用写工具)

true

APISIX_TIMEOUT

请求超时秒数

30

APISIX_INSECURE

跳过 TLS 证书验证(自签名 / 内部 CA 场景)

false

只读模式

默认开启,写工具(create / update / toggle)不注册,Agent 看不到也调不到。开启写操作:

{ "env": { "APISIX_READ_ONLY": "false" } }

响应格式探测

APISIX_API_VERSION=auto(默认)时,从成功响应(2xx)中自动探测:优先读取 X-API-VERSION 响应头,头缺失时按响应体结构推断(node+action → v2,list+total → v3)。探测未完成前按 v3 处理。可强制指定 v2v3 跳过探测。

探测结果在进程生命周期内缓存,不主动失效。若 APISIX 实例重启并切换了配置,需重启 MCP 进程。

TLS 证书验证

默认验证 TLS 证书(行为与 httpx 一致)。自签名或内部 CA 环境:

{ "env": { "APISIX_INSECURE": "true" } }

禁用证书验证不安全,生产环境应使用受信任 CA 签发的有效证书。

多协议传输

协议

端点

适用

stdio(默认)

-

本地客户端集成(Claude Code、Cursor 等)

sse

http://<host>:<port>/sse

SSE 传输(已废弃)

streamable-http

http://<host>:<port>/mcp

远程部署 / 多客户端共享

启动示例:

MCP_TRANSPORT=streamable-http \
MCP_HOST=0.0.0.0 MCP_PORT=8000 \
MCP_AUTH_TOKEN=your-strong-token \
APISIX_BASE_URL=http://localhost:9180 \
APISIX_ADMIN_KEY=your-admin-key \
mcp-apisix

接口认证

MCP_AUTH_TOKEN 非空时,HTTP 请求需携带:

Authorization: Bearer <MCP_AUTH_TOKEN>

兼容 X-Auth-Token / X-MCP-Token 请求头。GET /health 免鉴权(容器探活)。

stdio 不经过网络,不做 Token 认证。未设 MCP_AUTH_TOKEN 时 HTTP 接口不鉴权,生产环境务必配置。

MCP Resources

URI

说明

apisix://server-info

客户端探测层状态(响应格式 v2/v3、可用能力清单),非 APISIX 节点运行时信息

会话建立时探测层尚无数据,Resource 返回配置值 + 探测状态"未知";首次调用 Admin API 后探测完成,后续读取返回准确格式。每次读取动态返回,非静态快照。

Stateless HTTP 模式

MCP_STATELESS_HTTP=true:每次请求独立处理,不保留会话状态。适配 Serverless(AWS Lambda、阿里云函数计算)或多副本部署。

MCP_TRANSPORT=streamable-http \
MCP_STATELESS_HTTP=true \
MCP_PORT=8000 \
mcp-apisix

Stateless 模式不支持 SSE 流式响应,每个 HTTP 请求独立完成后返回。

容器化部署

本地构建(Docker)

docker build -t mcp-apisix:latest .

docker run -d --name mcp-apisix -p 8000:8000 \
  -e MCP_TRANSPORT=streamable-http \
  -e MCP_AUTH_TOKEN=your-strong-token \
  -e APISIX_BASE_URL=http://your-apisix-host:9180 \
  -e APISIX_ADMIN_KEY=your-admin-key \
  -e APISIX_READ_ONLY=false \
  mcp-apisix:latest

Docker Compose

cp .env.example .env   # 按需修改
docker compose up -d

docker-compose.yml 已内置:基于 Dockerfile 构建(标记为 mcp-apisix:latest)、/health 健康检查、非 root 用户运行。

跳过本地构建、直接拉取公开镜像:删除 build: 段,只保留 image: ghcr.io/zhouweico/mcp-apisix:latest

使用示例

下面示例均为自然语言提示,AI 助手会自动映射到对应 MCP 工具。

资源查询

列出 APISIX 里所有的路由(只看 id、name、uri)
查看路由 r1 的完整配置
列出所有上游,按名称过滤包含 "user-service" 的
查看消费者 alice 的配置
列出所有全局规则,返回完整配置

语义查询

APISIX 支持哪些插件?按优先级列出来
查看 key-auth 插件的 schema,需要哪些字段
当前 APISIX 实例返回的是 v2 还是 v3 格式?支持引用过滤吗?

配置校验

帮我校验这份路由配置是否符合 schema:
{"uri": "/api/v1/*", "upstream": {"type": "roundrobin", "nodes": {"127.0.0.1:8080": 1}}}

写操作(需 APISIX_READ_ONLY=false

创建一个路由,uri 是 /api/v1/users,转发到 upstream u1
更新路由 r1,把 priority 改成 100
禁用路由 r1
创建一个上游,类型 roundrobin,节点 127.0.0.1:8080 权重 1
更新上游 u1,把超时改成 10 秒
创建一个服务,绑定 upstream u1,开启 key-auth 插件

写操作属破坏性操作,执行前会弹出二次确认。客户端未声明 elicitation 能力时,请求被 SDK 以 -32021 拒绝,工具不会执行。

字段投影

列出所有路由,只返回 id、name、uri、upstream_id 这几个字段
列出路由的完整配置(不要裁剪字段)

labels 为强制保留字段,任何投影都会包含(用于识别资源归属)。

只读模式(APISIX_READ_ONLY=true

写工具在只读模式下不注册,AI 只能执行查询类操作:

只读模式下:帮我禁用路由 r1

AI 会回复该操作不可用,引导用户关闭只读模式或手动处理。

License

MIT

Available Tools

15 tools
apisix_get_consumerA
Read-onlyIdempotent

查询单个消费者的完整配置。凭据字段已脱敏。

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes消费者 username

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context by disclosing that credential fields are masked (凭据字段已脱敏) and that the full configuration is returned. This goes beyond what annotations provide.

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 two short sentences, front-loaded with the core purpose and a security note. Every word contributes value, with no redundancy or filler.

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

Completeness5/5

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

For a simple single-parameter GET-like tool with strong annotations and no output schema, the description adequately covers what the tool does and a key behavioral nuance. It states the resource, scope, and a privacy-relevant detail, which is sufficient for the tool's simplicity.

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 coverage is 100% for the single parameter 'username', and the schema describes it as '消费者 username'. The description does not add additional parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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 uses a specific verb (查询/query) with a clear resource and scope (单个消费者的完整配置/complete configuration of a single consumer). This clearly distinguishes it from sibling tools like apisix_list_consumers and other get_* tools.

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 implies its use case by specifying '单个消费者' (single consumer), which contrasts with list operations. However, it does not explicitly state when-not-to-use or name alternative tools, so it falls short of a 5.

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

apisix_get_plugin_schemaA
Read-onlyIdempotent

查询单个插件的字段定义、类型、必填项、默认值(含 metadata_schema 与 consumer_schema)。

APISIX 插件字段跨版本变化频繁(如 disable 移入 _meta),提供真实 schema 优于硬编码规则。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes插件名称,如 key-auth、proxy-rewrite

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context that the schema is version-sensitive and may differ from expectations (e.g., 'disable' moved into '_meta'), which informs the user about the dynamic nature of the output beyond the static hints.

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 two sentences with no waste. The first sentence states the core function and return content, the second provides rationale for using the tool. Every sentence earns its place, and it is properly front-loaded.

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 simplicity (one parameter, clear purpose) and rich annotations, the description covers the essentials. It does not describe the exact output format, but for this type of query tool, the provided detail is sufficient. It could be slightly more explicit about the response shape, but is not critically incomplete.

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 coverage is 100%, and the parameter description already provides an example ('如 key-auth、proxy-rewrite'). The tool description adds no additional semantic information about the parameter, so the baseline of 3 applies.

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 tool queries a single plugin's schema, listing specific contents (field definitions, types, required fields, defaults, metadata_schema, consumer_schema). This distinguishes it from sibling tools that operate on routes, services, or other resources, making the purpose unmistakable.

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 implicitly explains when to use this tool by noting that APISIX plugin fields vary across versions and that real schema is better than hard-coded rules. This provides clear context for usage, though it does not explicitly name alternative tools or exclusions.

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

apisix_get_routeA
Read-onlyIdempotent

查询单个路由的完整配置(不裁剪、不截断)。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes路由 ID

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the configuration is returned complete without trimming or truncation, which gives useful behavioral context about output fidelity. However, it does not describe errors, authentication, or pagination 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 sentence that immediately states the tool's purpose and a key behavioral guarantee. Every phrase adds value, with no wasted words.

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?

For a simple get tool with one parameter and rich annotations, the description is sufficient. It names the resource, specifies what is returned (complete configuration), and differentiates from list tools. It does not cover error cases, but given the openWorldHint, this is acceptable.

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%, with the 'id' parameter described as '路由 ID' (route ID). The description does not provide additional parameter details beyond the schema, so it meets the baseline of 3 for high schema coverage.

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 uses the verb '查询' (query) and specifies the resource as '单个路由' (single route), clearly distinguishing from sibling list tools like apisix_list_routes and other get tools. The phrase '完整配置(不裁剪、不截断)' further specifies the scope and output property.

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 single route's full configuration, but it does not explicitly state when to prefer this over apisix_list_routes or other get tools. No alternatives are mentioned, so the guidance is implicit rather than explicit.

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

apisix_get_server_infoA
Read-onlyIdempotent

查询客户端探测层状态(响应格式 v2/v3、可用能力清单)。

返回的是 mcp-apisix 客户端对 APISIX 的探测结果,非 APISIX 节点运行时信息 (Admin API 不提供节点信息端点)。告知 AI 当前环境的能力边界, 用于判断分页/过滤/校验等能力是否可用。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable context beyond annotations: the response is from the mcp-apisix client's probe, includes format version and capability list, and explicitly notes the Admin API lacks node info endpoints. This enriches behavioral understanding without contradicting annotations.

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 concise and well-structured: it front-loads the primary purpose, then clarifies what the response is and is not, and ends with the practical usage. Every sentence adds value, with no redundancy or wasted words.

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

Completeness5/5

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

Given no output schema and no parameters, the description carries the full burden of explaining the return value and context. It specifies that the return includes response format v2/v3 and an available capability list, and clarifies it is not runtime info. This is sufficient for an agent to understand and use the tool correctly.

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 tool has zero parameters and schema coverage is 100%, so the baseline is 4. The description does not need to add parameter semantics, and it appropriately focuses on the return value and purpose instead.

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 tool's purpose: '查询客户端探测层状态' (query client detection layer status), specifying it returns response format v2/v3 and a capability list. It distinguishes itself from sibling tools by clarifying it returns MCP client probe results, not APISIX node runtime info, which is a unique scope.

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?

It provides clear when-to-use context: '用于判断分页/过滤/校验等能力是否可用' (used to determine if pagination/filtering/validation capabilities are available). It also states when-not-to-use by explaining it is not APISIX node runtime information. However, it does not explicitly name alternative tools, so it falls short of a 5.

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

apisix_get_serviceA
Read-onlyIdempotent

查询单个服务的完整配置。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes服务 ID

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds 'complete configuration' as return scope, but does not elaborate on behavior beyond that. No contradiction with annotations.

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, compact sentence in Chinese that conveys the core purpose without unnecessary words or repetition. It is well-structured and front-loaded.

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

Completeness5/5

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

For a simple get-by-ID operation, the description, combined with informative annotations and a complete schema, is fully adequate. It states the key outcome (complete config) and no additional 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?

The schema covers 100% of the parameter details, including the 'id' description '服务 ID'. The tool description adds no extra parameter semantics beyond implying the resource type, so the baseline of 3 is appropriate.

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 verb (query), resource (single service), and scope (complete configuration). It distinguishes from siblings like list operations by emphasizing 'single' and 'complete configuration'.

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 usage is implied rather than explicit. It suggests retrieving a single service's config but does not explicitly mention when to use it over listing tools or provide exclusions. No alternative tools are named.

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

apisix_get_upstreamA
Read-onlyIdempotent

查询单个上游的完整配置。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes上游 ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds the context that it returns the '完整配置' (complete configuration), which is useful beyond what annotations state. No additional behavioral details like error handling or permissions are provided, but the annotation coverage lowers the burden.

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, concise sentence in Chinese that is front-loaded with the action and resource. There is no redundant information or filler.

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?

This is a simple read tool with one parameter, strong annotations, and no output schema. The description adequately states the tool's purpose and that it returns the full config. A minor gap is the lack of mention about behavior when the ID does not exist, but overall the description is sufficient for a low-complexity tool.

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 coverage is 100% with the 'id' parameter described as '上游 ID'. The tool description does not add any further meaning beyond the schema, so the baseline of 3 applies as the schema carries the full parameter documentation.

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 queries a single upstream's complete configuration, using the verb '查询' and resource '单个上游'. It distinguishes from list_upstreams by specifying '单个' (single), but does not explicitly differentiate from other get_* siblings in the same family.

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?

Usage is implied: the description says it queries a single upstream, so use this when you need one upstream's config instead of listing all. However, it does not explicitly state when to use this vs alternatives like list_upstreams or get_service, nor provide any exclusion criteria.

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

apisix_list_consumersA
Read-onlyIdempotent

查询消费者列表。凭据字段已脱敏(plugins 子树内的 key/password/secret 等被遮盖)。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read. The description adds the important disclosure that credential fields are masked (plugins subtree), which is beyond annotation and helps set expectations about response data. No contradiction with annotations.

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?

Two concise sentences: first states the action, second provides a critical caveat about masked secrets. No unnecessary words.

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?

For a read-only list tool with well-documented parameters and safety annotations, the description covers the main purpose and an important behavioral note. It doesn't detail return structure or pagination, but the schema handles parameters, making it adequately complete.

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 coverage is 100% with detailed descriptions for all four parameters (page, detail, fields, page_size). The description does not add parameter-specific semantics beyond the schema, so the baseline of 3 applies.

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 '查询消费者列表' (query consumer list), specifying the verb and resource. It distinguishes from sibling tools by targeting the consumer resource specifically, and the masking note adds context without confusing the purpose.

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?

There is no explicit when-to-use guidance or alternatives mentioned. The purpose is implied by the tool name and description, but it doesn't differentiate from apisix_get_consumer or other list tools. Thus it relies on 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.

apisix_list_global_rulesA
Read-onlyIdempotent

查询全局规则列表。有意不提供 get 工具(资源数量少,list 即可获得全部)。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds the context that the resource count is small, which is a mild behavioral insight, but it does not disclose return format or pagination behavior. No contradiction.

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 two short sentences, front-loaded with the main action. Every word contributes to the purpose or design rationale, with no redundancy.

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?

For a simple list tool with rich annotations and fully described schema, the description covers the essential purpose and design rationale. It lacks explicit comparison to other list tools, but that is not critical given the clarity of the resource name.

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 has 100% coverage with descriptions for all four parameters (page, detail, fields, page_size). The description adds no parameter-specific semantics, so the baseline score of 3 applies.

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 directly states '查询全局规则列表' (query global rules list), a specific verb+resource. It also explicitly notes the deliberate absence of a get tool, distinguishing this tool from sibling resources that do have get tools.

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 explains that no get tool is provided because resource count is small and list suffices, implicitly guiding the agent to use this list tool rather than searching for a get tool. However, it does not explicitly compare with other list tools for different resources.

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

apisix_list_plugin_configsB
Read-onlyIdempotent

查询插件配置列表。有意不提供 get 工具。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

B3.1/5.0
Behavior3/5

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

注解已声明 readOnlyHint=true、idempotentHint=true、destructiveHint=false,安全属性清晰。描述补充了'有意不提供 get 工具'这一行为约束,但未披露分页、返回结构等操作细节,在注解基础上增益有限。

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?

描述非常简短,第一句直接点明用途,第二句虽简短但信息有些含糊('有意不提供 get 工具')。整体无冗余,但第二句价值有限,且结构上未按重要性排序。

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?

缺少输出 schema,描述未说明返回格式、分页行为、插件配置的具体含义,也未与 list_plugins 等相区分。对于带分页的列表工具,仅靠当前描述和注解不足以让代理完整理解工具边界和调用结果。

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=100%,按规则基线为3。描述文本未额外说明参数用法或补充语义,因此不超过基线。

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?

描述明确说明'查询插件配置列表',动词+资源清晰,但未与同类列表工具(如 list_routes、list_services)区分。第二句'有意不提供 get 工具'虽提供背景,但主要传达的是没有单独获取工具的意图,对用途本身帮助有限。

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?

描述没有说明何时使用此工具或与其他工具的替代关系。仅提到没有 get 工具,暗示此列表是唯一获取方式,但未明确给出使用场景、前提条件或排除条件,缺乏实际指导。

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

apisix_list_pluginsA
Read-onlyIdempotent

查询插件名列表(按 priority 降序,不含 schema)。

需要字段定义时另调 apisix_get_plugin_schema。

ParametersJSON Schema
NameRequiredDescriptionDefault
subsystemNo子系统:http(默认)或 stream,其他值服务端返回 400http

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral details beyond annotations: the list is sorted by priority descending and does not include schema. This provides useful context without contradicting annotations.

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 two short, front-loaded sentences with no wasted words. It directly states the core function and the key exception (no schema) in the first sentence, and the usage pointer in the second.

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?

The description is adequate for a simple listing tool: it specifies the output (plugin names), ordering, and what is excluded, and references the schema tool. It doesn't mention response format or pagination, but the tool is simple enough and annotations are rich. A slight gap is that it doesn't mention the optional subsystem filter, but the schema covers that.

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% for the single optional parameter, so the schema fully documents the subsystem parameter. The tool description adds no additional parameter semantics, but it doesn't need to since the schema is comprehensive. Baseline 3 is appropriate.

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 tool queries a list of plugin names, sorted by priority descending and excluding schema. It also distinguishes itself from the sibling tool apisix_get_plugin_schema by noting that schema should be retrieved separately.

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 explicitly says '需要字段定义时另调 apisix_get_plugin_schema', providing a direct alternative when schema definitions are needed. This clearly guides when to use this tool versus the schema tool.

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

apisix_list_routesA
Read-onlyIdempotent

查询路由列表。

支持按 name / uri / label 过滤(v3 格式原生支持),以及 service_id / upstream_id 引用过滤(需 APISIX ≥3.13)。v2 格式下过滤参数被静默忽略,返回结果中会显式告知。

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo按 uri 过滤(v3 格式生效)
nameNo按 name 过滤(v3 格式生效)
pageNo页码,从 1 开始
labelNo按 label 过滤(v3 格式生效)
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组),覆盖默认投影;detail=true 时忽略
page_sizeNo每页条数,有效区间 [10, 500]
service_idNo按 service_id 过滤(引用过滤,≥3.13)
upstream_idNo按 upstream_id 过滤(引用过滤,≥3.13)

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context: in v2 format, filter parameters are silently ignored, and the return result will explicitly indicate this. It also notes that service_id/upstream_id filtering requires APISIX ≥3.13, which is non-obvious and beyond what annotations or the schema convey.

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 concise and well-structured: a one-line core purpose, followed by filtering capabilities and a critical version caveat. Every sentence adds value with no fluff or redundancy, and essential information is front-loaded.

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?

For a list tool with 9 optional parameters and no output schema, the description covers the primary purpose, filtering options, version constraints, and a key edge case about v2 behavior. It does not describe the return format, but pagination and projection parameters are documented in the schema, and the read-only nature is clear from annotations and description.

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 across all 9 parameters, so the schema already documents each parameter clearly. The description synthesizes the filter parameters into logical groups (v3 native vs reference filtering) and adds the v2 caveat, but this does not significantly extend the per-parameter meaning.

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 opens with '查询路由列表' (query route list), clearly identifying the action (list) and resource (routes). It goes beyond a generic statement by enumerating supported filter criteria and version-specific behavior, which distinguishes it from sibling tools like apisix_get_route that retrieve a single route.

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 by stating the tool lists routes and supports various filters, but it does not explicitly compare with alternatives or state when to prefer this over apisix_get_route. It does provide a version constraint for reference filtering, which offers some guidance, but no explicit exclusions.

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

apisix_list_servicesC
Read-onlyIdempotent

查询服务列表。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

C2.9/5.0
Behavior2/5

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

The description discloses no behavioral traits beyond what annotations already provide. Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint=false. The description only repeats that it is a query operation, adding no context about pagination behavior, default page size, or response format. Since the description contributes nothing beyond annotations, transparency is low.

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 short sentence with no unnecessary words. It is appropriately sized for the minimal information it conveys, though it could be more informative. There is no wasted content, structure, or redundancy.

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 4 parameters, pagination, field selection, and no output schema, the one-sentence description is insufficient. It does not explain what the response contains, how pagination works, or how to use the detail/fields parameters effectively. The schema helps but the description should provide at least a minimal overview of behavior.

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% coverage with descriptive parameter fields (page, detail, fields, page_size), each with clear Chinese descriptions. The tool description does not add any parameter-level meaning, but the schema fully carries that burden. Baseline 3 is appropriate.

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 (query) and resource (service list), which aligns with the tool name. However, it does not add any scope or differentiation from sibling list tools like apisix_list_routes or apisix_list_upstreams, so it stops short of 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?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, filters, or scenarios where apisix_get_service would be more appropriate. The description is a bare statement of what it does, not when to use it.

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

apisix_list_stream_routesA
Read-onlyIdempotent

查询流路由列表。有意不提供 get 工具。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds the behavioral nuance that no get tool exists, which is useful context about how to retrieve stream route details. It does not describe pagination or response format, but annotations cover the safety aspects.

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 sentence with two clauses, each providing distinct value: the primary purpose and a key usage caveat. No filler words or redundant information.

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 moderate complexity (4 params, all documented, no output schema), the description provides the crucial missing context that no get tool exists. This makes the tool self-explanatory for a list operation, though it could mention response format or pagination defaults if those were non-obvious.

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?

All four parameters have descriptions in the schema (100% coverage), so the schema carries the parameter semantics. The description adds no extra parameter guidance, leaving the baseline 3 appropriate.

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 states '查询流路由列表' (query stream route list), a specific verb and resource. It also distinguishes from siblings by mentioning the intentional absence of a get tool, clarifying this is the list operation for stream routes.

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 phrase '有意不提供 get 工具' communicates that there is no get-tool alternative for stream routes, implying this list tool is the primary way to access them. This gives clear context but doesn't explicitly exclude cases where sibling list tools might be more appropriate.

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

apisix_list_upstreamsC
Read-onlyIdempotent

查询上游列表。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码,从 1 开始
detailNo返回完整配置(跳过投影)
fieldsNo指定字段(JSON 数组)
page_sizeNo每页条数,有效区间 [10, 500]

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds no behavioral context beyond the basic query operation. It does not contradict the annotations, but it also does not disclose any additional traits such as pagination behavior or projection semantics.

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

Conciseness3/5

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

The description is a single short sentence, which is concise. However, it merely restates the title and adds no substantive information, so it doesn't fully earn its place. It is not overlong, but it could be more informative while staying concise.

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?

For a list tool with 4 optional parameters and no output schema, the description is incomplete. It doesn't mention pagination, return format, or any behaviors beyond 'query list'. The schema covers parameters, but since there is no output schema, the description should provide some indication of the response structure. This is a clear gap.

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 baseline is 3. The description itself provides no parameter-specific information, but the schema fully documents page, detail, fields, and page_size with default values and constraints.

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 specifies the action (query) and resource (upstream list). It distinguishes the tool from get_upstream by indicating list semantics and from other resource-specific list tools by naming the resource. However, it is effectively a restatement of the tool name and title, lacking additional qualifiers or scope details that would fully differentiate it from sibling list tools.

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. There is no mention of prerequisites, exclusions, or comparisons to sibling tools. The sibling tool names appear only in the context signals, not in the description itself.

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

apisix_validate_resource_configA
Read-onlyIdempotent

校验资源配置是否符合 JSON schema(需 APISIX ≥3.5)。

仅校验 JSON schema,不校验引用存在性与插件配置合法性。 通过不代表写入必定成功。<3.5 实例上优雅降级。

ParametersJSON Schema
NameRequiredDescriptionDefault
configYes待提交的资源配置体(JSON object),符合对应资源的 JSON schema
resourceYes资源类型:routes / upstreams / services 等

TDQS

A4.4/5.0
Behavior5/5

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

注释已声明 readOnlyHint/openWorldHint/idempotentHint/destructiveHint,描述额外提供了版本要求(≥3.5)、校验范围限制(不校验引用存在性与插件配置合法性)、通过不代表写入成功,以及 <3.5 优雅降级的行为。这些信息远超注释本身,显著增强行为透明度,且无矛盾。

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?

描述仅 3 句话,首句即点明核心功能,第二、三句提供必要限制和版本行为,无冗余或重复信息,结构紧凑且重点前置。

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?

工具简单且参数完备,注释丰富。描述涵盖了版本要求、校验范围和降级行为,但未说明具体返回值(如成功/失败如何表示)及降级时的确切表现,略有欠缺,但整体足以指导使用。

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 中两个参数(resource、config)均有详细描述,覆盖率达 100%。描述虽提到'资源配置',但未在 schema 基础上增加额外参数级语义,因此按基线给予 3 分。

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?

明确说明工具用于校验资源配置是否符合 JSON schema,动词(校验)+ 对象(资源配置)+ 标准(JSON schema)清晰。与兄弟工具的 get/list 操作区分明显,具有唯一性。

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?

描述隐含使用场景(提交资源配置前进行预校验),并通过'仅校验 JSON schema,不校验引用存在性与插件配置合法性'和'通过不代表写入必定成功'提示了边界。虽然未显式说明何时使用 vs 替代工具,但兄弟工具均无校验功能,上下文足够清晰。

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. 15 tool updatesv0.1.0
    • First observedapisix_get_consumer
    • First observedapisix_get_plugin_schema
    • First observedapisix_get_route
    • First observedapisix_get_server_info
    • First observedapisix_get_service
    • First observedapisix_get_upstream
    • First observedapisix_list_consumers
    • First observedapisix_list_global_rules
    • First observedapisix_list_plugin_configs
    • First observedapisix_list_plugins
    • First observedapisix_list_routes
    • First observedapisix_list_services
    • First observedapisix_list_stream_routes
    • First observedapisix_list_upstreams
    • First observedapisix_validate_resource_config

TDQS

A3.9/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct resource type (route, service, upstream, consumer, etc.) and a distinct action (get, list, validate). Even similar list tools like apisix_list_routes and apisix_list_stream_routes are clearly differentiated by resource type and descriptions.

Naming Consistency5/5

All tools follow the consistent pattern apisix_<verb>_<resource>, with verbs limited to get, list, and validate. Naming is uniform snake_case with no mixed conventions, making the toolset highly predictable.

Tool Count5/5

With 15 tools, the server sits at the top of the ideal 3-15 range. Each tool corresponds to a meaningful APISIX resource or capability, and none feel redundant or out of scope, so the count is well-calibrated.

Completeness4/5

The toolset offers comprehensive read coverage for all major APISIX resources plus schema validation, and intentional omissions are documented. However, there are no create, update, or delete operations, which is a notable gap if full lifecycle management is expected, though consistent with the apparent read-only intent.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers