tools/list
发现智能体提供的所有工具。 请求:工具 Schema
响应中每个工具遵循以下结构:| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 工具唯一标识符 |
description | string | 人类可读的工具功能描述 |
inputSchema | object | 描述工具输入参数的 JSON Schema |
tools/call
调用智能体上的特定工具。 请求:tools/call 参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | tools/list 中的工具名称 |
arguments | object | 是 | 匹配工具 inputSchema 的参数 |
结果内容类型
result.content 数组可包含:
| 类型 | 说明 |
|---|---|
text | 纯文本结果 |
image | Base64 编码的图片,带 MIME 类型 |
resource | 资源 URI 引用 |
tools/call 原理
底层实现上,tools/call 是一个同步聊天往返:
- MCP Gateway 将工具调用转换为消息并发送给智能体
- 智能体处理工具调用并返回回复
- Gateway 提取回复文本并作为 MCP 内容返回
多轮上下文
默认情况下,每次tools/call 创建一个新的对话上下文。为在多次工具调用间
保持对话上下文,MCP Gateway 按 MCP 规范跟踪 Mcp-Session-Id 头。
同一会话内的调用共享相同的对话上下文,使智能体可以访问之前的对话历史。
超时
tools/call 的默认超时为 60 秒。如果智能体在此窗口内未回复,
Gateway 返回 JSON-RPC 错误:
错误处理
| 错误码 | 含义 |
|---|---|
-32601 | 工具未找到(检查 tools/list) |
-32602 | 参数无效(检查 inputSchema) |
-32003 | 智能体超时 |
-32603 | 内部错误 |