Reality → Model · 工具读取同一公开数据
MCP 是公开 REST 的只读适配层。机器人、企业、状态和展会工具共享现有读模型;工具名不赋予修改事实、采购或运维权限。
Interface · 连接与发现
端点:POST https://www.aiman.world/mcp,Content-Type: application/json,无需登录。实现为 Streamable HTTP 的无状态 JSON-RPC 子集:响应为 JSON,不提供 SSE;GET /mcp 返回 405 和 Allow: POST。
依次 POST 以下请求体。先初始化,再获取当前工具及 schema,最后调用工具;无需猜测或硬编码工具数量。
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"robotics-reader","version":"1.0"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_robots","arguments":{"query":"G1","limit":5}}}
可直接运行工具发现:
curl -fsS https://www.aiman.world/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
initialize 返回协商后的 protocolVersion,当前支持 2024-11-05、2025-03-26、2025-06-18;请求其他版本会返回最新支持版本,客户端需确认兼容。还支持 ping、通知与批量 JSON-RPC;通知无正文,HTTP 202。未实现的方法(例如 resources/list)返回 -32601。
Strict validation · 三层错误
| 层 | 信号 | 含义 |
|---|---|---|
| JSON 解码 | HTTP 400,error.code: -32700 | 请求体不是合法 JSON |
| 方法 / 参数 | error.code: -32601 / -32602 | 未知方法;未知工具、未知参数、缺必填项或顶层类型错误 |
| 工具执行 | result.isError: true | 参数业务约束或上游读取失败;HTTP 200 不代表业务成功 |
所有工具的 inputSchema.additionalProperties 为 false。可选参数的 null 视为未提供;必填参数为 null 会失败。当前校验检查必填项、未知键与顶层类型,不是完整 JSON Schema 校验器;数组元素、业务取值及数量边界仍以工具实际行为为准。部分 limit 会被夹到支持范围。
例如给 search_robots 传 keyword 会得到 -32602,不会发起无过滤的默认查询。compare_robots 要求 2–5 个 ID / slug;数量不符属于工具错误。
成功工具结果放在 result.content 的 text 中,当前由工具序列化为 JSON 字符串。上游 404 会作为工具错误返回,text 可解析出 code: NOT_FOUND;其他错误文本不保证是 JSON。compare_robots 允许局部失败,必须逐项检查 robots[*].error,不能只看顶层 isError。
Agent behavior · 发现后再调用
工具返回的 readOnlyHint 是行为注解。event.* 指展会届次观察与声明,不是通用产业 Event CRUD。部件目前经 REST 读取,不能因为文档提到 Parts 就调用不存在的 MCP 部件工具。
身份、Unknown 与证据规则集中在 Agent Guide;REST 差异见 API 文档。
下面的工具与 schema 直接取自本版本 MCP 的工具定义。连接远端服务时,以该端点实时 tools/list 返回为准。