什么是MCP协议?

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 于 2024 年底发布的一套开放协议标准,旨在为 AI 大模型与外部工具、数据源之间建立统一的通信接口。你可以把它理解为 AI 世界的 “USB-C 接口”——在 MCP 出现之前,每个 AI 应用想接入一个新的工具或数据源,都需要单独开发一套对接逻辑;有了 MCP 协议之后,只需遵循同一个标准,AI 就能像插 USB 设备一样即插即用地连接各种外部能力。

MCP 协议的核心价值在于:它让 AI 不只是一个”聊天机器人”,而是一个能够主动查询数据库、调用 API、读写文件的智能执行者。这一点对于 AI 智能体(Agent)的开发至关重要,因为 Agent 的核心能力之一就是工具调用(Function Calling / Tool Use)。

MCP协议的全称:Model Context Protocol,中文翻译为”模型上下文协议”。


为什么需要MCP协议?

在 MCP 出现之前,开发者面临一个”N×M 集成问题”:N 个 AI 模型 × M 个外部工具 = N×M 套对接代码。这导致:

  1. 重复开发:同样的数据库查询功能,接入 Claude 写一遍,接入 GPT 再写一遍
  2. 安全风险:每个集成都是独立的安全面,难以统一审计
  3. 生态割裂:工具开发者需要为每个 AI 平台单独适配

MCP 协议通过定义一套标准化的 Client-Server 架构,彻底解决了这个问题:

1
2
3
4
5
6
AI 应用(Client)

├── MCP Server A(数据库查询)
├── MCP Server B(文件系统)
├── MCP Server C(第三方 API)
└── MCP Server D(浏览器自动化)

一次开发,所有支持 MCP 的 AI 应用(Claude Desktop、Cursor、VS Code 等)都能复用。这也是为什么业界把 MCP 协议称为 “AI 工具调用的 USB 时刻”


MCP协议的核心架构

MCP 协议采用经典的 Client-Server 设计,包含三个核心角色:

角色职责示例
MCP HostAI 应用本身Claude Desktop、Cursor、VS Code
MCP Client协议客户端,维护与 Server 的 1:1 连接Host 内嵌的协议层
MCP Server提供具体能力的服务端数据库查询 Server、文件系统 Server

通信方式

MCP 协议支持两种传输层:

  • stdio(标准输入输出):Client 启动 Server 作为子进程,通过 stdin/stdout 传递 JSON-RPC 消息。适合本地工具
  • HTTP + SSE(Server-Sent Events):远程 MCP Server 通过 HTTP 协议通信,支持流式返回。适合云端部署

三大原语

MCP Server 通过三类核心原语向 AI 暴露自己的功能:

原语作用使用场景
Tools可执行的函数调用查询数据库、发送邮件、调用 API
Resources结构化的只读数据读取文件、获取配置、查询知识库
Prompts预先定义好的 Prompt 模板代码审查模板、文档生成模板

这种设计非常精妙:AI 通过 Tools 执行操作、通过 Resources 获取上下文信息、通过 Prompts 复用最佳实践。三者结合,构成了 AI Agent 与真实世界交互的完整能力闭环——这也正是我们在 AI 智能体研究助手 实战中反复用到的模式。


从零开发你的第一个 MCP Server

下面我们用一个 Python 示例,从零构建一个 天气查询 MCP Server。这个 Server 会暴露一个 get_weather 工具,AI 可以通过它查询指定城市的天气。

环境准备

1
pip install mcp

编写 MCP Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
mcp_weather_server.py - 天气查询 MCP Server
"""
import json
import httpx
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

server = Server("weather-server")

@server.list_tools()
async def list_tools() -> list[Tool]:
"""暴露给 AI 的工具列表"""
return [
Tool(
name="get_weather",
description="查询指定城市的实时天气信息",
inputSchema={
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如'北京'、'上海'"
}
},
"required": ["city"]
}
)
]

@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
"""处理 AI 的工具调用请求"""
if name == "get_weather":
city = arguments["city"]

# 调用公开天气 API
async with httpx.AsyncClient() as client:
resp = await client.get(
f"https://api.weather.com/v1/current",
params={"city": city}
)
data = resp.json()

return [TextContent(
type="text",
text=json.dumps({
"city": city,
"temperature": data["temp_c"],
"condition": data["condition"],
"humidity": data["humidity"]
}, ensure_ascii=False)
)]

raise ValueError(f"Unknown tool: {name}")

async def main():
async with stdio_server() as (read, write):
await server.run(read, write)

if __name__ == "__main__":
import asyncio
asyncio.run(main())

配置到 Claude Desktop

在 Claude Desktop 的配置文件中注册这个 Server:

1
2
3
4
5
6
7
8
9
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["mcp_weather_server.py"],
"cwd": "/path/to/your/project"
}
}
}

配置完成后,重启 Claude Desktop,你就可以在对话中直接让 AI 查天气了:

1
2
用户:北京今天天气怎么样?
Claude 会自动调用 get_weather("北京") → 返回实时天气数据

MCP Server 市场与推荐

截至 2026 年 5 月,MCP 生态已经有数千个开源 Server。以下是社区公认最值得安装的 MCP Server:

类别MCP Server功能
🔗 数据库@modelcontextprotocol/server-postgresPostgreSQL 查询
📁 文件系统@modelcontextprotocol/server-filesystem安全文件读写
🗂️ 知识库@modelcontextprotocol/server-memory持久化记忆存储
🌐 浏览器@anthropic/mcp-server-puppeteer网页自动化操作
🗺️ 地图高德地图 MCP Server地理编码、路径规划
📊 数据MCP Server Chart数据可视化图表生成
🔍 搜索Exa MCP Server联网实时搜索

你可以通过 GitHub MCP Server 列表 发现更多生态项目,也可以访问 modelcontextprotocol.io 查看官方文档。


MCP协议与A2A协议的区别

很多人会混淆 MCP 协议和 A2A 协议(Agent-to-Agent Protocol,Google 推出):

维度MCP协议A2A协议
提出方AnthropicGoogle
核心场景AI 调用外部工具/数据源AI Agent 之间的通信协作
类比AI 的”USB 接口”AI 的”REST API”
状态生态成熟,数千个 Server标准制定中

两者并不冲突,而是互补:MCP 解决 AI 怎么用工具,A2A 解决 AI 之间怎么协作


MCP协议的安全考量

MCP 协议让 AI 获得了访问文件系统、数据库甚至执行命令的能力,这不可避免地引入了安全风险:

  1. 权限隔离:MCP Server 应遵循最小权限原则,只暴露必要的工具和资源
  2. 输入校验:所有从 AI 传来的参数必须经过服务端校验,防止注入攻击
  3. 沙箱执行:对高风险操作(如命令执行、网络请求)应在沙箱环境中运行
  4. 审计日志:记录所有通过 MCP 执行的操作,方便溯源

如果你正在构建自己的 MCP Server 并计划部署上线,可以参考 DeepSeek API 实用指南 中关于 API 安全管理的最佳实践。


总结:为什么你应该关注MCP协议

MCP 协议正处在爆发前夜。2025-2026 年,Claude Desktop、Cursor、VS Code 等主流 AI 工具已全面支持 MCP,数千个 MCP Server 覆盖了数据库、文件系统、浏览器、地图等几乎所有开发场景。

对于开发者来说,MCP 协议意味着:

  • 一次开发,到处运行:写一个 MCP Server,所有 AI 应用都能用
  • 生态红利:社区已经有海量现成的 MCP Server 可直接使用
  • 技术前沿:掌握 MCP 就是掌握了 AI Agent 工具调用的核心能力

当下正是深入学习 MCP 协议的最佳窗口——生态已成熟但中文资料仍然稀缺。如果你是 AI 开发者,建议从 GitHub MCP Server 市场 开始,找一个感兴趣的 Server 跑起来,再尝试用 Python SDK 写自己的第一个 MCP Server。

MCP Server 写好后可以直接接入 CC GUI 插件 扩展 Claude Code 的能力边界。

从概念到实战,MCP 协议正在重新定义 AI 与真实世界的交互方式。而这一切,才刚刚开始。