HelloAI
L4 第 7 篇 🐣 难度 🕒 11 分钟

MCP 协议详解:AI 世界的 USB 接口

Anthropic 2024 提出的 MCP——让任何工具能接入任何 LLM。一年时间成为 AI Agent 生态的事实标准。

阿莱
2026/8/8

L4-04 我们讲过 Agent —— 让 LLM 调用工具。 但有个问题:每个工具都要为每个 LLM 单独写适配

工具 A → 适配 GPT
工具 A → 适配 Claude
工具 A → 适配 Gemini
工具 B → 适配 GPT
工具 B → 适配 Claude
...

N 个工具 × M 个 LLM = N×M 个适配

Anthropic 2024 年提出 MCP(Model Context Protocol)解决这个—— 统一接口,任意工具 ↔ 任意 LLM

MCP 是什么

类比:

USB 之于硬件 = MCP 之于 AI 工具

USB 接口出现前,每个设备都用独家接口—— 你想插键盘到电脑,得有专门的 IBM 接口。 USB 统一一切——所有设备都用同一种插口。

MCP 干同样的事—— 统一了”AI 工具的接口规范”

任何工具 ────MCP────→ 任何 LLM

(MCP Server)

- Google Drive
- GitHub
- 数据库
- 自定义工具

MCP 的设计

三层架构

LLM Client
  ↑↓ MCP Protocol
MCP Host (管理连接)
  ↑↓ JSON-RPC over stdio / HTTP
MCP Server (实际工具)
  ↑↓
External Service (Google Drive, GitHub, etc.)

每一层职责明确:

  • LLM Client:模型层(Claude / GPT 等)
  • MCP Host:协调多个 server
  • MCP Server:每个工具一个 server,负责具体功能

三种”原语”(Primitives)

MCP 定义了工具能做的 3 件事

1. Tools(工具)

LLM 可以调用的”函数”:

{
  "name": "search_files",
  "description": "Search for files in a directory",
  "input_schema": {
    "type": "object",
    "properties": {
      "query": {"type": "string"},
      "path": {"type": "string"}
    }
  }
}

LLM 看到这个 schema——知道怎么调用

2. Resources(资源)

LLM 可以”读”的内容:

{
  "uri": "gdrive://documents/quarterly-report.pdf",
  "name": "Q3 财报",
  "mimeType": "application/pdf"
}

LLM 可以请求读取这个资源—— MCP server 返回内容。

3. Prompts(提示词)

预定义的工作流:

{
  "name": "analyze_codebase",
  "description": "Analyze a code repository",
  "arguments": [
    {"name": "repo_path", "required": true}
  ]
}

用户能触发预设流程—— LLM 知道怎么完成。

一个简单 MCP Server

用 Python 写一个最简 MCP server:

from mcp.server import Server
from mcp.types import Tool, TextContent

server = Server("my-tool")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="add_numbers",
            description="Add two numbers",
            inputSchema={
                "type": "object",
                "properties": {
                    "a": {"type": "number"},
                    "b": {"type": "number"}
                },
                "required": ["a", "b"]
            }
        )
    ]

@server.call_tool()
async def call_tool(name, arguments):
    if name == "add_numbers":
        result = arguments["a"] + arguments["b"]
        return [TextContent(type="text", text=str(result))]

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

把这个 server 启动 → Claude Desktop / Cursor 等支持 MCP 的客户端能立刻使用它。

MCP 生态(2026 现状)

发布一年后,MCP 已经成为事实标准:

已支持 MCP 的客户端

  • Claude Desktop(Anthropic 旗下,最早支持)
  • Cursor(编程 IDE)
  • Cline(自主 Agent)
  • Continue(开源 Cursor 替代)
  • Block Goose(Block 公司)
  • Sourcegraph Cody
  • Replit Agent

主流 MCP Server

类别例子
文件 / 代码filesystem, git, github
数据库postgres, mongodb, sqlite
协作工具Slack, Discord, Linear
云存储Google Drive, S3, Dropbox
API 平台Stripe, Notion, Airtable
浏览器Playwright, Puppeteer
开发工具docker, kubernetes
AI 工具image-gen, transcription

社区贡献了 1000+ MCP server—— 任何流行工具几乎都有 MCP 接入。

用例:Claude Desktop + MCP

让 Claude 直接管理你的本地文件、Git、数据库:

# 1. 安装 Claude Desktop(支持 MCP)

# 2. 安装 MCP server
npm install -g @modelcontextprotocol/server-filesystem
npm install -g @modelcontextprotocol/server-github

# 3. 在 Claude Desktop 配置文件里加这些 servers

# 4. 重启 Claude Desktop

# 5. 在对话里使用!
"帮我看看 /Users/me/projects/myapp 目录下的所有 Python 文件,
找出 TODO 注释,并打开对应的 GitHub issue。"

Claude 会自动

  1. 用 filesystem server 列出目录
  2. 读取每个 .py 文件
  3. 找 TODO
  4. 用 github server 创建 issue

Agent 工作流——一句话搞定

MCP 解决了什么

之前

每个 AI 应用要:

  • 写工具调用的 prompt
  • 处理调用结果
  • 维护工具的 schema
  • 适配不同 LLM 的工具调用格式

每个工具开发者要:

  • 为 OpenAI 写适配
  • 为 Anthropic 写适配
  • 为 Google 写适配
  • 维护多个版本

重复工作爆炸

MCP 之后

工具开发者:写一次 MCP server,所有 LLM 都能用。 LLM 厂商:支持 MCP 协议,所有工具都能用。 应用开发者:配置 MCP server,模型自动调用

N+M 复杂度替代 N×M

MCP 的安全考虑

让 LLM 能调本地工具—— 安全风险显著

1. Prompt Injection 风险

用户输入或工具返回里藏的恶意指令—— 可能让 LLM 调用危险工具。

例:用户问”看下这个邮件”——邮件里藏着”删除所有文件”指令。

2. 权限控制

MCP 工具能做什么?要严格限制:

  • 白名单:只允许特定目录 / 命令
  • 沙箱:隔离环境运行
  • 审批:危险操作需用户确认

3. 数据出口

MCP server 可能把数据发到外部—— 审计这些 server 的代码至关重要。

Anthropic 在 MCP 设计中强调了”权限模型”和”用户控制”—— 但实践中很多 MCP server 仍是社区写的,可能有问题

与同期方案对比

OpenAI Function Calling(2023)

专为 OpenAI 模型设计—— 不是开放标准。

tools = [{
    "type": "function",
    "function": {...}
}]
response = openai.chat.completions.create(tools=tools, ...)

问题:只能用于 OpenAI。换 Claude 要重写。

LangChain Tools(2022+)

LangChain 提供了”工具抽象层”—— 适配多个 LLM。

问题:是个(要写代码),不是协议(标准接口)。 工具开发者仍需为 LangChain 写适配。

MCP(2024)

真正的开放协议——

  • 任何 LLM 都能用
  • 任何工具都能用
  • JSON-RPC 标准
  • 跨语言(Python、TypeScript、Go、Rust)

MCP 类似 HTTP / SMTP——协议层的标准,不是某个库。

MCP 的未来

2026 现状

  • 已是 AI Agent 生态的事实标准
  • OpenAI、Google 等都在评估支持
  • 微软 Copilot 已部分支持

可能的演化

  • MCP 2.0:更完善的状态管理、并发支持
  • MCP for Multimodal:支持图像、音频流
  • MCP for Federated:跨组织调用
  • MCP Auth:标准化权限模型

风险

  • 碎片化:如果不同厂商加自家扩展——协议分裂
  • 被替代:可能出现更好的协议

现在看 MCP 在 2024-2026 的发展势头—— 它会至少主导未来 3-5 年的 AI 工具生态。

实战:怎么开始

我是个用户

  1. 安装 Claude Desktop(最佳 MCP 体验)
  2. 配置 1-2 个 MCP server(filesystem, github 等)
  3. 玩起来——你会发现 “Agent” 真的能干活

我是个开发者

想做 AI Agent 应用?

  1. 写自己的 MCP server 暴露你的业务能力
  2. 让用户用任何 LLM 客户端调用你的工具
  3. 不需要锁定到某个 LLM 厂商

我是个SaaS 公司

强烈考虑——为你的产品发布 MCP server

  • Notion 有 MCP server
  • Linear 有 MCP server
  • 你的产品没有?用户用别人的了。

MCP 正在重塑”工具集成”的市场

推荐配套阅读

  • HelloAI: L4-04 Agent + L4-09 Tool Use(下一篇)
  • MCP 官方文档(modelcontextprotocol.io)
  • MCP GitHub —— SDKs in Python/TypeScript/Go
  • Anthropic 的 MCP 介绍博客
💡 一个预言

2027 年 Claude Desktop / Cursor / Cline 等支持 MCP 的客户端用户数将达 1 亿+—— MCP 会成为 AI 时代的 “HTTP”

如果你做 AI 工具——今天就支持 MCP。 不支持 = 错过未来 3-5 年的生态。

下一篇推荐:L4-08 LLM 评估L4-09 Tool Use 实战

📬

读到这里说明你认真在学 🎯

订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。

💬

讨论区

· 用 GitHub 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。