ibm-mq-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ibm-mq-mcpList all local queues and their current depth on QM1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ibm-mq-mcp
把 IBM MQ 的 REST API 暴露成 LLM 可调用的 MCP 工具的服务器。
1. 项目简介
本项目仿造 IBM 官方示例 ibm-messaging/mq-mcp-server, 把 IBM MQ 的管理与消息 REST API 包装成 MCP (Model Context Protocol)工具,供支持 MCP 的 LLM 客户端(如 Claude Code)直接调用。
原版是一个约 110 行的单文件示例,只暴露 dspmq / runmqsc 两个工具,配置全部硬编码,
错误一律返回 "Something went wrong!"。本项目在保留其「REST API → MCP 工具」核心思路的
前提下做了产品化改造:
工具数从 2 个扩展到 15 个,覆盖队列管理器、MQSC、对象查询、消息收发四类;
配置支持 CLI 参数 / 环境变量 / 默认值三级优先级,不再硬编码;
区分管理 API 与消息 API 两套凭据(详见下文「两套凭据」一节),这是实测出的真实限制, 原版没有涉及;
错误按四类(HTTP 层、认证、MQSC 业务失败、其他)分别解析,返回具体原因而不是笼统的 失败提示;
提供只读模式,可在生产环境中限制 LLM 只能查询、不能修改 MQ 配置。
所有关于 MQ REST API 行为的结论(见下文「已知限制」)均来自对真实 MQ 9.4.5.1 实例的 逐条探测,不是查文档推测得出的。
Related MCP server: rabbitmq-mcp
2. 快速开始
前提:本机已运行一个 IBM MQ 实例(例如 IBM 官方开发镜像
icr.io/ibm-messaging/mq:9.4.5.1-r1,MQ_DEV=true),mqweb 监听在
https://127.0.0.1:9443。
# 启动 MQ 容器(如果还没有运行)——本项目不负责容器生命周期,按需自行启动,例如:
# docker run --rm -e LICENSE=accept -e MQ_QMGR_NAME=QM1 -e MQ_DEV=true \
# -e MQ_ADMIN_PASSWORD=admin -p 1414:1414 -p 9443:9443 \
# icr.io/ibm-messaging/mq:9.4.5.1-r1方式一:直接从 GitHub 运行(无需克隆)
uvx 会自动拉取源码、在临时环境里装好依赖并运行,用完即弃:
uvx --from git+https://github.com/moonfruit/ibm-mq-mcp ibm-mq-mcp带参数同理,把它们接在命令后面即可:
uvx --from git+https://github.com/moonfruit/ibm-mq-mcp ibm-mq-mcp --read-only想固定到某个版本或分支,在 URL 后加 @<ref>:
uvx --from git+https://github.com/moonfruit/ibm-mq-mcp@main ibm-mq-mcp方式二:克隆后本地运行(要改代码时用这个)
git clone https://github.com/moonfruit/ibm-mq-mcp
cd ibm-mq-mcp
uv sync
uv run ibm-mq-mcp两种方式都以 stdio 传输启动,默认连接 https://127.0.0.1:9443、管理凭据
admin/admin、忽略自签名证书校验。这组默认值正好对应 IBM 官方开发镜像,
连本机开发实例无需任何额外配置。
如果你的
uv配了国内 PyPI 镜像,可能会遇到依赖解析失败(部分镜像同步不及时, 拿不到mcp>=2.1.1)。临时指定官方源即可:UV_DEFAULT_INDEX=https://pypi.org/simple uvx --from git+... ibm-mq-mcp
3. 接入 Claude Code
在 Claude Code 的 MCP 配置中加入。直接引用 GitHub,无需克隆仓库:
{
"mcpServers": {
"ibm-mq": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/moonfruit/ibm-mq-mcp",
"ibm-mq-mcp"
],
"env": {
"MQ_BASE_URL": "https://127.0.0.1:9443",
"MQ_USERNAME": "admin",
"MQ_PASSWORD": "admin",
"MQ_MESSAGING_USERNAME": "app",
"MQ_MESSAGING_PASSWORD": "admin"
}
}
}
}如果已经克隆到本地(比如你要改代码),把 command/args 换成本地路径:
"command": "uv",
"args": ["--directory", "/path/to/ibm-mq-mcp", "run", "ibm-mq-mcp"],想让接进来的服务器只能读、不能改配置也不能销毁消息,在 env 里加
"MQ_READ_ONLY": "true"——此时只注册 10 个只读工具,run_mqsc 与消息写入类工具
根本不会出现在模型的工具列表里。
也可以复制 .env.example 为 .env 并按需修改(本项目不自动加载 .env,
需要配合 direnv 之类的工具或手动 export)。
4. 配置项
配置优先级:CLI 参数 > 环境变量 > 默认值。空字符串环境变量(如 MQ_PASSWORD="")
视为未设置,会回退到默认值,避免被误当作显式的空密码。
配置 | 环境变量 | CLI 参数 | 默认值 |
mqweb 端点 |
|
|
|
管理 API 用户名 |
|
|
|
管理 API 密码 |
|
|
|
消息 API 用户名 |
|
|
|
消息 API 密码 |
|
|
|
证书校验 |
|
|
|
请求超时(秒) |
|
|
|
传输方式 |
|
|
|
监听地址 |
|
|
|
监听端口 |
|
|
|
只读模式 |
|
|
|
日志级别 |
|
|
|
--transport 支持 stdio、streamable-http、sse;stdio 下 --host/--port
不生效。日志一律写到 stderr(stdio 传输下 stdout 被 MCP 协议占用)。
5. 两套凭据——为什么消息工具默认用户名不是 admin
IBM MQ 把管理和消息拆成 MQWebAdmin 与 MQWebUser 两个互不包含的角色:
管理 API(队列管理器查询、MQSC、对象查询)要求 MQWebAdmin 角色;
消息 API(浏览/取走/发送/发布消息)要求 MQWebUser 角色。
实测对真实 MQ 9.4.5.1 实例逐条探测的结果:用 admin:admin 调用消息 API 会返回
403 MQWB0108E——IBM 开发镜像里的 admin 用户只有 MQWebAdmin 角色,没有
MQWebUser 角色。必须换用另一个用户(开发镜像里是 app:admin)才能调用消息 API。
因此本项目的默认值是两套凭据:
管理 API 默认
admin/admin;消息 API 默认
app/admin。
如果只配置了 MQ_USERNAME/MQ_PASSWORD 而不配置 MQ_MESSAGING_USERNAME/
MQ_MESSAGING_PASSWORD,消息类工具(browse_message、get_message、
put_message、publish_message)大概率会在真实环境中因权限不足而失败——这不是
本项目的 bug,是 MQ 权限模型的设计如此。
6. 工具清单
只读工具(10 个,--read-only 模式下依然可用)
工具 | 用途 |
| 列出 mqweb 服务器上的队列管理器及其运行状态 |
| 查询单个队列管理器的完整属性与运行状态 |
| 查询 IBM MQ 的安装名称、版本与平台 |
| 列出队列及其当前深度(按类型过滤:本地/别名/远程/模型) |
| 查询单个队列的全部属性,包含当前深度 |
| 列出通道及其定义 |
| 查询单个通道的定义,可选附带运行状态 |
| 列出订阅 |
| 列出主题对象 |
| 浏览队列上的第一条消息,不移除它 |
会改变状态的工具(5 个,--read-only 模式下不注册)
工具 | 用途 |
| 对指定队列管理器执行一条纯文本 MQSC 命令(可执行任意命令,包括修改/删除) |
| 以结构化形式执行 MQSC 命令,返回 JSON(同样可执行修改/删除) |
| 取走队列上的第一条消息,消息会从队列中被移除,无法撤销 |
| 向队列发送一条文本消息 |
| 向主题发布一条文本消息 |
对象查询(list_queues/get_queue/list_channels/get_channel/
list_subscriptions/list_topics)统一通过 MQSC 的 runCommandJSON 实现,
而不是走 REST 资源路径,原因见下文「已知限制」第 3 条。
7. 安全提示
默认忽略服务器证书校验(
MQ_VERIFY_SSL=false)。这是为了适配开发镜像的自签名 证书,开箱即用。生产环境应显式开启--verify-ssl(或MQ_VERIFY_SSL=true), 否则连接可能被中间人劫持。默认凭据
admin/admin属于 MQWebAdmin 角色,具备完整管理权限。把本服务器接入 LLM 意味着模型可以调用run_mqsc/run_mqsc_json执行任意 MQSC 命令,包括DELETE QLOCAL、STOP CHANNEL等破坏性操作——这不是理论风险,是这两个工具的 设计使然。生产环境建议改用只读账号,并在启动时加
--read-only(或MQ_READ_ONLY=true)。只读模式下服务器只注册上述 10 个只读工具,run_mqsc、run_mqsc_json、get_message、put_message、publish_message根本不会出现 在 LLM 可见的工具列表里,而不是注册后再依赖权限报错——即便 LLM 尝试调用也无从 下手。
8. 已知限制
以下结论均对真实 MQ 9.4.5.1 实例逐条实测得出,不是查文档推测的:
browse_message只能看到队首一条消息。MQ 的消息 REST API 没有游标分页, 实测连续 3 次 GET 请求返回的是同一条消息(messageId相同、队列深度不变)。 需要遍历整个队列的场景,请改用原生 MQ 客户端(如pymqi),本项目不支持。对象查询统一走 MQSC,而非 REST 资源路径。
/admin/qmgr/{qm}/queue、/channel、/subscription这几个 REST 资源在 MQ 9.4 的 v3 管理 API 下已被 移除(实测返回404 MQWB0116E),仅在 v1 API 保留。本项目改用runCommandJSON统一实现对象查询,覆盖面更广,对 MQ 版本差异也更不敏感—— 这一实现方式对 z/OS 队列管理器同样适用。GET 是浏览、DELETE 才是取走,这是 MQ 消息 REST API 最反直觉的一点:GET 请求消息但不会从队列移除它,只有 DELETE 才会真正取走并从队列删除。本项目用
browse_/get_两种工具命名前缀加以区分,避免 LLM 误用。MQSC 命令失败时 HTTP 状态码仍是 200,失败信息藏在响应体的
overallCompletionCode与错误详情字段(runCommandJSON用message字段、runCommand用text字段,两者不一致)里。本项目在客户端内部统一解析 为结构化错误,工具返回的文本会包含具体的 MQSC 错误原因。队列为空时 DELETE/GET 返回 204 且无响应体,这不是错误。本项目按状态码而非 响应体是否为空来判断队列是否有消息,避免把「取到一条正文为空的消息」误判为 「队列没有消息」。
9. 开发与测试
uv run ruff check .
uv run ruff format --check .
uv run pytest -v # 单元测试,默认跳过需要真实 MQ 实例的集成测试
uv run pytest -m integration -v # 集成测试,需要本机有可访问的真实 MQ 实例Available Tools
15 toolsbrowse_messageARead-onlyIdempotent
浏览队列上的第一条消息,不会移除它。
受 MQ REST API 限制,一次只能看到队首那一条:该接口没有游标分页, 连续调用会反复返回同一条消息。需要遍历整个队列请改用原生 MQ 客户端。 要取走消息(并从队列移除)请用 get_message。
Args: qmgr: 队列管理器名称,例如 QM1 queue: 队列名称,例如 DEV.QUEUE.1
| Name | Required | Description | Default |
|---|---|---|---|
| qmgr | Yes | ||
| queue | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses a key behavioral trait: the API has no cursor pagination, so consecutive calls return the same first message. This is valuable context that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight and well-structured: purpose first, then limitations and alternatives, then parameter documentation. Every sentence carries meaningful information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers all essential operational aspects: what it does, its restrictions, how it differs from alternatives, and what the two parameters mean. No meaningful gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does by naming both parameters and providing realistic examples (QM1, DEV.QUEUE.1), adding meaning beyond the bare schema titles. It could have included more detail, but for two required string parameters the examples are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: browse the first message on a queue without removing it. It differentiates from the sibling get_message by explicitly noting that get_message is for taking the message and removing it from the queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when not to use this tool: for iterating an entire queue, use a native MQ client instead; to remove a message, use get_message. It also highlights the REST API limitation of no cursor pagination and repeated results, which directly informs the agent's decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channelARead-onlyIdempotent
查询单个通道的定义,可选附带运行状态。
Args: qmgr: 队列管理器名称,例如 QM1 name: 通道名称,例如 DEV.APP.SVRCONN include_status: 为 true 时额外查询 CHSTATUS(通道未运行时该查询会返回错误)。 查询失败时 status 字段是 {"error": "..."},而不是错误文本字符串—— 无论成功失败,status 字段始终是对象,便于解析。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| qmgr | Yes | ||
| include_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds meaningful behavioral detail: include_status triggers a CHSTATUS query that may error if the channel is not running, and the status field is always an object (including on failure) for easier parsing. This goes beyond annotations and helps the agent anticipate edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: a one-sentence purpose summary followed by a clear Args list. Each line earns its place, and the include_status explanation, while detailed, is necessary for correct use. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and clear parameter descriptions, the tool is fully specified for correct invocation. The description covers parameter meanings, optional behavior, and a critical parsing guarantee. Nothing essential is missing for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains all three parameters, provides concrete examples for qmgr and name, and details the include_status behavior including its failure semantics. This gives the agent full understanding beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (查询/query) on a specific resource (单个通道的定义/single channel definition), and notes an optional extension (附带运行状态). It distinguishes from siblings like list_channels by emphasizing 'single', making the selection obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when querying a single channel definition. However, it does not explicitly mention alternatives (e.g., list_channels for listing or get_queue for queues) or state when not to use this tool. The guidance is present but only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_installation_infoARead-onlyIdempotent
查询 IBM MQ 的安装名称、版本与平台。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is well covered. The description adds the returned installation attributes but does not disclose additional behavioral traits such as auth requirements or rate limits. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler; the action and result are front-loaded. This is ideal conciseness for a zero-parameter informational getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema present, and annotations covering safety, the description contains everything essential for correct invocation. Additional alternative guidance would be nice but is not required for this simple query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so there is no parameter semantics burden on the description. The 100% schema coverage and zero-parameter surface make this dimension trivially satisfied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('查询' / query) and a specific resource: IBM MQ installation name, version, and platform. This clearly separates it from sibling tools that target queue managers, queues, channels, topics, or messages. The purpose is unambiguous and not a mere restatement of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided, and no alternative sibling is mentioned. The intended usage is only implied: call this tool when installation-level metadata is needed. This meets the 'implied usage' level but offers no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageADestructive
取走队列上的第一条消息,消息会从队列中被移除,无法撤销。
只想查看内容而不移除,请用 browse_message。
Args: qmgr: 队列管理器名称,例如 QM1 queue: 队列名称,例如 DEV.QUEUE.1
| Name | Required | Description | Default |
|---|---|---|---|
| qmgr | Yes | ||
| queue | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds valuable behavioral context: the operation is irreversible ('无法撤销') and specifically acts on the first message in the queue. This goes beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the key destructive behavior, then the alternative tool, then the parameter explanations. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema and annotations covering safety, the description is complete. It tells the agent what happens, that it is irreversible, and when to use the sibling tool instead. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides the meaning of each parameter ('队列管理器名称', '队列名称') and concrete examples (QM1, DEV.QUEUE.1), which is adequate but does not add deep semantic detail beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('取走') and resource ('队列上的第一条消息'), and clearly explains that the message is removed from the queue. This distinguishes it immediately from browse_message, which is explicitly named as the non-destructive alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides the usage condition: use this tool to consume and remove the first message, and use browse_message when only viewing is desired. This directly routes the agent to the correct sibling tool for the non-destructive case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_queueARead-onlyIdempotent
查询单个队列的全部属性,包含当前深度 curdepth。
Args: qmgr: 队列管理器名称,例如 QM1 name: 队列名称,例如 DEV.QUEUE.1
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| qmgr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds minimal behavioral context by highlighting the returned curdepth field, but does not disclose other behaviors such as error handling or queue-missing scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a one-line summary followed by a compact Args block. Every sentence provides value, with the core purpose front-loaded and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query with two well-described parameters, annotations covering safety, and an output schema available, the description is largely sufficient. The main gap is the lack of explicit routing to sibling tools for listing or other queue operations, but this does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining both parameters with meaningful Chinese descriptions and concrete examples ('QM1', 'DEV.QUEUE.1'). This is exactly what the agent needs to supply correct values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('query') and resource ('a single queue's all attributes'), including the notable 'curdepth' field. It distinguishes itself from list_queues by focusing on a single queue, though it does not explicitly name siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'single queue' versus siblings like list_queues, but there is no explicit statement of when to use this tool instead of alternatives. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_queue_managerARead-onlyIdempotent
查询单个队列管理器的完整属性与运行状态。
Args: qmgr: 队列管理器名称,例如 QM1
| Name | Required | Description | Default |
|---|---|---|---|
| qmgr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds that the tool returns complete properties and runtime status, but does not disclose operational details such as error behavior, default fields, or output format. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one sentence states the tool's purpose, followed by a brief parameter definition. There is no filler or redundant information, so every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup tool with one required parameter, an output schema, and rich annotations, the description is sufficient. It explains what the tool does, what parameter to supply, and the 'single manager' scope, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no description coverage for the parameter, but the description defines 'qmgr' as the queue manager name and gives a concrete example 'QM1'. This adds meaningful semantic guidance beyond the raw schema for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (查询/query) and a specific resource (单个队列管理器/single queue manager), and explicitly states that it returns the complete attributes and runtime status. This clearly distinguishes it from sibling tools like list_queue_managers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear that this tool targets one named queue manager rather than enumerating managers, which gives an agent clear contextual guidance. It does not explicitly name alternatives or provide when-not conditions, but the single-manager scope is sufficient for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsARead-onlyIdempotent
列出通道及其定义。
Args: qmgr: 队列管理器名称,例如 QM1 name: 通道名过滤,支持通配符,例如 DEV.* 或 *
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | * | |
| qmgr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 covered. The description adds minor context by saying the tool returns channel definitions, but it does not disclose additional behavioral traits such as filtering semantics, output format details, or any side effects. With annotations carrying the main burden, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose statement followed by an Args section. Every sentence earns its place, and the parameter explanations are front-loaded and easy to scan. No redundant or filler content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool, the description is largely complete: it states what is listed, names both parameters, and is supported by rich annotations and an output schema. The main gap is the absence of any routing guidance about when to use list_channels versus get_channel or list_queues, which would make the contextual handoff more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does. It explains qmgr as the queue manager name with a concrete example ('QM1') and defines name as a channel-name filter supporting wildcards with examples ('DEV.*' or '*'). This adds meaningful semantic information that the schema lacks and fully clarifies both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action and resource: '列出通道及其定义' (list channels and their definitions). It is specific enough to distinguish from list_queue_managers and list_queues by name, but it does not explicitly contrast itself with sibling tools like get_channel. Thus it meets the threshold for 'clear but no sibling differentiation'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter-level usage details but gives no guidance on when to choose this tool over alternatives such as get_channel or list_queues. It does not state any exclusions or preferred use cases, so the agent is left to infer when this tool is appropriate. This is effectively no usage guidance beyond the basic 'list channels' operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_queue_managersARead-onlyIdempotent
列出 mqweb 服务器上的队列管理器及其运行状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the output includes running status, but it does not disclose other behavioral details such as authentication requirements, rate limits, or error behavior. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with no redundancy. It front-loads the key action and scope, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter simplicity, the presence of an output schema, and read-only annotations, this description fully covers what the tool does and the environment it operates on. No important information is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is fully covered by an empty properties object. According to the baseline for tools with no parameters, there is nothing for the description to add about parameter semantics, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('列出'/'list'), a resource ('queue managers'), a scope ('mqweb server'), and an outcome ('their running status'). This clearly distinguishes it from siblings like get_queue_manager (which targets a single manager) and list_queues (which lists queue objects).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used to list all queue managers on the mqweb server, but it does not explicitly mention when to prefer this tool over alternatives like get_queue_manager, nor does it state any exclusions. Usage guidance is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_queuesARead-onlyIdempotent
列出队列及其当前深度。
Args: qmgr: 队列管理器名称,例如 QM1 name: 队列名过滤,支持通配符,例如 DEV.* 或 * queue_type: 队列类型。qlocal 本地队列(默认)、qalias 别名、qremote 远程、 qmodel 模型队列、queue 表示不限类型
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | * | |
| qmgr | Yes | ||
| queue_type | No | qlocal |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 covered. The description adds that output includes current queue depth, but otherwise discloses no additional behavioral traits such as pagination, ordering, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is stated in a single front-loaded sentence, followed immediately by concise parameter documentation. Every sentence earns its place without redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema, clear annotations, and complete parameter explanations, the description is sufficiently complete for an agent to call the tool correctly. The only notable gap is the lack of explicit guidance about when to prefer this tool over get_queue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter meaning, and it succeeds. It explains qmgr with an example, name with wildcard patterns, and queue_type with each enum value's meaning and the default, adding substantial value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, '列出' (list), and a specific resource, '队列' (queues), while adding the distinct detail that current depth is included. This clearly separates it from sibling tools like list_queue_managers and get_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives filtering guidance through parameters like wildcard support and queue_type, but it does not explicitly say when to use this tool versus alternatives such as get_queue. Usage context is implied by the word 'list' rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsARead-onlyIdempotent
列出订阅。
Args: qmgr: 队列管理器名称,例如 QM1 name: 订阅名过滤,支持通配符,例如 DEV.* 或 *
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | * | |
| qmgr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已经提供了 readOnlyHint=true、destructiveHint=false、idempotentHint=true,描述在注解之外额外披露了 name 参数支持通配符过滤(如 DEV.* 或 *),并借助默认值暗示默认列出全部订阅。由于存在输出 schema,未描述返回结构不算明显缺口。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述非常简短,第一行直接点明功能,随后用两行参数说明覆盖了全部必要信息,没有冗余内容,结构清晰且便于代理快速扫描。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
对于只有 2 个参数、1 个必选参数的简单列表工具,描述已经覆盖了调用所需的全部语义;注解覆盖安全特征,输出 schema 负责返回结构,因此没有明显的信息缺失。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
input schema 中没有属性描述(覆盖率为 0%),描述完全承担了参数说明:qmgr 是队列管理器名称并给出示例 QM1,name 是订阅名过滤条件且支持通配符,并给出 DEV.* 和 * 两个示例。两个参数的含义和格式都得到了清晰交代。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述以明确的动词和资源“列出订阅”说明了工具用途,并结合 qmgr 和 name 参数进一步明确了操作对象是队列管理器中的订阅。但它没有在描述中明确与其他列表类兄弟工具(如 list_queues、list_topics)进行区分,主要依赖工具名称完成区分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述通过参数说明了使用场景:必须提供队列管理器 qmgr,可选择 name 进行通配符过滤,因此隐含了“列出指定队列管理器下订阅”的用法。但描述没有说明何时不应使用本工具、是否存在替代工具,也没有给出明确的使用边界。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsARead-onlyIdempotent
列出主题对象。
Args: qmgr: 队列管理器名称,例如 QM1 name: 主题名过滤,支持通配符,例如 DEV.* 或 *
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | * | |
| qmgr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool as read-only, idempotent, and non-destructive. The description adds the filtering behavior with wildcard support, but does not disclose additional behavioral details such as pagination, result limits, or error conditions. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of one clear sentence followed by a clean Args list. Every line serves a purpose, and the core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema and clear annotations, the description plus schema covers the essential invocation details: required qmgr, optional wildcard name filter, and read-only behavior. It slightly lacks sibling differentiation and explicit output expectations, but the existing schema and annotations fill the major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the documentation burden. It compensates well by explaining both parameters with concrete examples: qmgr is given as 'QM1' and name supports wildcards like 'DEV.*' or '*'. It does not explicitly state that name defaults to '*', though the schema provides that default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action as '列出主题对象' (list topic objects), identifying the specific verb and resource. This distinguishes it from sibling list tools like list_queues and list_subscriptions by naming the exact object type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when the agent needs to enumerate topics under a queue manager, especially with optional name filtering. However, it gives no explicit guidance about when to prefer this tool over alternatives such as list_subscriptions or how to choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_messageA
向主题发布一条文本消息。
Args: qmgr: 队列管理器名称,例如 QM1 topic: 主题字符串,例如 dev/sensor body: 消息正文
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| qmgr | Yes | ||
| topic | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is not read-only, not idempotent, and not destructive, and the description's 'publish' action aligns with those. The description adds that the message is text and targets a topic, but it does not disclose other behavior such as delivery semantics, error conditions, or whether the topic must already exist. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a clean Args block. There is no filler or redundant content; every line adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three required parameters, the description provides enough information to invoke it correctly, and the presence of an output schema means return-value details are not needed. However, it lacks any pointer to how this relates to put_message or other message-writing tools, so the full invocation context is slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description carries the burden of explaining parameters. It does this well by providing each parameter's meaning (queue manager name, topic string, message body) and concrete examples. This is sufficient for an agent to fill in the arguments correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (publish) and a specific resource (a topic), and clarifies that the message is text. It is clear about what the tool does, but it does not explicitly distinguish this from the sibling tool put_message, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool instead of alternatives such as put_message. The description only provides parameter examples; there is no mention of the intended scenario, prerequisites, or exclusions. An agent is left to infer when publish_message is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_messageB
向队列发送一条文本消息。
Args: qmgr: 队列管理器名称,例如 QM1 queue: 队列名称,例如 DEV.QUEUE.1 body: 消息正文
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| qmgr | Yes | ||
| queue | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutation (readOnlyHint=false), non-idempotent, and non-destructive. The description adds only that the message is a text message and targets a queue; it does not disclose behavioral details like whether the queue must already exist, whether the message is appended, or failure behavior. It provides minimal extra context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, followed by a terse parameter list. Every line provides useful information, with no filler or redundancy. The structure makes the purpose and parameters immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with an output schema and annotations covering mutation safety, the description adequately covers the action and all required parameters. It is mostly complete, but lacks guidance on when to use it instead of publish_message, and does not note any prerequisites such as the queue existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates by explaining each parameter in the Args section with concrete examples: qmgr as queue manager name (QM1), queue as queue name (DEV.QUEUE.1), and body as message body. This adds meaning the schema properties lack, though it omits constraints or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: '向队列发送一条文本消息' (send a text message to a queue), clearly defining the operation. It also clarifies the message type. However, it does not distinguish this tool from the sibling publish_message, which may also involve sending messages, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as publish_message, browse_message, or get_message. There is no mention of exclusions, prerequisites, or contexts where a different sibling should be chosen. Usage must be inferred entirely from the generic action described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_mqscADestructive
对指定队列管理器执行一条纯文本 MQSC 命令。
可执行任意 MQSC,包括修改和删除类命令(如 DELETE QLOCAL、STOP CHANNEL), 请谨慎使用。只需要查询时,优先用 list_queues / get_queue 等专用工具。
Args: qmgr: 队列管理器名称,例如 QM1 mqsc_command: MQSC 命令,例如 DISPLAY QLOCAL(DEV.QUEUE.1) CURDEPTH
| Name | Required | Description | Default |
|---|---|---|---|
| qmgr | Yes | ||
| mqsc_command | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and not read-only; the description reinforces this by stating it can run modifications/deletions and advising caution. It adds valuable context that arbitrary commands are allowed and gives concrete harmful examples, which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: purpose, caution, usage guidance, then parameter definitions. Every sentence earns its place, and the most important safety information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two simple parameters, an output schema, and safety annotations, the description provides all essential guidance: what it does, how to invoke it, what risks exist, and when to choose a different tool. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself has 0% description coverage, but the description compensates with an Args section defining qmgr and mqsc_command, including realistic examples for each. This is sufficient for two simple parameters, though no additional constraints or formats are specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: executes a plain-text MQSC command against a specified queue manager. It provides concrete examples (DISPLAY, DELETE QLOCAL, STOP CHANNEL) and positions itself against dedicated query tools, making its role unambiguous and distinct from siblings like list_queues/get_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly warns that arbitrary MQSC can be executed, including destructive commands, and tells the agent to prefer list_queues/get_queue when only querying is needed. This gives clear when-to-use and when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_mqsc_jsonADestructive
以结构化形式执行 MQSC 命令,返回 JSON 而非文本,便于精确解析。
与 run_mqsc 危险性相同:可执行任意 MQSC,包括 command="delete" / "alter" 等修改和删除类命令(如 DELETE QLOCAL 的结构化等价物), 请谨慎使用。只需要查询时,优先用 list_queues / get_queue / list_channels 等专用工具。
Args: qmgr: 队列管理器名称,例如 QM1 command: 动词,如 display / define / alter / delete qualifier: 对象类型,如 qlocal / channel / sub / topic name: 对象名称,支持通配符 *,例如 DEV.QUEUE.1 parameters: 命令参数,例如 {"descr": "订单队列"} response_parameters: 只返回这些属性,例如 ["curdepth"]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| qmgr | Yes | ||
| command | Yes | ||
| qualifier | Yes | ||
| parameters | No | ||
| response_parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds meaningful behavioral context: it can execute arbitrary MQSC, including delete/alter commands, names DELETE QLOCAL as an example, and cautions careful use. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose, safety warning, alternative guidance, then a clean Args list. Every sentence adds value; no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, general-purpose tool with 6 parameters, it covers the risk profile, alternatives, and all parameters; the output schema accounts for return values. Nothing essential prevents an agent from invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, but the Args section defines all six parameters with concrete examples: qmgr=QM1, command=display/define/alter/delete, qualifier=qlocal/channel/sub/topic, name supports wildcards, parameters as JSON object, response_parameters as attribute list. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('执行 MQSC 命令'), resource (MQSC commands), and key differentiator: returns JSON rather than text. This immediately distinguishes it from the sibling run_mqsc and the specialized list/get tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when not to use it: for read-only queries, prefer list_queues/get_queue/list_channels etc., and warns it is destructive like run_mqsc. However, it does not explicitly state when to choose run_mqsc_json over run_mqsc, relying on the first sentence's JSON-differentiator.
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. Dates show when Glama detected each change.
15 tool updates
v0.1.0- First observed
browse_message - First observed
get_channel - First observed
get_installation_info - First observed
get_message - First observed
get_queue - First observed
get_queue_manager - First observed
list_channels - First observed
list_queue_managers - First observed
list_queues - First observed
list_subscriptions - First observed
list_topics - First observed
publish_message - First observed
put_message - First observed
run_mqsc - First observed
run_mqsc_json
TDQS
Most tools cleanly separate list/get operations for each resource and message actions are clearly distinct. The main overlap is run_mqsc vs run_mqsc_json, which both execute MQSC but differ by output format and argument style; their descriptions mitigate but do not eliminate potential misselection.
All tools use consistent snake_case verb_noun naming: list_* for enumerations, get_* for single-object retrievals, and action_message for messaging operations. The run_mqsc / run_mqsc_json pair follows a clear pattern with a format suffix.
15 tools form a well-scoped administration and messaging surface for IBM MQ: resource queries, message operations, and a generic MQSC escape hatch. Every tool serves a plausible purpose without bloat.
The domain is broadly covered: queue managers, queues, channels, subscriptions, topics, messages, and installation info all have query tools, with message put/get/publish/browse operations present. Minor gaps exist—no dedicated get_subscription or get_topic, no direct create/update/delete tools, and browse_message lacks pagination—but run_mqsc fills most gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP-Native LLM Orchestration Agent
LLM Orchestration Agent (Mcp)
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
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.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables AI agents to integrate with IBM Business Automation Workflow by exposing workflow REST services as MCP tools, allowing natural language interaction with business automation capabilities.10Apache 2.0- AlicenseNot gradedqualityBmaintenanceEnables LLM agents to manage RabbitMQ queues, exchanges, and shovels via MCP tools, with restricted mode for production environments.Apache 2.0
- FlicenseNot gradedqualityDmaintenanceExposes any REST API as MCP tools, enabling AI agents to discover and call existing HTTP endpoints without modifying the original API.-
- AlicenseCqualityCmaintenanceEnables AI assistants to manage ActiveMQ message brokers through MCP tools, supporting queue and topic operations, dynamic connection management, message browsing, and health monitoring.22151MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/moonfruit/ibm-mq-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server