跳到正文
动手理解 · CONCEPT LAB

推动一次 MCP 调用,别把协议连通当成执行授权

Function Calling 负责让模型表达候选调用,MCP 负责 Host/Client 与 Server 交换能力;主体、资源、确认、幂等和终态仍由确定性控制面强制执行。

已经发生 正在观察 接下来
01 / 04

状态传导图

USER 用户任务
MODEL 结构化提案
HOST Host 执行门
MCP Client ↔ Server
RESOURCE 资源侧授权
RECEIPT 结果与收据

任何一层都不能替下一层作担保;模型输出在执行前始终只是 proposal。

观察点 01

模型表达、协议交换、执行授权不是同一层

模型 API 产出 tool name 与 arguments;MCP Client/Server 交换 JSON-RPC 消息;Host 与资源侧 Server 再按主体、资源和风险决定能不能执行。

消息结构化格式可校验
副作用已发生仍在门前
此刻要记住

结构化正确只解决“长得对”,协议兼容只解决“传得通”。

应用与智能体 · MCP / TOOL CALLING

MCP 统一能力交换,不替系统决定能不能执行

Function Calling(函数调用)让 Large Language Model(大型语言模型,LLM)提出结构化工具调用;Model Context Protocol(模型上下文协议,MCP)让 Host、Client 与 Server 用共同协议交换工具、资源和提示。真正的身份、权限、审批、副作用与验收仍属于程序控制面。

MCP 2025-11-25 正式版架构:一个 Host 为文件、数据库和 GitHub Server 分别维护独立 Client,Client 可调用 Server 的工具资源提示,Server 也可请求 Client 的采样或用户输入;模型输出先经过 Host 与 Server 的授权控制,底部单独提示 2026-07-28 RC 不再使用初始化和协议会话
先看控制权:模型只提出候选调用;Host 选择并校验,Server 再按资源侧权限执行。图中生命周期只对应 2025-11-25 正式版
01 · 三层边界

“会喊工具”“接得上工具”“允许执行”是三件事

把三层混成一个“AI 会用工具”,就会把格式正确误判成安全、把协议兼容误判成业务可用。MCP 解决的是中间的互操作层,不包办上下两层。

01 · MODEL API

Function Calling:表达意图

模型根据工具的名字、描述和参数 Schema,输出“调用哪个工具、参数是什么”。这是候选动作,不是函数已在模型内部运行。

产物:tool name + arguments

02 · INTEGRATION

MCP:发现与交换能力

Host 内的 MCP Client 与 Server 协商版本和能力,再用 JSON-RPC 消息发现、读取或调用 primitives(协议原语)。

产物:协议消息 + 结果 / 错误

03 · CONTROL PLANE

运行时:授权与副作用

Host 和 Server 校验主体、资源、作用域、风险确认、预算与幂等状态;执行后保存收据并验证环境终态。

产物:authorized action + receipt

截至 2026-07-14
最新已发布正式规范仍是 2025-11-25。官方在 2026-05-21 锁定了目标日期为 2026-07-28 的 Release Candidate(发布候选版,RC),并明确最终规范计划在 7 月 28 日发布。RC 含破坏性变更,今天不能把它写成正式版。
没有共享协议
若 3 个 Host 分别对接 4 个服务,成对适配的理想化上界是 3×4=12。SDK、网关和已有 API 可能降低真实数量,所以 M×N 只是解释碎片化的上界模型。
有 MCP
理想化拆成 3 个 Host client + 4 个 Server,共 7 个主要实现;它减少协议胶水,不会把认证、部署、业务语义、兼容测试和信任评估压缩成“一个插头”。
02 · 调用链

一次可靠调用,要穿过提案、双重授权和结果验收

下面的天气例子只演示控制流:温度是假设值,不是实时天气。关键不在“模型选中了工具”,而在每个确定性门保存了什么证据。

从用户问题到可验证答案

① 用户任务北京现在几度? ② 模型提案get_weather({city}) ③ Host 执行门Schema · 身份 · 资源 · 确认 ④ MCP 调用Client → Server → 后端 ⑤ 结果归约过滤 · 来源 · 收据 · 状态 ⑥ 回答与验收引用观测时间;检查目标

工具定义约束“长什么样”

  • namedescription帮助模型做工具选择。
  • inputSchema约束参数结构;正式版工具输入根节点要求是对象。
  • Schema 通过只说明格式可接受,不说明用户有权限、参数值真实或操作安全

控制面要再做什么

  • 把用户主体、租户、工具、资源范围与审批凭证绑定到同一次调用。
  • Server 不能只相信 Host 说“已授权”,资源侧仍按最新状态复核。
  • 超时后区分“已知失败”和“结果未知”;高影响副作用先对账,不能盲目重试。

最小执行记录 = actor + tenant + tool + arguments hash + resource scope + approval proof + idempotency key + result / error + external receipt。需要恢复与重试时,再接 Agent 可靠执行的操作账本。

03 · 协议架构

一个 Host 管多个 Client,消息本身是双向的

MCP 是客户端—服务器架构。Host 为每个 Server 创建一个专用 Client 连接;本地 Standard Input / Output(标准输入输出,stdio)Server 通常服务一个 Client,远程 Streamable Hypertext Transfer Protocol(可流式超文本传输协议,Streamable HTTP)Server 通常服务多个 Client。模型只是 Host 可能使用的组件,并不直接“跑 MCP”。

Host(主机)

AI 应用或工作流运行时:管理 Client、选择暴露给模型的能力、组合上下文、执行策略、审批和审计。

Client(客户端)

Host 内的协议组件:维护与一个 Server 的专用连接,保存正式版会话中的协议版本与协商能力。

Server(服务器)

本地或远程程序:向 Client 提供上下文与动作,可包装文件系统、数据库、Application Programming Interface(应用程序编程接口,API)或进程。

两层协议

数据层使用 JSON Remote Procedure Call(基于 JSON 的远程过程调用,JSON-RPC 2.0);传输层负责 stdio 或 Streamable HTTP 的消息通道与传输级授权。

谁向谁暴露什么:不要只画 Client → Server 单箭头

方向2025-11-25 正式版能力控制权边界
Server → Client 提供Tools(可调用动作)、Resources(以 Uniform Resource Identifier,统一资源标识符,URI 标识的数据)、Prompts(可复用消息模板)Client 用 */list 发现;Host 决定是否展示、读取、调用和注入模型上下文
Client → Server 提供Sampling(请求 Host 模型生成)、Elicitation(请求用户补充信息)、Roots(协调文件系统工作范围)Server 发起请求;Host 仍控制模型、用户交互和允许范围。Roots 是协调提示,不是 Operating System(操作系统,OS)沙箱
跨切面Logging、进度、取消、列表变化通知;实验性的 Tasks 包装长任务只有已协商能力才能使用;通知没有响应,request 必须收到 result 或 error
stdio
用进程的标准输入输出流传消息,常用于本地 Server。它没有网络开销,但 Server 是本机代码,通常继承启动它的用户权限和环境凭据。
Streamable HTTP
通过 POST / GET 交换消息,可选 Server-Sent Events(服务器推送事件,SSE)流。它在 2025-03-26 版取代旧 HTTP+SSE 传输;服务端必须验证 Origin
04 · 版本合同

正式版与 RC 不是“加几个字段”,而是两套生命周期

生产系统应显式记录 protocol version、SDK 版本、协商能力与兼容测试结果。下表按 2026-07-14 的状态写:左列可作为当前正式基线,右列只能隔离试验。

合同2025-11-25 正式版2026-07-28 RC(尚未 final)
状态官方文档标记 latest;当前生产基线2026-05-21 锁定 RC,官方计划 2026-07-28 发布最终规范;含 breaking changes
核心状态协议是 stateful;连接先协商版本与能力。HTTP Server 可以分配 Mcp-Session-Idstateless core;删除协议级 session,应用状态改用显式 handle 等业务参数传递
启动initialize 必须是首次交互,随后发 notifications/initialized删除握手;版本、Client 信息与能力随请求放入 _meta,新增 server/discover
Server → Client可经现有连接 / SSE 发 Sampling、Elicitation 等请求和通知只允许在处理 Client 请求期间发起;用 InputRequiredResult + 重新提交的多轮请求承载
Tasks实验性 core feature迁为官方 extension,生命周期重做;删除 tasks/list
能力演进Roots、Sampling、Logging 是正式版能力三者标记 deprecated,但只是弃用标注:本版仍工作,移除需另一个 Specification Enhancement Proposal(规范增强提案,SEP),且有至少 12 个月窗口
迁移红线
不要让同一条请求一半按正式版 Session / SSE 假设实现,一半按 RC 的无状态 / 多轮请求实现。建立两套 conformance(符合性)测试矩阵;RC 客户端与 Server 放在隔离环境,等最终规范和所用 Software Development Kit(软件开发工具包,SDK)明确支持后再迁生产。
05 · 安全边界

工具目录是供应链输入,工具结果也是不可信输入

MCP Registry 能帮助发现 Server,但不会替应用证明代码安全、描述诚实或权限合理。Server 的工具元数据、资源内容和返回结果都可能夹带提示注入;本地 Server 还等同于在用户机器上运行第三方代码。

一次写操作至少过七道确定性门

必须绑定的事实典型拒绝条件
主体用户、服务身份、租户、会话 / 请求关联身份缺失、跨租户或授权上下文已过期
工具Server 身份、工具名、版本、schema hash工具列表悄然变化、描述或 Schema 未审批
资源具体仓库、目录、表、记录和动作 scope只获 read 却请求 write;Roots 内外未做真实路径校验
同意call ID、关键参数摘要、风险、时效用旧确认批准新参数;高影响动作没有明确确认
预算次数、token、金额、墙钟时间、并发循环调用、结果过大或成本超过上限
副作用幂等键、操作账本、外部收据、重试分类结果未知时重复付款 / 发布 / 删除
结果来源、大小、敏感字段、内容类型、环境终态把工具返回当系统指令;Server 说成功但外部状态不符

本地 stdio:先按第三方程序治理

显示将要启动的命令和参数,要求用户明确同意;固定来源与版本,最小化文件和网络权限,把密钥放在受控凭据代理中,并用容器 / OS 沙箱隔离。Roots 只帮助 Server 理解工作范围,不会阻止恶意进程访问别处。

远程 HTTP:OAuth 不是一张万能门票

授权在 MCP 中是可选能力;若保护 HTTP Server,2025-11-25 规范要求其作为 OAuth 2.1 resource server(资源服务器)验证 token 的 resource / audience。Client 用 Proof Key for Code Exchange(代码交换证明密钥,PKCE),Server 禁止 token passthrough(令牌透传)。

发现与元数据:先防 SSRF 与投毒

OAuth 元数据发现要防 Server-Side Request Forgery(服务端请求伪造,SSRF),限制重定向与私网地址;工具名、描述、Schema、图标和结果都做大小 / 类型 / 内容校验,不把其中的指令提升为系统优先级。

Registry:目录,不是安全认证

官方 Registry 仍是 preview,可能有 breaking changes 或数据重置;它保存中心化元数据与命名信息,并把安全扫描交给包仓库或下游聚合器。被收录不等于经过代码审计、质量评测或权限批准。

安全研究能说明什么,不能说明什么

研究作者报告证据边界
Remote MCP auth measurement2026-05 预印本作者发现 7,973 个 live remote Server,其中 40.55% 无认证暴露工具;对 119 个可测试 OAuth Server 共报告 325 个缺陷、9 个 Common Vulnerabilities and Exposures(通用漏洞披露,CVE)编号,96.6% 涉及动态客户端注册问题是作者的发现与可测试子集,不代表全部 MCP 部署;预印本结果仍待更广复现
MCPTox2025-08 预印本基于 45 个 live Server、353 个真实工具,构造 1,312 个恶意测试用例并测试 20 种 Agent 设置这是人为构造的 tool-metadata poisoning benchmark,不是“公开 Server 已被投毒比例”调查

更完整的提示注入、最小权限、凭据与供应链治理见 AI 安全工程;协议间职责与身份边界见 Agent 协议地图

06 · 规模化

工具越多,先省目录,再证明没有省掉正确工具

MCP 并不要求 Host 把所有工具 Schema 塞进每一次模型请求;这是 Host 的上下文组装策略。按需发现、分层披露和代码执行可以降 token,但必须同时测工具召回、任务成功率、延迟和权限隔离。

Code execution with MCP:把数据加工留在受控环境

Anthropic 2025-11-04 的工程文章把 MCP 工具映射成代码 API / 文件树,让模型按需读取接口,在代码环境完成循环、过滤和聚合,只把必要结果送回模型。文章的 Google Drive → Salesforce 示例从 150,000 token 降到 2,000,即 1−2,000/150,000=98.67%

不可外推
这是单个厂商工程演示,不是所有 MCP workload 的平均节省。代码执行又引入沙箱、文件 / 网络权限、资源限额、依赖供应链和写操作审批,不能只看 token。

Tool Search / Progressive Disclosure(工具搜索 / 渐进披露)

证据作者报告上线时怎么复测
手算示例80 个工具 × 平均 350 token = 28,000;只给 top-5 是 1,750,目录 token 减少 93.75%同时报告 Recall@5、正确工具排序、端到端成功率与额外路由延迟
MCP-Zero2025 预印本从 308 个 Server 收集 2,797 个工具,全量 Schema 为 248.1k token;作者在 APIBank 上报告最多约 98% token reduction这是该框架与 benchmark 的结果;换成自己的名称、描述、权限和长尾任务重跑
Semantic Tool Discovery2026 预印本5 个 Server、121 个工具、140 条 query;K=3 报告 97.1% hit rate、99.6% tool-token reduction、Mean Reciprocal Rank(平均倒数排名,MRR)0.91、检索 <100ms样本较小;测多轮依赖、同名工具、描述漂移、冷启动与未授权工具过滤
两个顺序不能颠倒
先按身份和资源权限过滤候选,再做语义检索;否则检索层会暴露不可见工具的名称、描述或存在性。检索后还要记录目录版本与 Schema hash,避免模型基于旧定义调用新工具。
07 · 验收

别用“连通了”验收 MCP,要交六张成绩单

协议握手成功只证明消息能交换。生产验收还要覆盖能力发现、选择、真实执行、安全、恢复和成本,并保存可回放的版本与收据。

协议兼容

版本协商成功率、必需 capability 覆盖、未知方法 / 字段、超时取消、错误码与 SDK 组合矩阵;正式版和 RC 分开跑。

发现与选择

目录新鲜度、权限过滤泄漏为 0、Recall@k、MRR、合法 tool-call rate、参数 Schema 通过率与“该不调用时不调用”。

任务与可靠性

环境终态成功率、部分成功、结构化错误、延迟 p50 / p95(中位数 / 95 分位)、超时后对账、幂等重复副作用率和补偿成功率。

安全与授权

越权调用容忍度必须为 0;测试跨租户、token audience、确认参数绑定、提示注入、SSRF、恶意 Schema 与本地沙箱逃逸。

上下文与成本

工具 Schema token、结果 token、路由开销、代码执行的处理器 / 内存 / 网络、每成功任务成本;节省必须与成功率共同报告。

可观测与回放

request / trace ID、主体、Server 与工具版本、Schema hash、参数摘要、审批、外部收据、结果过滤和最终验收都能串成同一条证据链。

上线判定
只有在固定版本矩阵上同时满足:正确工具可发现、未授权工具不可见、模型提案不越过执行门、副作用可对账、结果可追溯、成本不超预算,才算可上线;“Inspector 能列出工具”只是 smoke test(冒烟测试)。
来源与核查

正式规范、RC 与研究数字分层引用

本页核查日为 2026-07-14。生产语义以 2025-11-25 正式规范为准;2026-07-28 只按官方 RC 描述,不提前当作 final。论文数字保留作者口径,并显式标注预印本与样本边界。

主题一手来源本页采用口径
范围与架构MCP Architecture overview一 Server 一专用 Client;数据 / 传输两层;双方均可发送请求;MCP 不规定 Host 如何使用 LLM
正式生命周期2025-11-25 Lifecycleinitialize 必须先发;协商版本 / 能力;运行与底层关闭
RC 断裂2026-07-28 Release CandidateRC 非 final;无状态 core、无 initialize / session、server/discover、Extensions、Tasks 迁移与弃用策略
传输与授权TransportsAuthorizationSecurity best practicesstdio / Streamable HTTP、Origin 校验、授权可选;启用时按 resource / audience 验证并禁止 token passthrough
RegistryThe MCP RegistryPreview 元数据目录;不把收录当作安全扫描、质量背书或运行许可
Function CallingOpenAI Function Calling guide模型返回结构化调用,应用执行并回传结果;Schema 约束不等于业务授权
代码执行Code execution with MCP150k → 2k 只作为特定演示;同时记录新增沙箱与资源治理成本
工具发现MCP-ZeroSemantic Tool Discovery作者报告数字不外推;生产上联测 Recall@k、任务成功率、延迟与权限过滤
安全测量Remote MCP authentication studyMCPTox区分真实部署的认证测量与人工构造的投毒 benchmark;两篇均按预印本口径