
DeepSeek Agent Harness 2026终极指南 - 第13章第59节 MCP协议详解JSON-RPC 2.0与三大原语第12章子Agent与编排收官了。现在 Agent 用的工具都是我们手写的文件、bash、检索、联网。但外面有海量现成工具——MCP 生态有 1 万多个 Server月下载近亿。这节进入第13章接入 MCP 万亿生态先讲透 MCP 协议JSON-RPC 2.0 基础、Host/Client/Server 三层架构、三大原语以及一个客户端连所有 Server的 N×M 到 NM 经济学。本文导航MCP 解决了什么问题JSON-RPC 2.0 协议基础三层架构Host/Client/Serverinitialize 握手与能力协商三大原语tools/resources/promptsN×M 到 NM 的经济学小结MCP 解决了什么问题MCPModel Context Protocol模型上下文协议是 Anthropic 在 2024 年底提出的开放协议目标是让 AI 应用与外部工具/数据源之间的连接标准化。没有 MCP 之前每个 AI 应用要接一个工具都得单独适配应用A ── 单独适配 ──→ 数据库工具 应用A ── 单独适配 ──→ 文件系统工具 应用B ── 单独适配 ──→ 数据库工具 应用B ── 单独适配 ──→ 文件系统工具 N 个应用 × M 个工具 N×M 次适配有了 MCP只要实现一次标准协议应用A ─┐ 应用B ─┼── MCP 客户端 ──→ MCP 协议 ──→ 任意 MCP Server 应用C ─┘ 数据库/文件/搜索/... N 个应用 M 个工具 NM 次适配这就是N×M 到 NM 的经济学——工具生态从各自为政变成统一标准价值爆炸式增长。JSON-RPC 2.0 协议基础MCP 的底层是JSON-RPC 2.0——一个很简单的远程调用协议报文就是 JSON。请求报文调用一个方法{jsonrpc:2.0,id:1,method:tools/call,params:{name:read_file,arguments:{path:/tmp/test.txt}}}jsonrpc固定 “2.0”id请求标识用于匹配响应method要调用的方法名params方法参数响应报文成功{jsonrpc:2.0,id:1,result:{content:[{type:text,text:文件内容...}]}}响应报文失败{jsonrpc:2.0,id:1,error:{code:-32601,message:Method not found}}核心就三个字段method做什么、params怎么做、id谁请求。剩下就是约定哪些 method、什么 params。三层架构Host/Client/ServerMCP 定义了三层架构Host 宿主(Claude Desktop / DeepPilot)Client 客户端每个 Server 一个连接Server 服务端提供工具/资源/提示词实际能力数据库/文件/APIHost宿主AI 应用本身比如 Claude Desktop、我们的 DeepPilot。它负责发起对话、调用工具。Client客户端Host 内部每个 Server 对应一个 Client负责与 Server 的通信握手、发请求、收响应。Server服务端提供具体能力的进程暴露 tools/resources/prompts。一个 Host 可以连多个 Server每个 Server 一个 Client 连接。initialize 握手与能力协商Client 连接 Server 后第一步是initialize握手——双方交换能力和版本Client 发 initialize{jsonrpc:2.0,id:1,method:initialize,params:{protocolVersion:2024-11-05,capabilities:{},clientInfo:{name:deep-pilot,version:0.8.0}}}Server 回 initialize 结果声明自己的能力{jsonrpc:2.0,id:1,result:{protocolVersion:2024-11-05,capabilities:{tools:{},resources:{},prompts:{}},serverInfo:{name:filesystem,version:1.0.0}}}能力协商的核心Server 通过capabilities声明自己支持哪些原语tools/resources/promptsClient 据此决定后续能调什么。握手完成后还要发一条initialized通知无 id是通知不是请求{jsonrpc:2.0,method:notifications/initialized}三大原语tools/resources/promptsMCP 定义了三类能给模型提供的东西原语作用典型例子调用方法tools能执行的操作有副作用读文件、查数据库、发请求tools/listtools/callresources能读取的数据无副作用文档、配置、数据库表resources/listresources/readprompts可复用的提示词模板写单元测试模板prompts/listprompts/gettools 的两步调用第一步tools/list——发现有哪些工具{jsonrpc:2.0,id:2,method:tools/list,params:{}}响应{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:/tmp/test.txt}}}注意tools/list返回的inputSchema就是 JSON Schema——跟第36节我们 tool 装饰器反射生成的格式完全一致这就是 MCP 能无缝接入 DeepPilot 的原因。N×M 到 NM 的经济学用数字感受一下标准化的价值没有 MCP3 个应用 × 4 个工具 12 次适配 有 MCP 3 个应用 4 个工具 7 次接入当 N 和 M 都很大时差距是指数级的没有 MCP100 应用 × 10000 工具 1,000,000 次适配不可能完成 有 MCP 100 应用 10000 工具 10,100 次接入可行这就是 MCP 的核心价值把适配工作量从乘法降成加法让工具生态可以真正规模化。1 万多个 MCP Server、月下载近亿正是因为接入一次处处可用。小结MCP 解决工具连接标准化把 N×M 的适配工作降成 NM生态可规模化。JSON-RPC 2.0 基础method做什么 params怎么做 id谁请求报文就是 JSON。三层架构HostAI应用 Client每 Server 一连接 Server提供能力。initialize 握手双方交换 protocolVersion 和 capabilities能力协商。三大原语tools可执行、resources可读数据、prompts提示词模板。tools 两步调用tools/list发现tools/call调用inputSchema 是 JSON Schema。inputSchema 与 tool 反射同源都是 JSON Schema无缝接入 DeepPilot。DeepPilot v0.8 MCP 理论就位——理解了协议下一步手写客户端。下节预告理论懂了协议报文也看清了。但看懂和能用之间还差一个手写客户端。下一节不依赖任何高层封装手写 MCP 客户端stdio 传输、initialize 握手、工具发现、调用与结果转换全程抓包展示 wire 层的真实报文。如果觉得本文对你有帮助欢迎点赞、收藏、关注三连本系列持续更新中关注不迷路~