什么是MCP协议
MCP(Model Context Protocol)是Anthropic在2024年底开源的AI Agent标准化协议。它解决了一个核心问题:如何让大模型以统一的方式接入各种外部工具和数据源。
在MCP之前,每个AI应用都需要为每个工具单独编写对接代码——接一个天气API写一套,接一个数据库又写一套。MCP定义了统一接口标准,工具开发者只需实现一次MCP协议,就可以被任何支持MCP的Agent使用。我们在上海的AI开发团队已将MCP作为所有Agent项目的标准协议。
MCP的核心架构
MCP采用客户端-服务端架构:
- MCP Host:AI应用本体(如Claude Desktop、自研Agent)
- MCP Client:嵌入在Host中,负责与Server通信
- MCP Server:工具提供方,封装具体能力(数据库查询、文件操作、API调用)
通信协议基于JSON-RPC 2.0,支持stdio和SSE两种传输方式。
MCP的三大原语
1. Tools(工具)
最常用的原语。Agent通过Tool执行具体操作——查询数据库、调用API、生成文件。每个Tool定义了名称、描述和参数Schema。Agent根据Tool描述自动判断何时调用。
2. Resources(资源)
只读数据源。Agent可以读取Resource获取上下文信息——文件内容、数据库schema、配置信息。与Tool的区别是Resource不产生副作用。
3. Prompts(提示模板)
预定义的Prompt模板。MCP Server可以提供专业领域的Prompt模板,Agent调用时填充参数即可。
实践:开发一个MCP Server
以下是一个简单的MCP Server示例,提供数据库查询能力:
from mcp import Server, Tool
server = Server("db-query")
@server.tool()
def query_database(sql: str) -> str:
"""执行SQL查询并返回结果"""
result = db.execute(sql)
return format_result(result)
server.run(stdio=True)
开发完成后,任何支持MCP的Agent都可以直接使用这个数据库查询工具,无需额外对接代码。
MCP vs Function Calling
Function Calling是大模型厂商各自的实现,每家格式不同——OpenAI和Claude的格式不一样。MCP是跨模型的标准协议——同一套MCP Server可以同时服务GPT、Claude、GLM等不同模型的Agent。
我们的实践建议:用MCP作为工具层标准,Function Calling作为模型层适配。这样切换大模型时不需要重写工具代码。
生态现状
截至2026年,MCP生态已快速发展:Anthropic Claude原生支持、开源社区贡献了200+现成MCP Server(数据库、文件系统、GitHub、Slack等)。上海的AI开发者社区也在积极贡献MCP工具。如果你在做Agent开发,现在就开始用MCP协议封装你的工具。
常见问题
MCP和API网关有什么区别?
API网关是通用的请求转发层,不理解语义。MCP的Tools有自然语言描述,Agent能自主判断何时使用、如何组合。MCP是面向AI的”语义化API网关”。
开发一个MCP Server需要多长时间?
简单工具(如API封装)1-2天。中等复杂度(如数据库查询+格式化)3-5天。复杂工具(如多步骤工作流)1-2周。Python和TypeScript SDK可用。
MCP支持哪些编程语言?
官方提供Python和TypeScript SDK。社区贡献了Go、Rust、Java等语言的实现。不同语言的MCP Server可以互通,因为协议是JSON-RPC标准。