MCP Builder:构建 MCP 服务
为什么选择: 指导把外部 API 封装为可发现、描述清楚且经过验证的 MCP 工具。
何时不适用: 仅调用现有只读查询时,不要重建服务器。
Skill 提供可复用说明;MCP 暴露服务端资源或可调用工具。按任务需要指导、只读事实还是动作来选择。
Skill 提供可复用说明;MCP 暴露服务端资源或可调用工具。按任务需要指导、只读事实还是动作来选择。 契约:inventory_lookup(sku) 返回整数 quantity 和 UTC as_of。A-17=8,B-04=0。查询数量不构成写入授权的理由。
Skill 提供可复用说明;MCP 暴露服务端资源或可调用工具。按任务需要指导、只读事实还是动作来选择。
契约:inventory_lookup(sku) 返回整数 quantity 和 UTC as_of。A-17=8,B-04=0。查询数量不构成写入授权的理由。
检查服务身份、授权范围、结构和错误行为。拒绝未知参数与过期结果;不能把错误转成库存为零。
用示例输入对照输出和验收规则。
请按下方虚构契约审阅两个只读库存样例。数量 0 也必须保留;每条结果都带有样例时间。
tool: inventory_lookup(sku: string)
returns: {sku: string, quantity: integer, as_of: UTC timestamp}
required_params: ["sku:string"]
sample_results:
- {sku: "A-17", quantity: 8, as_of: "2026-10-15T09:00:00Z"}
- {sku: "B-04", quantity: 0, as_of: "2026-10-15T09:00:00Z"}
rejection_rule: reject unknown fields审阅只读契约。返回 JSON 顶层字段 tool_name、read_only、required_params、sample_results、rejection_rule;sample_results 中每条记录保留 as_of 时间戳。不要调用服务器或声称库存实时。
{
"tool_name": "inventory_lookup",
"read_only": true,
"required_params": [
"sku:string"
],
"sample_results": [
{
"sku": "A-17",
"quantity": 8,
"as_of": "2026-10-15T09:00:00Z"
},
{
"sku": "B-04",
"quantity": 0,
"as_of": "2026-10-15T09:00:00Z"
}
],
"rejection_rule": "reject unknown fields"
}为什么选择: 指导把外部 API 封装为可发现、描述清楚且经过验证的 MCP 工具。
何时不适用: 仅调用现有只读查询时,不要重建服务器。
为什么选择: 公开一个范围受限的查询工具,让MCP客户端读取应用数据而不能修改数据。
何时不适用: 它不能完成库存更新;本例有意不包含写入操作。
为什么选择: 在把远程MCP工具提供给Agent前检查名称、描述、schema、权限和副作用。
何时不适用: 客户端尚无服务器可审阅时,应先看服务端实现资料。
为什么选择: 区分可重试、输入拒绝和内部故障,并保证错误不泄露服务端秘密。
何时不适用: 读取静态资源不需要可调用工具的错误契约。
为什么选择: 把文档作为稳定URI资源公开,使客户端能发现并读取内容而不获得写权限。
何时不适用: 此 SOP 讲稳定文档资源。本例选择查询工具,是因为库存会变化且需要新的 as_of 时间;这是本任务的选择,不是协议禁止动态资源。
为什么选择: 把窄范围应用函数暴露为有明确参数契约的工具,并验证调用输入。
何时不适用: 若任务只读 Skill 或静态资源,就不需要工具参数结构。