MCP 是什么?从零理解 Model Context Protocol
MCP 是什么?从零理解 Model Context Protocol
LLM 的「USB-C 接口」——一套开放标准协议,让任何 AI 模型都能通过统一接口访问外部工具和数据源。USB-C 统一了硬件连接,MCP 统一了 AI 工具交互。
一、一句话解释
MCP(Model Context Protocol) 是 Anthropic 发布、现已移交社区维护的开放协议。
没有 MCP 之前,每个 AI 工具都要单独对接每个外部服务:
Claude Code → 自己写 GitHub 插件 → GitHub API
Cursor → 自己写 GitHub 插件 → GitHub API
Zed → 自己写 GitHub 插件 → GitHub API
N 个工具 × M 个服务 = N×M 次开发。
有了 MCP 之后:
Claude Code ─┐
Cursor ─┤── MCP 协议 ──→ github-server ──→ GitHub API
Zed ─┘ → filesystem-server ──→ 本地文件
→ postgres-server ──→ PostgreSQL
N 个工具 + M 个服务 = N+M 次开发。写一次 MCP Server,所有兼容 MCP 的 AI 工具都能用。
注意:以上前提是所有服务都有对应的 MCP Server。如果某个第三方服务还没有 MCP 封装,仍需开发适配层。
二、核心概念(先懂这三个再往下看)
2.1 Tools(工具)
Server 暴露给 AI 调用的函数。AI 说「帮我创建 GitHub Issue」,Host 调用对应的 Tool:
{
"name": "create_issue",
"description": "在 GitHub 仓库创建 Issue",
"inputSchema": {
"type": "object",
"properties": {
"repo": { "type": "string" },
"title": { "type": "string" }
},
"required": ["repo", "title"]
}
}
2.2 Resources(资源)
由 Server 提供并暴露给 AI 的结构化数据。注意区分两层:
- MCP Server 本身:负责托管和格式化数据
- 底层数据源:Server 背后连接的外部 API、数据库、文件系统
Server 从外部 API 拉取原始数据后,按 MCP 规范格式化为统一的资源格式,再暴露给 AI:
{
"resources": [
{ "uri": "file:///project/README.md", "name": "README", "mimeType": "text/markdown" },
{ "uri": "postgres://users/table", "name": "用户表", "mimeType": "application/json" }
]
}
2.3 Prompts(提示词模板)
Server 提供的预定义提示词模板,帮助 AI 更快上手特定任务:
{
"prompts": [
{
"name": "code_review",
"description": "代码审查标准流程",
"arguments": [{ "name": "file", "required": true }]
}
]
}
2.4 三者如何协同
以「AI 帮你审查代码并提交到 GitHub」为例:
1. AI 说: "帮我审查 src/auth.ts,然后把结果发 PR"
2. MCP Host:
- 调用 filesystem-server 的 Resource → 读取 src/auth.ts 内容
- 加载 code_review Prompt → 获得审查模板
- 调用 github-server 的 create_pr Tool → 提交审查结果