MCP 2.0 来了:2026-07-28 规范完全解读与实战 · 干货攻略
- 链接: https://x.com/simonw/status/1952720691532816417
- 分类: x-tips
- 来源: X @simonw
- 作者: Jay
- 更新: 2026-08-02
- 仓库: simonw/mcp-explorer
这是什么
2026 年 7 月 28 日,Model Context Protocol(MCP)发布了自 2024 年 11 月诞生以来最重大的规范更新——2026-07-28,社区普遍称之为 MCP 2.0。官方博客(blog.modelcontextprotocol.io)明确将其定性为:
MCP is transforming from a bidirectional stateful protocol into a request/response stateless protocol.
本次更新由 6 个 SEP(Specification Enhancement Proposals)协同完成,核心变化是去掉 initialize 握手和 Mcp-Session-Id,让每个请求自包含,从而天然支持水平扩展的 round-robin 负载均衡,不再需要 sticky session。
同时规范还带来了 Multi Round-Trip Requests(MRTR)、基于 HTTP header 的路由、缓存友好的 list 响应、正式 Extensions 框架(含 Tasks)以及全面强化的授权机制。
为什么值得关注
谁分享的、解决什么问题
本次干货来自 Simon Willison(@simonw)——Datasette / LLM 等知名开源工具的作者。他是最早一批深度使用 MCP 的开发者,也正因为这次规范改动,重新点燃了他对 MCP 生态的热情。
Simon 在自己的博客(simonwillison.net 2026-07-31)中解释了他的动机:
MCP tools are easier to audit and control, and simple enough that smaller models that run on a laptop can still drive them reasonably well.
相比让 agent 拥有 shell + curl 的"全权",MCP 工具集更易于审计和管控——特别是在 2026 年 prompt injection 攻击日益严峻的背景下。
这次规范大改让 Simon 快速搭建了三个基于新规范的项目:mcp-explorer(CLI 探针工具)、datasette-mcp(Datasette 的 MCP 插件)和 llm-mcp-client(LLM 的 MCP 客户端插件)。
核验过程
读过的官方来源
| 来源 | 内容核验结论 |
|---|---|
| MCP 官方博客 2026-07-28 | 核心变更:去掉握手/session、MRTR、header 路由、缓存 list、Extensions;Tier-1 SDK(TypeScript/Python/Go/C#)同步发布;每月近 5 亿次下载,TS+Python 各自突破 10 亿次总下载;2026-05-21 RC 锁定,经过约 10 周验证后正式发布 |
| MCP 官方 RC 博客 2026-05-21 | Stateless ≠ 无状态应用:显式 handle 模式替代隐式 session;MRTR 替代旧有双向流;Mcp-Method/Mcp-Name header 强制传递 |
| simonwillison.net 2026-07-31 | Simon 三个项目细节:mcp-explorer、datasette-mcp、llm-mcp-client;旧/新协议请求体对比示例;stateless MCP 的安全优势论述 |
| simonw/mcp-explorer GitHub README | pip 安装、uvx 免装运行;list/inspect/call/prompts/resources/info/doctor 7 个子命令;默认强制 MCP 2(stateless),可用 --legacy 回退;--json / --raw 等输出选项 |
| datasette/datasette-mcp GitHub README | datasette install 安装;暴露 list_databases()、get_database_schema()、execute_sql() 三个只读工具;权限由 Datasette actor 系统控制;register_mcp_tools 插件钩子支持扩展 |
交叉验证结论
- MCP 官方博客与 Stacktree 技术分析(stacktr.ee)均确认:2026-05-21 RC 锁定 → 约 10 周验证 → 2026-07-28 正式发布,12 个月最小弃用窗口。
- Flavio Copes 博客(flaviocopes.com)和 Forte Group 技术综述均独立印证了 statelss 核心设计、TS/Python 各超 10 亿次下载、header 路由等关键变更。
- GitHub 官方博客(github.blog 2026-07-23)证实 GitHub MCP Server 已提前支持新规范。
- 关于"最有影响力的变更":原帖描述为"stateless 设计让远程部署和横向扩展门槛骤降"——经核验,这是官方 6SEP 协作的核心目标(SEP-2575/SEP-2567 去除握手,SEP-2243 强制 header),表述准确。
上手步骤
1. 无需安装,用 uvx 直接体验 mcp-explorer
# 列出远程 MCP 服务器的所有工具(默认强制 stateless MCP 2)
uvx mcp-explorer list https://agentic-mermaid.dev/mcp
# 带完整参数描述的输出
uvx mcp-explorer list -N https://agentic-mermaid.dev/mcp
# JSON 格式输出完整工具定义
uvx mcp-explorer list --json https://agentic-mermaid.dev/mcp
2. 查看单个工具的完整 schema
# inspect 会输出工具描述、嵌套输入/输出 schema、annotations、icon 等
uvx mcp-explorer inspect https://agentic-mermaid.dev/mcp render_svg
# JSON 格式完整定义
uvx mcp-explorer inspect https://agentic-mermaid.dev/mcp render_svg --json
3. 调用工具
# 通过 -a 传参,JSON 字符串作为参数值
uvx mcp-explorer call \
https://agentic-mermaid.dev/mcp \
render_svg \
-a source 'graph TD; A-->B' \
-a options '{"padding":24}'
# 仅输出 SVG 内容
uvx mcp-explorer call \
https://agentic-mermaid.dev/mcp \
render_svg \
-a source 'graph TD; A-->B' \
-a options '{"padding":24}' | jq .svg -r
4. 查看服务器元信息 / 健康检查
# 查看协商的协议版本、支持版本、服务器能力
uvx mcp-explorer info https://agentic-mermaid.dev/mcp
# 检查 stateless 和 legacy 两种模式的兼容性
uvx mcp-explorer doctor https://agentic-mermaid.dev/mcp
uvx mcp-explorer doctor https://agentic-mermaid.dev/mcp --legacy
5. 用 pip 安装到本地(可选)
pip install mcp-explorer
# 安装后可直接运行
mcp-explorer list https://agentic-mermaid.dev/mcp
6. datasette-mcp:给自己的 Datasette 实例加 MCP 端点
# 假设 Datasette 已安装
datasette install datasette-mcp
# 启动后,MCP 端点即为 http://localhost:8001/-/mcp
暴露的三个只读工具:
list_databases() # 列出当前 actor 可见的数据库
get_database_schema(database_name) # 返回完整 SQL schema(表/索引/视图/触发器)
execute_sql(database_name, sql) # 执行一条只读 SQL,返回结构化结果
其他 Datasette 插件可通过 register_mcp_tools 钩子添加更多 MCP 工具(使用 @mcp.tool() 装饰器)。
7. llm-mcp-client:让 LLM CLI 直接调用 MCP 工具
llm install llm-mcp-client
llm -T 'MCP("https://datasette.simonwillison.net/-/mcp")' 'count the notes'
坑与适用边界
坑
- 旧协议服务器需要 --legacy:如果 MCP 服务器尚未升级到 2026-07-28,mcp-explorer 默认会失败,此时需加
--legacy参数强制走 initialize 握手流程。 - stateless ≠ 无状态应用:规范去掉了协议层 session,但应用层仍需管理状态(如购物车 ID、浏览器 session)。正确做法是让工具返回显式 handle(如
basket_id),让模型在后续调用中作为参数传回——而不是依赖隐藏的 Mcp-Session-Id。 - Mcp-Method / Mcp-Name header 强制传递:Streamable HTTP 现在必须在 HTTP header 中传递方法名和工具名(SEP-2243),任何在前端加网关或 WAF 的团队需要确保这些 header 被透传。
- Legacy HTTP+SSE 传输已弃用:旧版 HTTP+SSE 传输有一年弃用窗口,但新实现不应再使用它。
- Roots / Sampling / Logging 已弃用:官方建议迁移到 Tasks 扩展和其他替代方案,同样有 12 个月最小窗口。
适用边界
- 适合:远程 MCP 服务器、水平扩展部署、需要与 Claude/ChatGPT 等客户端集成的场景、Datasette 这类数据库工具的 agent 化。
- 不太适合:需要实时双向流的复杂交互(MRTR 可以覆盖部分场景,但设计思路完全不同);极度低延迟本地工具调用(stateless overhead 在极端场景可能略高)。
- SDK 覆盖:TypeScript / Python / Go / C# 全部 GA,Rust 为 beta。如果你在用非 Tier-1 SDK,需要确认其 2026-07-28 支持状态。
一句话结论
MCP 2.0(2026-07-28)去掉了有状态的 initialize 握手和 session-id,让每个 HTTP 请求完全自包含——这不仅降低了远程部署门槛,也让 MCP 第一次可以用简单的 round-robin 负载均衡做水平扩展;配合 Simon Willison 的 mcp-explorer,零安装即可探测和调用任意兼容服务器,是入门新规范的最佳起点。