MCP协议:AI Agent时代的通用插座

MCP协议:AI Agent时代的通用插座

想象一个场景:你要AI帮你整理销售报表。

没有MCP时,AI只能说”请把数据给我,我来帮你分析”——然后你还得自己打开Excel、手动上传。

有了MCP,AI直接调用文件系统、打开Excel、整理数据生成图表,回传给你。

这就是MCP的价值:让AI从说话机器变成数字员工


协议解决什么问题

AI Agent工具调用,长期面临碎片化问题。每个工具、每个数据源都需要开发者手动写适配代码——接GitHub API要一套,接数据库要一套,接文件系统又是一套。

更核心的问题是语义一致性:不同工具输入输出格式千差万别,而LLM需要统一方式描述”这个工具能做什么”、“接受什么参数”、“返回什么结果”。

MCP(Model Context Protocol)由Anthropic在2024年底提出,目标是定义一套标准协议,让AI模型与外部工具、数据源、服务之间实现标准化通信。


核心架构:客户端-服务端

MCP采用经典的客户端-服务端架构:

AI应用(Host) → MCP Client → JSON-RPC 2.0 over stdio/SSE → MCP Server → 外部工具/数据源

通信消息格式为JSON-RPC 2.0,支持两种传输方式:

stdio(本地进程通信):适合简单场景,工具服务本地运行。

SSE(HTTP长连接):适合云端托管场景,客户端通过HTTP POST发送请求,服务端通过SSE流式返回响应。

三个核心概念

概念类型作用
Tools动词可被模型调用的函数,带JSON Schema参数结构
Resources名词可被读取的数据源,类似文件系统中的文件
Prompts模板预定义的提示词模板,复用经验

工具定义:描述质量决定调用成功率

MCP工程中,最重要却最容易被忽视的部分是工具描述

工具描述质量直接影响模型判断是否调用、传什么参数。花在设计工具描述上的时间,会在减少误调用上加倍收回。

Tool(
name="search_documents",
description="在知识库中搜索相关文档。适用于需要查找特定主题、概念或历史记录的场景。",
inputSchema={
"type": "object",
"properties": {
"query": { "type": "string", "description": "搜索查询词,支持自然语言" },
"limit": { "type": "integer", "description": "返回结果数量,默认5", "default": 5 }
},
"required": ["query"]
}
)

好的工具描述应包含:适用场景(什么时候该用)、输入参数(语义和格式要求)、返回结果(结构和含义)。


生态现状(2026年)

截至2026年初,MCP已成为事实标准:

  • Claude、Cursor、VS Code Copilot 均原生支持
  • 社区Server数量超过5000个
  • Google宣布在其Gemini模型和SDK中原生支持MCP,称之为”正在迅速成为AI Agent时代的开放标准”

主流客户端支持:

  • Claude Desktop
  • Cursor(内置MCP支持)
  • Continue.dev(VS Code插件)
  • LangChain/LangGraph(通过适配层接入)

多语言SDK:Python(最成熟)、TypeScript(Node.js生态)、Go(社区贡献)。


MCP vs Function Calling:怎么选

维度Function CallingMCP
工具发现代码中硬编码运行时动态发现
工具共享与应用强耦合可被多个应用复用
更新方式需要重部署应用独立更新服务器
适用场景简单、固定工具集复杂、可扩展工具生态
开发成本低(直接集成)高(需维护服务器)

工程选择建议

  • 工具数量少(< 10个)、变化频率低 → Function Calling足够
  • 工具数量多、需要跨多个AI应用复用 → 优先考虑MCP
  • 已有独立工具服务(如内部API) → 封装为MCP服务器是最佳实践

落地步骤

步骤一:识别工具边界

  • 读取类:查询数据、获取信息
  • 写入类:修改数据、触发动作
  • 有副作用类:发邮件、执行代码(需特别设计确认机制)

步骤二:设计工具描述(花时间打磨,这是核心)

步骤三:建立测试框架

@pytest.mark.asyncio
async def test_search_tool():
server_params = StdioServerParameters(command="python", args=["my_mcp_server.py"])
async with ClientSession(*server_params) as session:
result = await session.call_tool(
"search_documents",
{"query": "人工智能", "limit": 3}
)
assert len(result.content) > 0

步骤四:监控与可观测性(记录调用成功率、延迟、错误类型)


总结

MCP不是银弹,它的工程复杂度不低——需要维护独立的服务器、处理安全控制、管理并发。

但对于需要构建复杂AI Agent系统、需要跨应用复用工具、需要让AI真正动手干活的开发者来说,MCP是当前最成熟的标准方案。

2026年,MCP已经从技术概念进化为生产级基础设施——这不是终点,而是起点。


← Back to blog