Open Source for Agents Roundup: MCP 2025-06-18、A2A、Registry 与 Agent-Readiness 的真相
来源:MCP 2025-06-18 Spec (modelcontextprotocol.io) | A2A Protocol (github.com/google/A2A) | MCP Registry (github.com/modelcontextprotocol/registry) | Supply Chain Sentinel (github.com/aajj68/supply-chain-sentinel)
TL;DR
MCP 2025-06-18 是一次协议级的安全与互操作性大修:OAuth 2.1 取代 API key、Streamable HTTP 取代 SSE、工具输出有了 schema 约束、Elicitation 让 server 能反向问用户问题。A2A 补位 agent-to-agent 通信层,Registry 给 MCP server 加了"应用商店"。但现实中,大多数标榜"AI-ready"的网站连基本的 MCP server 都没实现。差距巨大,机会也巨大。
一、MCP 2025-06-18:六大变更拆解
1. OAuth 2.1 取代 API Key — 安全模型的根本转变
旧做法:MCP server 用 API key 认证,客户端直接传 token。
新做法:MCP server 被明确定义为 OAuth 2.1 Resource Server,必须实现 Protected Resource Metadata (RFC 9728),通过 WWW-Authenticate 头告诉客户端去哪里拿 token。
关键细节:
- Resource Indicators (RFC 8707) 强制要求:客户端在授权请求和 token 请求中必须包含
resource参数,明确指定 token 的目标受众。这防止了恶意 server 偷拿为其他服务签发的 token。 - Dynamic Client Registration (RFC 7591):客户端可以自动向新的授权服务器注册,不需要人工干预。这对 MCP 生态至关重要——你不可能提前知道所有 MCP server 的授权服务器。
- PKCE 强制要求:防止授权码拦截攻击。
MCP servers MUST implement OAuth 2.0 Protected Resource Metadata (RFC 9728)… MCP clients MUST use OAuth 2.0 Protected Resource Metadata for authorization server discovery. — MCP 2025-06-18 Authorization Spec
对采购的意义:如果你的 B2B 供应商还在用 API key 对接 MCP,他们的实现已经过时了一个版本。
2. Streamable HTTP 取代 SSE — 传输层的简化
旧传输:HTTP+SSE,server 需要同时暴露 SSE endpoint 和 POST endpoint。 新传输:Streamable HTTP,单一 MCP endpoint 同时支持 POST 和 GET。
核心机制:
- 客户端通过 POST 发送 JSON-RPC 消息到 MCP endpoint
- Server 可以返回
application/json(单次响应)或text/event-stream(SSE 流) - 客户端通过 GET 打开 SSE 流,接收 server 主动推送的通知
- Session 管理通过
Mcp-Session-Idheader 实现,支持DELETE主动终止 - 断线续传:通过 SSE event ID +
Last-Event-IDheader 实现消息重放
This replaces the HTTP+SSE transport from protocol version 2024-11-05. — MCP 2025-06-18 Transports Spec
向后兼容:客户端可以先尝试 POST InitializeRequest,如果返回 4xx,则降级到旧的 HTTP+SSE 模式。
3. 结构化工具输出 — 从"猜格式"到"签契约"
旧做法:工具返回自由格式的 text,客户端和 LLM 靠猜解析。
新做法:工具可以声明 outputSchema(JSON Schema),server 必须返回符合 schema 的 structuredContent。
{
"name": "get_weather_data",
"outputSchema": {
"type": "object",
"properties": {
"temperature": { "type": "number" },
"conditions": { "type": "string" },
"humidity": { "type": "number" }
},
"required": ["temperature", "conditions", "humidity"]
}
}
If an output schema is provided: Servers MUST provide structured results that conform to this schema. Clients SHOULD validate structured results against this schema. — MCP 2025-06-18 Tools Spec
同时新增 resource_link 类型:工具可以返回资源链接,客户端可以订阅或获取这些资源,而不是把所有数据都塞进响应里。
4. Elicitation — Server 能反向问用户问题了
这是 2025-06-18 全新的能力。Server 可以通过 elicitation/create 请求,向用户收集结构化信息。
支持的输入类型:
- String(支持 email、uri、date、date-time 格式校验)
- Number/Integer
- Boolean
- Enum
三种响应动作:accept(提交数据)、decline(明确拒绝)、cancel(关闭对话框)
Elicitation is newly introduced in this version of the MCP specification and its design may evolve in future protocol versions. — MCP 2025-06-18 Elicitation Spec
安全约束:Server MUST NOT 通过 elicitation 请求敏感信息。这是硬性规定。
5. Elicitation 与 Sampling 的关系
MCP 有三种"反向调用"能力:
| 能力 | 方向 | 用途 |
|---|---|---|
| Sampling | Server → Client → LLM | Server 请求 LLM 生成文本 |
| Elicitation | Server → Client → User | Server 请求用户提供信息 |
| Roots | Server → Client → Filesystem | Server 查询可访问的文件系统范围 |
Sampling 让 server 能发起 LLM 调用(不需要自己的 API key),支持 model hints、capability priorities(cost/speed/intelligence 权重),客户端最终决定用哪个模型。
6. 其他变更
- JSON-RPC Batching 移除:不再支持批量请求
MCP-Protocol-Versionheader 强制要求:HTTP 传输中客户端必须在所有请求中携带协议版本title字段:给人类看的显示名,name保留给程序用_meta字段扩展:更多接口类型支持元数据
二、MCP Registry:Agent 的"应用商店"
现状
- API v0.1 已冻结(2025年10月24日起),不再有破坏性变更
- Preview 阶段(2025年9月8日上线),GA 尚未发布
- 后端:Go + PostgreSQL,容器化部署(ko)
- 当前版本:v1.7.9(2026年5月12日),6.9k stars,848 forks
发现机制
MCP 客户端查询 Registry API 获取可用 server 列表。类似 npm registry 或 Docker Hub,但面向 MCP server。
发布机制
通过 CLI 工具 mcp-publisher 发布,支持四种认证方式:
- GitHub OAuth — 登录 GitHub 发布
- GitHub OIDC — 从 GitHub Actions 工作流发布
- DNS 验证 — 通过 DNS challenge 证明域名所有权
- HTTP 验证 — 通过 HTTP challenge 证明域名所有权
命名空间所有权验证:要发布 io.github.domdomegg/my-cool-mcp,你必须是 GitHub 用户 domdomegg。要发布 me.adamjones/my-cool-mcp,你必须证明拥有 adamjones.me 域名。
对采购的意义
Registry 给 B2B 采购提供了一个可验证的 MCP server 来源。但目前仍处于 preview 阶段,数据可能重置。不要把生产系统依赖在上面。
三、A2A:Agent 之间的通信协议
定位
A2A (Agent-to-Agent) 是 Google 主导的开源协议,解决的是 MCP 不解决的问题:agent 之间如何协作。
A2A complements Anthropic’s Model Context Protocol (MCP), which provides helpful tools and context to agents. — Google A2A Blog
MCP = Agent ↔ Tool(工具集成) A2A = Agent ↔ Agent(跨框架协作)
核心机制
- 传输层:JSON-RPC 2.0 over HTTP(S)
- Agent Cards:JSON 格式的 agent 能力描述,用于发现和选择最佳协作对象
- Task 生命周期:支持同步、SSE 流式、异步推送三种模式
- 模态协商:文本、音频、视频、表单、iframe
- 安全:企业级认证,与 OpenAPI 认证方案对齐
生态
- 50+ 技术合作伙伴:Salesforce、SAP、ServiceNow、Atlassian、Box、PayPal、LangChain 等
- 6 个官方 SDK:Python、Go、JavaScript、Java、.NET、Rust
- 治理:Linux Foundation 下的开源项目,Apache 2.0 许可
- 规模:24.2k GitHub stars,2.5k forks
路线图
- Agent 发现增强(AgentCard 内嵌认证方案)
QuerySkill()方法(动态查询未预期的能力)- 任务内动态 UX 协商(中途加音频/视频)
- 客户端发起方法 + 流式可靠性改进
四、Supply Chain Sentinel:Agent 安全的哨兵
aajj68/supply-chain-sentinel 是一个零依赖的 Python 安全扫描工具,专门面向 AI coding agent 环境(Claude Code、Roo Code、Antigravity)。
检测能力
| 类别 | 具体检测 |
|---|---|
| 供应链攻击 | PyPI/npm typosquatting(编辑距离算法)、依赖混淆、URL 安装、恶意生命周期脚本 |
| 恶意代码 | eval(base64...)、反向 shell、数据外泄、凭证收集 |
| 混淆检测 | Base64 blob、chr() 构造、hex shellcode、Trojan Source (CVE-2021-42574) |
| Prompt 注入 | “ignore previous instructions”、角色覆盖、注入 LLM 模板 |
| CI/CD | GitHub Actions 非固定 SHA、github.event 脚本注入、日志泄露 secrets |
| Docker | curl | bash、:latest 标签、ENV 存储 secrets |
| 完整性 | 缺少 lockfile、可疑 go.mod replace |
对 Agent-Readiness 的意义
这个项目的存在本身就说明了一个问题:当 AI agent 开始自动执行代码时,传统的软件供应链安全边界需要重新定义。Prompt injection 成了和 SQL injection 同等级别的安全威胁。
五、差距分析:声称的 AI 集成 vs. 规范合规实现
声称 “AI-Ready” 的网站通常做了什么
- 有 ChatGPT/Claude 集成的 chat widget
- 文档页面加了 “Ask AI” 按钮
- API 文档声称支持 “AI agents”
- 有 structured data (JSON-LD) 但没有 MCP server
真正 Spec-Compliant 的实现需要什么
- MCP Server:实现 JSON-RPC 2.0 协议,暴露 tools/resources/prompts
- OAuth 2.1 认证:Resource Server + Protected Resource Metadata + Resource Indicators
- Streamable HTTP 传输:单一 endpoint,支持 POST/GET,session 管理
- 结构化输出:工具声明 outputSchema,返回 structuredContent
- Registry 注册:在 MCP Registry 中发布,通过命名空间验证
- 安全扫描:Supply chain 安全、prompt injection 防护
量化差距
目前 MCP Registry 有 v1.7.9,但绝大多数企业网站连 MCP server 都没部署。这意味着:
- 先发优势巨大:谁先实现 spec-compliant MCP server,谁就占据了 agent 可发现的入口
- 采购标准正在形成:B2B 采购方开始要求供应商提供 MCP server 作为集成条件
- 安全合规是硬门槛:OAuth 2.1 + Resource Indicators 不是可选项,是 spec 强制要求
六、12 个月展望:B2B 采购与基础设施策略
Q3-Q4 2026
- MCP Registry GA 发布,命名空间验证成为标准
- 大型 SaaS 供应商(Salesforce、ServiceNow、Atlassian)开始提供 MCP server
- A2A 在企业内部 agent 协作场景落地
- Supply chain security 工具(如 Sentinel)成为 CI/CD 标准环节
Q1-Q2 2027
- B2B RFP 中出现 “MCP server compliance” 要求
- OAuth 2.1 + Resource Indicators 成为 agent 集成的最低安全标准
- MCP + A2A 的组合成为企业 agent 架构的默认选择
- Agent-readiness 成为网站评估的新维度(类似当年的 mobile-readiness)
采购建议
- 立即评估:你的关键供应商是否提供了 MCP server?如果没有,他们的 roadmap 是什么?
- 安全优先:要求供应商证明 OAuth 2.1 compliance,拒绝 API key 方案
- Registry 验证:优先选择在 MCP Registry 中注册并通过命名空间验证的 server
- Supply chain 审计:在 agent 执行环境中部署安全扫描工具
- 双协议策略:MCP 处理工具集成,A2A 处理跨系统 agent 协作
精选回复 / 社区观点
@vladimir_vg: 我也在想这个问题。还没结晶成思路,只是一个直觉:它本质上就是一种拓扑。
@chikoevm: 这简直是烈火真金,终于有人看穿了 Agent 记忆的 BS,现在再看不回去了。
社区共识: MCP 和 A2A 不是竞争关系,而是互补的两层——MCP 管工具,A2A 管协作。真正的 agent-ready 基础设施需要两者兼备。
深度解读
这篇文章回答的问题
当前 web 的 agent-readiness 真实状态是什么?声称的 AI 集成和规范合规实现之间的差距有多大?这对未来 12 个月的 B2B 采购和基础设施策略意味着什么?
核心论点
差距是真实存在的,而且比大多数人想象的要大。 MCP 2025-06-18 规范定义了一套完整的 agent 集成标准(OAuth 2.1、Streamable HTTP、结构化输出、Elicitation),但绝大多数企业网站连第一步——部署 MCP server——都没走完。A2A 补充了 agent 间通信层,Registry 提供了发现机制,Supply Chain Sentinel 解决了安全问题。基础设施已经就绪,就看谁先用起来。
关键洞察
OAuth 2.1 不是锦上添花,是 spec 的硬性要求。 Resource Indicators (RFC 8707) 防止 token 被恶意 server 劫持,这是 B2B 采购中必须验证的安全项。
Elicitation 改变了 agent 的交互范式。 以前 agent 只能被动接收信息,现在可以主动向用户提问。这意味着 agent 可以处理需要人类判断的复杂工作流,而不是只做简单的 CRUD。
Registry 的命名空间验证解决了信任问题。 你不能冒充别人发布 MCP server。这对 B2B 采购至关重要——你需要知道你连接的 server 确实是它声称的那个。
A2A 的 50+ 合作伙伴名单就是采购清单。 Salesforce、SAP、ServiceNow、Atlassian 这些公司已经承诺支持 A2A。如果你的供应商不在这份名单上,你需要问他们为什么。
Supply Chain Sentinel 的存在说明 agent 安全还处于早期。 当 AI agent 开始自动执行代码时,传统的安全边界需要重新定义。Prompt injection 和 typosquatting 是新的攻击面。