MCP 协议:AI 工具的"USB-C"统一标准

2024 年 11 月,Anthropic 发布了 Model Context Protocol(MCP)。半年内,OpenAI、Google、Microsoft、Cursor 等纷纷采纳。它被誉为 AI 工具的 USB-C 标准。

一、为什么需要 MCP

1.1 之前的混乱:M×N 集成问题

没有 MCP 时:
- Cursor 要连 GitHub → 写一套集成
- Claude 要连 GitHub → 写一套集成
- ChatGPT 要连 GitHub → 又写一套集成

每多一个 AI 工具 × 每个 SaaS = 新的集成工作
N 个 AI × M 个 SaaS = N×M 集成噩梦

1.2 MCP 的解决方案

有了 MCP 后:
- GitHub 实现一次 MCP Server
- 所有支持 MCP 的 AI 都能用

N 个 AI × M 个 SaaS = N + M 个实现

这就是 USB-C 的故事:以前每台设备一个接口,现在一根线通用。

二、MCP 是什么

2.1 核心概念

MCP = Model Context Protocol
模型上下文协议

连接 AI 模型 与 工具/数据 的标准协议
让 AI 能访问本地文件、数据库、API、Git 等

2.2 三个核心角色

1. Host(主机)
   - Claude Desktop、Cursor、Cline 等
   - AI 应用本身

2. Client(客户端)
   - Host 内置的 MCP 客户端
   - 负责与 Server 通信

3. Server(服务器)
   - 提供具体能力的工具
   - 例如:文件系统、GitHub、Postgres
   - 每个 Server 是一组 tools + resources + prompts

2.3 三大原语

MCP Server 暴露三类能力: Tools:可调用的函数(类似 OpenAPI)

@mcp.tool()
def search_github(query: str) -> list[dict]:
    """搜索 GitHub 仓库"""
    return github.search(query)

Resources:可读取的资源(文件、数据库行)

@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
    """读取文件内容"""
    return open(path).read()

Prompts:可复用的提示词模板

@mcp.prompt()
def code_review(code: str) -> str:
    return f"请审查以下代码:\n\n{code}"

三、MCP 工作原理

3.1 协议基础

MCP 基于 JSON-RPC 2.0
传输:stdio(本地)/ HTTP + SSE(远程)
消息格式:JSON

3.2 一次工具调用流程

1. 用户:"帮我看看 ~/Documents/report.pdf 的最新修改"
2. AI 思考 → 决定调用 read_file 工具
3. Client 通过 MCP 协议发送请求给 Server:
   {
     "jsonrpc": "2.0",
     "method": "tools/call",
     "params": {
       "name": "read_file",
       "arguments": {"path": "report.pdf"}
     }
   }
4. Server 执行:open("report.pdf").read()
5. Server 返回结果
6. AI 收到结果,整理成回答
7. 用户看到:"最新修改是第 3 页... "

3.3 资源读取

类似但更轻量:直接读取数据,不需要执行

3.4 提示词模板

Client 请求 Server 返回预设的 prompt
用户填入参数
提交给 AI

四、MCP vs Function Calling

4.1 Function Calling(OpenAI 2023)

  • 每个 AI 厂商有自己的格式
  • 不通用
  • 需要为每个 AI 重新适配

4.2 MCP(2024)

  • 统一协议
  • 一次开发,所有 AI 可用
  • 类似 LSP(Language Server Protocol)
维度Function CallingMCP
标准各家私有开放标准
集成N×MN+M
调试各家工具统一调试器
生态各自封闭共享

五、上手指 MCP

5.1 用现成的 MCP Server

社区已有 100+ MCP Server:

# 官方服务器列表
- @modelcontextprotocol/server-filesystem
- @modelcontextprotocol/server-github
- @modelcontextprotocol/server-postgres
- @modelcontextprotocol/server-puppeteer
- @modelcontextprotocol/server-slack

# 社区服务器
- mcp-server-notion
- mcp-server-linear
- mcp-server-jira

5.2 在 Claude Desktop 配置

// claude_desktop_config.json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {"GITHUB_TOKEN": "xxx"}
    },
    "postgres": {
      "command": "python",
      "args": ["-m", "mcp_server_postgres", "--connection-string=postgres://..."]
    }
  }
}

5.3 在 Cursor 配置

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "github": {
      "url": "https://mcp.github.com/sse",
      "headers": {"Authorization": "Bearer xxx"}
    }
  }
}

六、构建第一个 MCP Server

6.1 Python 实现

# 安装
pip install mcp

# my_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool()
def get_weather(city: str) -> str:
    """获取城市天气"""
    # 调用天气 API
    return f"{city} 的天气是..."

@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
    """读取文件"""
    with open(path) as f:
        return f.read()

if __name__ == "__main__":
    mcp.run()

6.2 TypeScript 实现

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

const server = new McpServer({
  name: "my-server",
  version: "1.0.0",
});

server.tool(
  "get_weather",
  { city: z.string() },
  async ({ city }) => ({
    content: [{ type: "text", text: `${city} 天气是...` }],
  })
);

server.run();

6.3 调试 MCP Server

# 用 MCP Inspector
npx @modelcontextprotocol/inspector

# 它会启动一个 Web UI
# 可以测试每个 tool、resource、prompt

七、真实应用场景

7.1 个人效率

MCP 服务器组合:
- filesystem:访问本地文件
- github:管理代码仓库
- notion:管理笔记
- calendar:管理日程

AI 助手能:
- "帮我写一份 [主题] 的报告,参考 ~/Documents/notes/"
- "把今天的工作总结到 Notion"
- "查找所有关于 [主题] 的 GitHub Issue"

7.2 团队协作

MCP 服务器:
- jira:项目管理
- slack:团队沟通
- github:代码
- figma:设计

AI 助手能:
- "这个 bug 的相关讨论在哪?"
- "把设计稿转成前端代码"
- "分析团队效率"

7.3 企业级

私有 MCP 服务器:
- 数据库查询
- 内部 API
- ERP/CRM

AI 助手能:
- 回答业务问题
- 自动生成报告
- 辅助决策

八、未来展望

8.1 短期(2025-2026)

  • MCP Server 数量爆发:100 → 10,000+
  • AI 工具全面支持:所有主流 AI 都内置 MCP 客户端
  • MCP 调试工具成熟:类似 Postman

8.2 中期(2027-2028)

  • MCP 市场:买卖 MCP Server
  • MCP 安全标准:防止恶意 Server
  • 远程 MCP:跨网络调用(已部分支持)

8.3 长期

  • AI 操作系统:MCP 是"系统调用"
  • AI 应用商店:MCP Server 是"应用"
  • AI 互联网:MCP 协议是"HTTP"

九、上手指南

9.1 第一天

  • 安装 Claude Desktop
  • 配置一个 filesystem MCP Server
  • 让 AI 总结你的文件夹

9.2 第一周

  • 添加 github、notion 等 Server
  • 尝试复杂任务:跨多个工具的工作流
  • 找到你最常用的 3 个 MCP Server

9.3 第一月

  • 自己写一个简单的 MCP Server
  • 分享给团队或社区
  • 探索更复杂的应用

十、给开发者的启示

10.1 立即行动

  1. 试试 MCP:Claude Desktop + filesystem server
  2. 找痛点:哪些重复工作可以让 AI 做?
  3. 写 MCP Server:把内部工具变成 MCP

10.2 长期价值

MCP 是 AI 时代的 HTTP。
  • HTTP 让 web 互联 → MCP 让 AI 工具互联
  • 早期 web 公司靠 HTTP 赚钱 → 早期 MCP 公司靠 AI 工具赚钱
MCP 不会取代任何现有技术,它让 AI 真正变得"有用"。

当 AI 能访问你的所有数据 + 所有工具 + 所有服务时, 它就从"聊天机器人"变成"真正的助手"。