799 字
约 2 分钟
8
S21-B05 · MCP:模型上下文协议

适用读者:想让"任何工具"都能接给"任何模型"的人。
前置:S21-B03。
实测环境:本地构造 JSON-RPC 2.0 报文验证(2026-11-05)。
覆盖旧文:1952(408) 714(361) 716(339) + MCP 10 卡 = 2,277 点。
覆盖扩展:E-S21-006(stdio vs Streamable HTTP)。
上一篇:S21-B04 · Skills:工具的组合与复用
下一篇:S21-B06 · 记忆与状态。


1. 一句话结论

MCP 是"工具的 USB 接口":用 JSON-RPC 2.0 规定客户端与服务端怎么握手、怎么列工具、怎么调用。它不定义工具有哪些,只定义"怎么接"。

Host(IDE/Agent)
  └─ MCP Client ──JSON-RPC──> MCP Server A(文件系统)
                  ──JSON-RPC──> MCP Server B(数据库)

2. 三个核心方法(实测报文)

① 握手 initialize

→ {"jsonrpc":"2.0","id":1,"method":"initialize",
   "params":{"protocolVersion":"2025-06-18","capabilities":{}}}
← {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18",
   "capabilities":{"tools":{}},"serverInfo":{"name":"demo-server","version":"0.1"}}}

② 列工具 tools/list

← {"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"read_file",
   "description":"读取指定路径的文本文件",
   "inputSchema":{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]}}]}}

③ 调工具 tools/call

→ {"jsonrpc":"2.0","id":3,"method":"tools/call",
   "params":{"name":"read_file","arguments":{"path":"/etc/hostname"}}}
← {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"..."}]}}

3. 错误处理:必须区分"参数错"与"方法不存在"(实测)

← {"jsonrpc":"2.0","id":4,"error":{"code":-32602,"message":"missing required argument: path"}}
← {"jsonrpc":"2.0","id":5,"error":{"code":-32601,"message":"method not found"}}
码 含义 对 Agent 的意义
-32602 参数无效 模型可自我修正(补参数重试)
-32601 方法不存在 别重试(工具没注册)
-32603 内部错误 可重试但要限次

"为什么要区分":如果所有错误都返回同一码,Agent 会无限重试同一个错误——这与 S21-B02 的"步数上限"是配套的。


4. 两种传输(E-S21-006)

传输 场景 特点
stdio 本地进程 简单、零网络配置
Streamable HTTP 远程/多客户端 可鉴权、可水平扩展
判据 选
工具在本机、单用户 stdio
工具在远端、多用户/多租户 Streamable HTTP
需要审计与限流 HTTP(网关层,S17-B04)

5. 安全边界

风险 防护
工具可执行任意命令 最小权限 + 沙箱(J01)
提示词注入诱导越权调用 参数校验 + 审批(A02)
服务端不可信 工具白名单 + 只读默认

6. 五个误区

误区 真相
"MCP 定义了工具清单" 只定义协议
"MCP 只有 stdio" 还有 Streamable HTTP
"错误码都一样就行" 影响 Agent 是否重试
"MCP 能替代 Skill" Skill 是能力包,MCP 是传输
"接上 MCP 就安全" 需最小权限与沙箱

7. 自检

  1. MCP 的三个核心方法?
  2. -32602 与 -32601 对 Agent 的差别?
  3. stdio 与 HTTP 传输怎么选?
  4. MCP 与 Skill 的关系?
  5. 接上 MCP 后还缺哪些安全措施?

8. 下一篇

S21-B06 · 记忆与状态

协议讲完,下一篇讲 Agent 怎么"记住事"。


本篇属于系列《S21 · Agent 工程与 MCP》。旧文来源:A-1952/714/716 + MCP 10 卡;扩展点 E-S21-006。报文为本机 JSON-RPC 构造验证(非真实 MCP 服务端)。

S21-B05 · MCP:模型上下文协议
https://www.clxhxhhr.top/posts/5483/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。