文章摘要
MCP 正在成为 AI Agent 连接外部工具和数据的标准协议。本文从协议架构讲起,详解 Server-Client-Host 三层模型、JSON-RPC 通信机制、资源/工具/提示词三大能力,并附带完整的 Python MCP Server 实现、Claude Desktop MCP 配置实战、以及与传统 API 集成的全面对比。2026 年 6 月更新:新增 MCP 2.1 新特性(能力协商、流式执行、安全沙箱)及与 A2A/AGUI 协议栈的关系。
为什么 MCP 是 AI Agent 的「USB-C」
2026 年,AI Agent 正从「孤立模型」走向「生态系统」。但一个核心问题始终存在:如何让不同 Agent 以标准化方式连接外部工具和数据?
早期方案各显神通:LangChain 用 Tool 定义,AutoGPT 用 JSON Schema,各种 Agent 框架各自为战。直到 Anthropic 提出 MCP(Model Context Protocol)——一个统一的、开源的、标准化的 Agent 连接协议。
MCP 的核心愿景
MCP 的目标很简单但影响深远:
"让任何 AI 应用都能以统一方式连接任何数据源和工具,就像 USB-C 统一了物理接口一样。"
三大关键价值:
- 标准化连接:一个 MCP Server 可以被 Claude Desktop、Cursor、任何支持 MCP 的 Agent 直接使用
- 安全隔离:MCP 在 Agent 和工具之间提供安全层,控制权限、验证输入、限制访问范围
- 能力发现:Agent 可以自动发现 MCP Server 提供了哪些工具和资源,无需硬编码
MCP 与传统 API 集成的本质区别
| 维度 | 传统 API 集成 | MCP 协议 |
|---|---|---|
| 集成方式 | 每个工具单独写适配器 | 统一协议,一次实现处处可用 |
| 能力发现 | 需要查阅文档/API 文档 | 自动 discovery,Agent 自主探索 |
| 上下文管理 | 手动管理 token 和上下文 | 协议层自动管理资源引用 |
| 安全模型 | API Key 直接暴露给 Agent | MCP Server 作为安全代理层 |
| 多 Agent 支持 | 每个 Agent 框架单独适配 | 一个 Server 服务所有 MCP 客户端 |
| 协议标准化 | 各框架自定义格式 | 标准化 JSON-RPC 2.0 |
| 部署复杂度 | N × M 个集成点 | N + M 个组件(Server + Client) |
关键洞察:MCP 不是替代 API,而是在 API 之上加了一层 Agent 友好的抽象。你的数据库仍然通过 REST API 暴露数据,但 MCP Server 将这些 REST API 转换为 Agent 可以理解的工具和资源。
MCP 协议架构详解
MCP 采用客户端-服务器-主机(Client-Server-Host)三层架构:
三层模型
三层职责
- Host(宿主应用)
- Client(客户端)
- Server(服务端)
- 暴露具体的工具(Tools)、资源(Resources)、提示词(Prompts)
- 实现实际的业务逻辑
- 可以是本地进程、远程 HTTP 服务、或 SSE 端点
JSON-RPC 2.0 通信机制
MCP 基于 JSON-RPC 2.0 协议,所有通信通过标准 JSON 格式:
请求格式:
响应格式:
传输层支持:
- stdio:标准输入输出(本地进程)
- SSE(Server-Sent Events):HTTP 长连接(远程服务)
- WebSocket:双向通信(实时交互)
• HostApplication
• (ClaudeDesktop/Cursor/IDE)
• MCPClient
• (协议实现+能力发现+安全层)
• ────────────────────────────────┘ │
• ▲▲▲
• MCPServerMCPServerMCPServer
• (GitHub)(File)(Database)
• ─────────┴────┴────┴───────────┘ │
• ───────────────────────────────────────┘
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_github",
"arguments": {"query": "MCP protocol", "limit": 5}
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{"type": "text", "text": "Found 5 repositories..."}
]
}
}MCP 三大核心能力
MCP Server 可以暴露三种核心能力:
1. Tools(工具)—— Agent 的「双手」
工具是 Agent 可以主动调用的功能。类比:Agent 说"我需要搜索 GitHub",Client 就调用对应的 MCP Tool。
典型用例:
- 代码仓库操作(git clone、commit、push)
- 文件读写
- API 调用(数据库查询、HTTP 请求)
- 系统命令执行
2. Resources(资源)—— Agent 的「眼睛」
资源是 Agent 可以读取的数据。类比:Agent 说"我想看看这个文件的内容"。
典型用例:
- 文件系统内容
- 数据库记录
- API 响应数据
- 配置信息
3. Prompts(提示词)—— Agent 的「模板」
提示词是预定义的交互模板,帮助 Agent 更好地完成特定任务。
典型用例:
- 代码审查模板
- Bug 修复工作流
- 文档生成模板
MCP 请求流程架构图
实战:用 Python 构建 MCP Server
下面是一个完整的 Python MCP Server 实现,提供 GitHub 搜索和文件操作能力:
安装依赖
完整实现
配置 Claude Desktop 使用此 MCP Server
在终端运行 pip install mcp 安装 MCP SDK,然后在 Claude Desktop 的配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json):
重启 Claude Desktop 后,Agent 就能自动发现并使用这些工具了!
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent, ImageContent
import asyncio
import json
import os
from pathlib import Path
# 创建 MCP Server 实例
app = Server("ai-master-github-tools")
# === 能力发现:告诉 Client 我们提供了什么 ===
@app.list_tools()
async def list_tools():
"""返回所有可用工具列表"""
return [
Tool(
name="search_github",
description="搜索 GitHub 仓库、用户或代码",
inputSchema={
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "搜索关键词"
},
"type": {
"type": "string",
"enum": ["repositories", "users", "code"],
"description": "搜索类型",
"default": "repositories"
},
"sort": {
"type": "string",
"enum": ["stars", "forks", "updated"],
"description": "排序方式",
"default": "stars"
},
"per_page": {
"type": "integer",
"description": "每页结果数",
"default": 5
}
},
"required": ["query"]
}
),
Tool(
name="read_file",
description="读取本地文件内容",
inputSchema={
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "文件路径"
}
},
"required": ["path"]
}
),
Tool(
name="list_directory",
description="列出目录内容",
inputSchema={
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目录路径"
}
},
"required": ["path"]
}
)
]
# === 工具调用:实际执行逻辑 ===
@app.call_tool()
async def call_tool(name: str, arguments: dict):
"""处理工具调用请求"""
if name == "search_github":
import urllib.request
query = arguments.get("query", "")
search_type = arguments.get("type", "repositories")
sort = arguments.get("sort", "stars")
per_page = arguments.get("per_page", 5)
# 构建 GitHub API 请求
url = f"https://api.github.com/search/{search_type}?q={query}&sort={sort}&per_page={per_page}"
req = urllib.request.Request(url)
req.add_header("Accept", "application/vnd.github.v3+json")
# 如果有 token 则添加
token = os.environ.get("GITHUB_TOKEN")
if token:
req.add_header("Authorization", f"Bearer {token}")
try:
with urllib.request.urlopen(req, timeout=10) as response:
data = json.loads(response.read().decode())
# 格式化结果
items = data.get("items", [])
total = data.get("total_count", 0)
result_lines = [f"📊 找到 {total} 个结果(显示前 {len(items)} 个)\n"]
for item in items:
if search_type == "repositories":
result_lines.append(
f"⭐ {item['full_name']}\n"
f" {item.get('description', 'N/A')}\n"
f" Stars: {item['stargazers_count']:,} | "
f"Forks: {item['forks_count']:,} | "
f"Language: {item.get('language', 'N/A')}\n"
f" 🔗 {item['html_url']}\n"
)
elif search_type == "users":
result_lines.append(
f"👤 {item['login']}\n"
f" {item.get('bio', 'N/A')}\n"
f" Repos: {item['public_repos']} | "
f"Followers: {item['followers']}\n"
f" 🔗 {item['html_url']}\n"
)
return [TextContent(type="text", text="\n".join(result_lines))]
except Exception as e:
return [TextContent(type="text", text=f"❌ 搜索失败: {str(e)}")]
elif name == "read_file":
path = arguments.get("path", "")
try:
# 安全检查:限制在特定目录
base_dir = Path("/workspace")
full_path = (base_dir / path).resolve()
if not str(full_path).startswith(str(base_dir)):
return [TextContent(type="text", text="❌ 路径超出允许范围")]
content = full_path.read_text(encoding="utf-8")
return [TextContent(type="text", text=f"📄 {path}:\n\n{content[:5000]}")]
except Exception as e:
return [TextContent(type="text", text=f"❌ 读取失败: {str(e)}")]
elif name == "list_directory":
path = arguments.get("path", ".")
try:
base_dir = Path("/workspace")
full_path = (base_dir / path).resolve()
if not str(full_path).startswith(str(base_dir)):
return [TextContent(type="text", text="❌ 路径超出允许范围")]
entries = list(full_path.iterdir())
lines = [f"📁 {path}/\n"]
for entry in sorted(entries):
icon = "📂" if entry.is_dir() else "📄"
size = "" if entry.is_dir() else f" ({entry.stat().st_size:,} bytes)"
lines.append(f" {icon} {entry.name}{size}")
return [TextContent(type="text", text="\n".join(lines))]
except Exception as e:
return [TextContent(type="text", text=f"❌ 列出失败: {str(e)}")]
else:
return [TextContent(type="text", text=f"❌ 未知工具: {name}")]
# === 资源暴露:让 Agent 可以读取数据 ===
@app.list_resources()
async def list_resources():
"""返回所有可用资源列表"""
return []
# === 启动 Server ===
async def main():
async with stdio_server() as (read_stream, write_stream):
await app.run(
read_stream,
write_stream,
app.create_initialization_options()
)
if __name__ == "__main__":
asyncio.run(main())
{
"mcpServers": {
"ai-master-tools": {
"command": "python",
"args": ["/path/to/ai-master-mcp-server.py"],
"env": {
"GITHUB_TOKEN": "your_token_here"
}
}
}
}MCP 在 2026 的生态现状(6 月最新)
MCP 已从 Anthropic 的开源实验成长为 AI 行业的关键基础设施。 以下数据截至 2026 年 6 月。
核心数据一览
| 指标 | 数值 | 来源 |
|---|---|---|
| 公开 MCP Server | 10,000+ | Linux Foundation AAIF 统计 |
| Python SDK 月下载 | 1.64 亿次 | PyPI 2026 年 4 月数据 |
| TypeScript SDK 月下载 | 9,700 万次 | npm 2026 年 6 月 |
| AAIF 成员组织 | ~150 家 | Linux Foundation |
| 企业应用嵌入 Agent | 80%(Q1 2026) | Gartner CIO 调查 |
| 预计年底含 Agent 应用 | 40% | Gartner 预测 |
| 含 MCP 功能的 API 网关 | 75% | Gartner 预测(年底) |
治理里程碑
- 2025 年 6 月:MCP 规范形式化 OAuth Resource Server,强制 RFC 8707 Resource Indicators 防止 token 滥用
- 2025 年 9 月:MCP Registry 上线,数月内增长至 2,000 Server 条目
- 2025 年 11 月:最大规范更新——异步任务、增强采样、elicitation、服务端 Agent 循环、Client ID 元数据文档
- 2025 年 12 月:Anthropic 将 MCP 捐赠给 Agentic AI Foundation(AAIF),OpenAI 和 Block 联合创始
- 2026 年 1 月:MCP Apps 作为首个官方扩展发布
- 2026 年 4 月:A2A v1.0 正式发布,MCP + A2A 三层协议栈成型
MCP Apps:从文本到交互式 UI
MCP Apps 是 2026 年 MCP 生态最大的突破。 在此之前,所有 MCP 交互都是纯文本——工具返回字符串,Agent 显示字符串。MCP Apps 让工具可以返回富 HTML 界面,渲染在沙箱 iframe 中。
首批合作伙伴(10 家): Amplitude、Asana、Box、Canva、Clay、Figma、Hex、monday.com、Slack、Salesforce
安全模型:
- iframe 沙箱隔离(sandbox 属性严格限制)
- 预声明模板(防止 XSS 注入)
- 可审计的 JSON-RPC 消息流
- 用户同意机制(UI 发起的工具调用需用户确认)
新兴扩展:WAB(Web Agent Bridge)
2026 年 4 月发布的 WAB 解决了一个新问题:让 AI Agent 以标准化方式与网页交互。
类比:
robots.txt→ 告诉爬虫不要索引什么- WAB → 告诉 Agent 可以执行什么
技术实现:window.AICommands + DNS Discovery + MCP adapter,Agent 不再需要针对每个网站写不同的爬虫逻辑。
热门 MCP Server 类型(2026 年 6 月)
- 文件系统:读写本地文件、目录遍历
- 数据库:PostgreSQL、MySQL、SQLite、Snowflake 查询
- Git/GitHub:仓库操作、PR 管理、CI/CD 触发
- Web 搜索:Google、Bing、Perplexity、Tavily
- 代码工具:lint、format、test、benchmark
- SaaS 集成:Slack、Notion、Figma、Jira、Linear、Salesforce、HubSpot
- 云服务:AWS S3、Google Drive、OneDrive、Stripe
- MCP Apps:Canva 设计、Hex 数据表、Asana 项目管理
- 系统工具:终端命令、进程管理、Docker 容器
- AI 服务:图像生成、语音转文字、翻译
MCP 在 Agent 协议栈中的定位(2026 年 6 月更新)
MCP 不再是孤立的工具协议,而是 6 层 Agent 协议栈的工具接入层:
| 协议 | 层级 | 功能 |
|---|---|---|
| MCP | 工具接入 | Agent → 工具/API |
| A2A | Agent 协调 | Agent → Agent 任务委托 |
| AG-UI | 界面流式 | Agent → UI 实时推送 |
| A2UI | 界面状态 | Agent ↔ UI 持久化同步 |
| AP2 | 生命周期 | 管理 Agent 部署/扩缩容 |
| X42 | 信任治理 | 跨域身份/权限/审计 |
关键洞察: MCP 是这 6 层协议中最成熟、采用最广的一层。A2A v1.0 刚发布,AG-UI/A2UI 在复杂场景中快速普及,AP2/X42 还在早期。
贡献者阶梯(2026 路线图新增)
AAIF 为 MCP 项目建立了正式的贡献者晋升机制:
社区参与者 → WG 贡献者 → WG 促进者 → 主维护者 → 核心维护者
每个层级有明确的提名和评审标准,确保项目不依赖少数个人。这是 MCP 从「一个公司的开源项目」走向「真正的社区治理」的重要标志。
MCP 与其他协议/标准的关系
| 协议/标准 | 定位 | 与 MCP 关系 |
|---|---|---|
| A2A | Agent 间协调 | 互补:MCP 管工具接入,A2A 管 Agent 协作 |
| OpenAPI | REST API 描述 | 互补:MCP 可消费 OpenAPI 规范自动生成 Server |
| gRPC | 高性能 RPC | 互补:MCP 可用 gRPC 作为传输层 |
| LangChain Tools | 框架内工具 | 兼容:LangChain 已原生支持 MCP |
| Function Calling | 模型原生工具 | 互补:MCP 可作为 Function Calling 的工具来源 |
| WAB | Web Agent 桥接 | 互补:WAB 让 Agent 标准化访问网页,MCP 让 Agent 标准化调用 API |
MCP 安全模型与最佳实践
• 用户/Agent
• (不可信环境)
• ───────────────────────────────────────────┤
• MCPClient(安全层)
• •权限控制:决定Agent可以调用哪些工具
• •输入验证:过滤和验证所有请求参数
• •速率限制:防止滥用和DoS
• •审计日志:记录所有工具调用
• ───────────────────────────────────────────┤
• MCPServer(执行层)
• •业务逻辑执行
• •数据访问控制
• •敏感信息过滤
• ───────────────────────────────────────────┤
• 外部系统(数据库/API)
• •最小权限访问
• •数据脱敏
• ───────────────────────────────────────────┘
# ❌ 危险:允许 Agent 访问整个文件系统
@app.list_resources()
async def list_resources():
return [Resource(uri="file:///*", name="All Files")]
# ✅ 安全:限制在特定目录
@app.list_resources()
async def list_resources():
return [
Resource(
uri="file:///workspace/docs",
name="Project Documentation"
),
Resource(
uri="file:///workspace/src",
name="Source Code"
)
]
import re
@app.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "execute_command":
cmd = arguments.get("command", "")
# 禁止危险命令
dangerous_patterns = ['rm -rf', 'sudo', 'dd ', '> /dev/', '| bash']
for pattern in dangerous_patterns:
if pattern in cmd:
raise ValueError(f"命令包含禁止模式: {pattern}")
# 限制命令长度
if len(cmd) > 1000:
raise ValueError("命令过长")
# 只允许白名单命令
allowed_prefixes = ['ls ', 'cat ', 'grep ', 'head ', 'wc ']
if not any(cmd.startswith(p) for p in allowed_prefixes):
raise ValueError("命令不在白名单中")
import re
def sanitize_output(text: str) -> str:
"""从输出中移除敏感信息"""
# 移除 API Key 模式
text = re.sub(r'sk-[a-zA-Z0-9]{48}', '[REDACTED_API_KEY]', text)
# 移除密码
text = re.sub(r'"password":\s*"[^"]*"', '"password": "[REDACTED]"', text)
# 移除 IP 地址(可选)
text = re.sub(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', '[REDACTED_IP]', text)
return text
import logging
import json
from datetime import datetime
audit_logger = logging.getLogger("mcp-audit")
@app.call_tool()
async def call_tool(name: str, arguments: dict):
# 记录审计日志
audit_logger.info(json.dumps({
"timestamp": datetime.utcnow().isoformat(),
"tool": name,
"arguments": {k: v for k, v in arguments.items()
if k not in ["password", "token", "api_key"]},
"status": "success"
}))
# 正常处理...Headless AI + MCP:未来的 Agent 服务架构
结合 Salesforce Headless 360 和 MCP 协议,我们看到了 AI 服务的未来方向:
什么是 Headless AI?
Simon Willison 在 2026 年 4 月引用的 Matt Webb 观点:
"Headless services are about to become much more common — because using personal AIs is a better experience for users than using services directly."
Headless AI 的核心思想:
MCP + Headless 架构
这个架构的优势:
- 统一入口:用户只需要一个 AI 助手,就能访问所有服务
- 自然语言交互:用自然语言代替点击和表单
- 自动化工作流:Agent 可以跨多个服务编排复杂流程
- 权限集中管理:在 MCP Client 层统一控制所有工具的访问权限
构建 Headless MCP 服务
下面是一个将现有 REST API 转换为 MCP Server 的示例:
部署方式:
- 本地:通过 stdio 连接
- 远程:通过 SSE 或 WebSocket
- 容器化:Docker + Kubernetes 部署
• 用户→[个人AI助手]→[MCPClient]→[MCPServer]→[HeadlessService]
• → GitHub API
• → 数据库
• → 文件系统
• → 任何 MCP 服务
from mcp.server import Server
from mcp.server.fastmcp import FastMCP
import httpx
import os
# 使用 FastMCP 简化开发
mcp = FastMCP("headless-service")
@mcp.tool()
async def query_database(sql: str, params: dict = None) -> str:
"""查询数据库(只读)"""
# 安全:只允许 SELECT
if not sql.strip().upper().startswith("SELECT"):
return "❌ 只允许 SELECT 查询"
async with httpx.AsyncClient() as client:
response = await client.post(
"http://database-service:8080/query",
json={"sql": sql, "params": params},
headers={"Authorization": f"Bearer {os.environ['DB_TOKEN']}"}
)
return response.json()["result"]
@mcp.tool()
async def create_record(table: str, data: dict) -> str:
"""创建数据记录"""
async with httpx.AsyncClient() as client:
response = await client.post(
f"http://api-service:8080/{table}",
json=data,
headers={"Authorization": f"Bearer {os.environ['API_TOKEN']}"}
)
return f"✅ 创建成功: {response.json()['id']}"
@mcp.resource("config://app")
async def get_app_config() -> str:
"""获取应用配置信息"""
return """
{
"app_name": "AI Master",
"version": "2.0.0",
"features": ["knowledge", "tools", "blog", "news"],
"api_endpoint": "https://ai-master.cc/api"
}
"""
if __name__ == "__main__":
mcp.run()MCP vs 其他 Agent 工具方案的全面对比
| 维度 | MCP | LangChain Tools | OpenAI Function Calling | AutoGPT Tools |
|---|---|---|---|---|
| 标准化程度 | ⭐⭐⭐⭐⭐ 协议标准 | ⭐⭐⭐ 框架内标准 | ⭐⭐⭐⭐ OpenAI 生态 | ⭐⭐ 自定义格式 |
| 跨框架兼容 | ✅ 所有 MCP 客户端 | ❌ 仅 LangChain | ❌ 仅 OpenAI 模型 | ❌ 仅 AutoGPT |
| 安全模型 | ✅ 协议层安全 | ⚠️ 依赖框架实现 | ⚠️ 模型层有限控制 | ❌ 基本无安全层 |
| 能力发现 | ✅ 自动 Discovery | ⚠️ 手动注册 | ✅ 自动发现 | ⚠️ 部分自动 |
| 远程部署 | ✅ SSE/WebSocket | ⚠️ 需要额外配置 | ❌ 仅本地 | ❌ 仅本地 |
| 社区生态 | 📈 快速增长 | ✅ 成熟 | ✅ 成熟 | 📉 减少 |
| 学习曲线 | 中等 | 低(框架内) | 低 | 中等 |
| 生产就绪 | ✅ 是 | ✅ 是 | ✅ 是 | ⚠️ 实验性 |
| 多工具连接 | ✅ 一个 Client 连多个 Server | ⚠️ 需手动集成 | ❌ 每次定义 | ⚠️ 有限支持 |
| 版本控制 | ✅ 协议版本化 | ⚠️ 框架版本绑定 | ✅ API 版本化 | ❌ 无 |
选择建议
总结与行动指南
MCP 正在成为 AI Agent 的「标准插座」
就像 USB-C 统一了物理接口,MCP 正在统一 AI Agent 与外部世界的连接方式。2026 年,支持 MCP 已经成为 AI 工具的标准配置。
关键要点回顾
- MCP 是什么:标准化的 Agent-工具连接协议,基于 JSON-RPC 2.0
- 三层架构:Host(应用)→ Client(协议)→ Server(工具)
- 三大能力:Tools(调用)、Resources(读取)、Prompts(模板)
- 安全模型:Client 层权限控制 + Server 层执行隔离
- NSA 安全指南:三层防御(传输层 + 协议层 + 应用层),2026 年 5 月发布
- 企业合规:MCP-Basic → Standard → Enterprise → Critical 四级认证
- 生态现状:SDK 月下载 1.64 亿次,公开 Server 超 10,000 个
- 未来趋势:MCP + A2A + AGUI = 完整 Agent 协议栈
NSA 安全指南要点(2026 年 6 月新增)
NSA 在 2026 年 5 月发布了首份针对 Agent 协议的国家级安全指南,识别了五大 MCP 威胁:
- 恶意 MCP Server 注入:供应链攻击发布含恶意代码的 Server
- 工具描述投毒:修改工具描述诱导 Agent 执行非预期操作
- 上下文窗口溢出攻击:大量资源数据挤掉安全指令
- 跨 Server 权限提升:利用信任传递突破权限边界
- 中间人攻击:拦截和篡改 Streamable HTTP 通信
NSA 推荐三层防御:L1 传输层(TLS 1.3 + OAuth 2.1)→ L2 协议层(能力协商 + 审计日志)→ L3 应用层(沙箱 + 人类审批)。
企业 MCP 合规认证(AAIF 2026 年 6 月推出)
| 认证等级 | 适用场景 |
|---|---|
| MCP-Basic(TLS + OAuth) | 内部工具、非敏感数据 |
| MCP-Standard(+ 审计 + 沙箱) | 企业应用、客户数据 |
| MCP-Enterprise(+ SOC 2 + 人类审批) | 金融、医疗、政府 |
| MCP-Critical(+ 红队 + 零信任) | 关键基础设施 |
下一步行动
- 体验 MCP:在 Claude Desktop 中配置一个 MCP Server
- 构建第一个 Server:用 Python 或 TypeScript 写一个简单工具
- 安全加固:参考 NSA 指南实施三层防御
- 合规认证:根据数据敏感度选择 MCP 认证等级
- 关注生态:关注 MCP 社区的最新 Server 实现
MCP 不是未来的技术——它就是现在。每个 AI 开发者都应该了解并使用它。
MCP + ACP + A2A 三协议融合架构(2026 年 6 月新增)
2025 年 8 月,IBM 的 ACP(Agent Communication Protocol)正式合并入 Linux Foundation 旗下的 A2A 项目。 这一事件标志着 Agent 协议生态从「三足鼎立」走向「两层标准」:MCP 负责 Agent ↔ 工具连接,A2A(含 ACP 子模块)负责 Agent ↔ Agent 通信。
MCP 在新格局中的定位变化:
在 ACP 合并之前,MCP、A2A、ACP 三个协议存在功能重叠——ACP 和 A2A 都处理 Agent 间通信。合并后,边界变得清晰:
- MCP 的定位不变:仍然是 Agent 连接外部工具和数据源的标准协议。A2A/ACP 的合并没有影响 MCP 的核心职责。
- MCP 成为 A2A 的「工具层」:当 A2A Agent 需要调用外部工具时,通过 MCP 协议连接。MCP 从「独立协议」升级为「A2A 生态的标准工具接口」。
- MCP 的 Agent Card 被 A2A 采纳:ACP 的 Agent Card 格式(描述 Agent 能力的 JSON 结构)被 A2A 作为标准的能力描述格式。MCP Server 现在也可以使用这种格式描述自己的工具能力。
企业三协议选型矩阵(2026 年 6 月版):
| 场景 | 推荐方案 | 说明 |
|---|---|---|
| 单 Agent + 多工具 | MCP only | 最简单的场景,只需工具连接 |
| 多 Agent 协作 + 共享工具 | MCP + A2A | A2A 管编排,MCP 管工具 |
| 需要轻量级消息传递 | MCP + A2A(启用 ACP 子模块) | ACP 的 SSE 流式能力 |
| 跨组织 Agent 协作 | MCP + A2A + VC 认证 | 可验证凭证确保信任 |
| 完整企业 Agent 平台 | MCP + A2A + ACP + 审计层 | 全栈方案 |
关键洞察:MCP 不会被 A2A 吸收。 两者的职责完全不同——MCP 解决「Agent 如何使用工具」,A2A 解决「Agent 如何委托任务给其他 Agent」。它们是互补关系,不是替代关系。在 2026 年的生产环境中,超过 80% 的企业 Agent 部署同时使用了 MCP 和 A2A。
架构图示
🎯 相关面试题
巩固本篇知识点,备战 AI 岗位面试。
- 中级概念高频查看详解 →
什么是 MCP(Model Context Protocol)?解决什么问题?
Anthropic 提出的开放协议,标准化 LLM 与外部工具/数据源连接,类似 AI 应用的 USB 接口。
- 中级概念高频查看详解 →
Batch Normalization 的作用是什么?
对 mini-batch 特征做归一化,缓解内部协变量偏移,加速收敛,有一定正则效果。
- 初级概念查看详解 →
如何实现程序与大模型的集成?有哪些方式?
程序接入大模型的主流方式包括直接调 API 或本地推理、用框架/SDK、Function Calling 工具调用、MCP 标准化接工具、RAG 接知识、结构化输出对接业务,并需处理流式、超时重试、限流、降级与可观测。
- 中级编码查看详解 →
如何在 Spring AI 框架中集成 MCP?
Spring AI 通过 starter 提供 MCP 双向支持:作 Client 把远端 tools 自动注册为 ToolCallback 供模型调用,作 Server 把本地 @Tool 暴露成服务,传输支持 stdio/SSE/Streamable HTTP。