什么是 MCP?Model Context Protocol 详解
什么是 MCP?Model Context Protocol 详解
TL;DR: MCP(Model Context Protocol)是一个开放协议标准,就像 AI 领域的"USB-C 接口",让 AI 应用能够标准化地连接外部数据源、工具和工作流。本文深入解析 MCP 的架构、核心概念和使用场景。
MCP 是什么?
MCP(Model Context Protocol) 是一个开源协议标准,用于将 AI 应用连接到外部系统。
通过 MCP,AI 应用(如 Claude、ChatGPT)可以连接:
- 数据源:本地文件、数据库
- 工具:搜索引擎、计算器
- 工作流:专业提示词模板
把 MCP 想象成 AI 应用的"USB-C 接口"——就像 USB-C 提供了连接电子设备的标准化方式一样,MCP 提供了 AI 应用连接外部系统的标准化方式。
MCP 能做什么?
| 场景 | 描述 |
|---|---|
| 个人助理 | 访问 Google Calendar 和 Notion,成为更个性化的 AI 助手 |
| 代码生成 | Claude Code 可以根据 Figma 设计稿生成整个 Web 应用 |
| 企业聊天 | 连接企业内多个数据库,让用户通过聊天分析数据 |
| 3D 设计 | AI 模型在 Blender 中创建 3D 设计并打印 |
为什么 MCP 重要?
| 角色 | 收益 |
|---|---|
| 开发者 | 减少构建和集成 AI 应用的时间和复杂度 |
| AI 应用/Agent | 接入数据源、工具和应用的生态系统,增强能力 |
| 终端用户 | 获得更强大的 AI 应用,能访问数据并代为执行操作 |
架构解析
MCP 角色
┌─────────────────────────────────────────────────────────┐
│ MCP Host (AI 应用) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Client1 │ │ Client2 │ │ Client3 │ │ Client4 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼───────────┼───────────┼───────────┼────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────────────────┐
│ Server A│ │ Server B│ │ Server C │
│ (本地) │ │ (本地) │ │ (远程) │
│ 文件系统│ │ 数据库 │ │ Sentry │
└─────────┘ └─────────┘ └─────────────────────┘
三个核心角色:
| 角色 | 说明 |
|---|---|
| MCP Host | AI 应用(如 Claude Desktop、VS Code),协调多个 MCP 客户端 |
| MCP Client | 维护与 MCP Server 的连接,为 Host 获取上下文 |
| MCP Server | 提供上下文数据给 MCP 客户端的程序 |
两层架构
MCP 由两层组成:
1. 数据层(Data Layer)
- 基于 JSON-RPC 2.0 的通信协议
- 定义生命周期管理
- 核心原语:Tools、Resources、Prompts
2. 传输层(Transport Layer)
| 传输方式 | 说明 |
|---|---|
| Stdio | 标准输入/输出流,用于本地进程通信,延迟最低 |
| Streamable HTTP | HTTP POST + SSE,支持远程服务,支持 Bearer Token、API Key 等认证 |
核心原语(Primitives)
MCP 定义了服务器可以暴露的三种核心原语:
1. Tools(工具)
AI 应用可以调用的可执行函数:
{
"name": "filesystem_read",
"description": "读取文件内容",
"inputSchema": {
"type": "object",
"properties": {
"path": { "type": "string" }
}
}
}
2. Resources(资源)
为 AI 应用提供上下文的数据源:
{
"uri": "file:///project/schema.sql",
"name": "database_schema",
"description": "数据库表结构"
}
3. Prompts(提示模板)
帮助构建与语言模型交互的可复用模板:
{
"name": "code_review",
"description": "代码审查提示模板",
"arguments": [
{ "name": "language", "required": true }
]
}
生命周期管理
MCP 是有状态的协议,需要通过握手协商能力:
// 客户端发起初始化
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": { "elicitation": {} },
"clientInfo": { "name": "my-app", "version": "1.0.0" }
}
}
// 服务器响应
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": { "listChanged": true },
"resources": {}
},
"serverInfo": { "name": "example-server", "version": "1.0.0" }
}
}
初始化交换完成三件事:
- 协议版本协商 — 确保客户端和服务器版本兼容
- 能力发现 — 双方声明支持的特性(Tools、Resources、Prompts)
- 身份交换 — 交换应用信息用于调试
MCP 生态支持
MCP 是一个开放协议,被广泛支持:
AI 助手:
- Claude
- ChatGPT
开发工具:
- Visual Studio Code
- Cursor
- Claude Code
- JetBrains IDEs
更多客户端: modelcontextprotocol.io/clients
快速开始
构建 MCP Server
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server")
@mcp.tool()
def calculate(a: int, b: int) -> int:
"""两数相加"""
return a + b
@mcp.resource("config://app")
def get_config() -> str:
"""返回应用配置"""
return '{"version": "1.0.0"}'
连接 MCP Server
以 Claude Desktop 为例,编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
},
"sentry": {
"command": "npx",
"args": ["-y", "@sentry/mcp"],
"env": {
"SENTRY_API_KEY": "your-api-key"
}
}
}
}
实际应用示例
示例 1:文件系统访问
# 启动文件系统 MCP 服务器
npx -y @modelcontextprotocol/server-filesystem ~/projects
让 AI 直接读取、搜索和分析本地文件。
示例 2:数据库查询
# 启动 PostgreSQL MCP 服务器
npx -y @modelcontextprotocol/server-postgres \
postgresql://user:pass@localhost/dbname
AI 可以执行 SQL 查询、获取表结构、分析数据。
示例 3:Slack 集成
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["mcp-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-..."
}
}
}
}
AI 可以读取频道消息、发送通知、管理 Slack。
与 OpenClaw 的结合
OpenClaw 在 2026.4.1 版本中增强了 MCP 支持:
作为 MCP 服务器:
openclaw mcp serve
允许 Codex、Claude Code 等客户端直接连接 OpenClaw,通过 MCP 访问飞书、Telegram 等渠道的对话。
作为 MCP 注册中心:
openclaw mcp set filesystem '{"command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","/home"]}'
openclaw mcp list
集中管理 MCP 服务器配置,供 OpenClaw 启动的运行时使用。
总结
MCP 的核心价值:
| 价值点 | 说明 |
|---|---|
| 标准化 | 一次构建,处处运行 |
| 可组合 | 多个 MCP Server 可以同时连接一个 AI 应用 |
| 双向通信 | 不仅 AI 调用工具,工具也可以调用 AI(Sampling) |
| 开放生态 | 官方提供 20+ 参考实现,覆盖所有主流场景 |
MCP 正在成为 AI 应用连接外部世界的标准接口。现在开始学习 MCP,意味着站在了 AI 工具生态的前沿。
参考链接
| 项目 | 内容 |
|---|---|
| 作者 | 胡小纯 |
| 发布日期 | 2026-04-02 |
| 联系微信 | hu–xiaochun |
| 个人主页 | https://胡小纯.cn |
| 备用主页 | https://xn–yets91feqb.cn/ |
技术没有捷径,但有方向
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)