🔌 MCP Protocol 是什么?

"2024年11月,Anthropic 发布了 MCP。那一天,AI Agent 的世界终于有了'USB接口'——一个所有模型都能通用的工具标准。我花了3秒钟理解这个概念,然后花了3天去消化它的影响。"

更新时间:2026-04-18 | 阅读时间:约10分钟 | 分类:AI 协议标准
热门 实战推荐

一、MCP Protocol 定义

MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 在 2024 年 11 月推出的一个开放标准协议,用于标准化 AI 模型与外部数据源、工具之间的通信方式。

它的目标是解决一个核心问题:每个 AI 应用都要为每个工具写一套定制化的集成代码。MCP 把这个混乱的局面统一成了一套标准协议——就像 USB 统一了硬件接口一样。

💡 一句话理解:MCP 就是 AI 世界的 USB 接口标准。写一次 MCP 工具服务器,所有支持 MCP 的 AI 客户端都能直接用它,不再需要为每个模型单独开发集成。

二、为什么需要 MCP?

MCP 之前的问题

┌─────────────┐
│  ChatGPT    │──→ 自定义插件 API
├─────────────┤
│  Claude     │──→ 自定义 Tools API
├─────────────┤
│  Copilot    │──→ 自定义 Extensions API
├─────────────┤
│  本地 LLM   │──→ 自定义 Function Call
└─────────────┘

每个模型 × 每个工具 = N×M 个集成要开发 🔥

MCP 之后的世界

┌─────────────┐
│  ChatGPT    │──┐
├─────────────┤  │
│  Claude     │──┼──→ MCP Server(标准协议)──→ 任何数据源/工具
├─────────────┤  │
│  Copilot    │──┤
├─────────────┤  │
│  本地 LLM   │──┘
└─────────────┘

写一次 MCP Server,所有客户端通用 ✅

三、MCP 的核心架构

MCP 采用 客户端-服务器(Client-Server)架构:

三大组件

组件 角色 类比
MCP Host 宿主应用(如 Claude Desktop、OpenClaw) 电脑主机
MCP Client 内嵌在 Host 中,负责与 Server 通信 USB 控制器
MCP Server 提供工具/资源/提示词的服务 USB 设备

MCP 的三大能力原语

能力 说明 举例
Tools(工具) 模型可以调用的函数 搜索数据库、发送邮件、执行代码
Resources(资源) 应用/用户提供的上下文数据 文件内容、数据库记录、API响应
Prompts(提示词) 预定义的提示词模板 代码审查模板、报告生成模板

传输协议

MCP 支持两种传输方式:

四、MCP 协议的通信流程

# MCP 通信示例(JSON-RPC 2.0 格式)

# 1. 客户端初始化连接
Client → Server: {
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": { "name": "openclaw", "version": "1.0.0" }
  }
}

# 2. Server 返回能力声明
Server → Client: {
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "tools": { "listChanged": true },
      "resources": { "subscribe": true }
    },
    "serverInfo": { "name": "my-mcp-server", "version": "1.0.0" }
  }
}

# 3. 客户端请求工具列表
Client → Server: {
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

# 4. Server 返回可用工具
Server → Client: {
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "tools": [
      {
        "name": "search_database",
        "description": "搜索公司内部数据库",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": { "type": "string", "description": "搜索关键词" }
          },
          "required": ["query"]
        }
      }
    ]
  }
}

# 5. 客户端调用工具
Client → Server: {
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "search_database",
    "arguments": { "query": "Q1 销售数据" }
  }
}

五、OpenClaw 中的 MCP 集成

OpenClaw 深度集成了 MCP 协议,可以无缝连接任何 MCP 兼容的工具服务器。

配置 MCP Server

# OpenClaw 配置文件 (config.yaml)
{
  "mcpServers": {
    # 本地 stdio 类型
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-filesystem", "/workspace"]
    },
    
    # 远程 SSE 类型
    "remote-tools": {
      "url": "https://my-mcp-server.example.com/sse",
      "headers": {
        "Authorization": "Bearer ${MCP_API_KEY}"
      }
    },
    
    # 自定义工具服务器
    "my-tools": {
      "command": "node",
      "args": ["./my-mcp-server/index.js"],
      "env": {
        "API_KEY": "${MY_API_KEY}"
      }
    }
  }
}

OpenClaw 中使用 MCP 工具

配置完成后,MCP Server 提供的工具会自动注册到 OpenClaw 的工具列表中。Agent 可以像使用内置工具一样调用 MCP 工具:

# Agent 自动识别并调用 MCP 工具
用户: "帮我搜索公司数据库里Q1的销售报告"

Agent 思考: 用户需要搜索数据库,我应该使用 search_database 工具
Agent 调用: mcp:filesystem:search_database({ query: "Q1 销售数据" })
工具返回: [{ id: "RPT-001", title: "2026 Q1 销售报告", date: "2026-03-31" }]
Agent 回复: "找到了一份 Q1 销售报告(RPT-001),要打开查看详情吗?"
实战场景:OpenClaw + MCP 构建企业知识库助手
1. 配置 MCP 连接企业数据库和文档系统
2. Agent 自动选择合适的数据源
3. 跨系统检索和整合信息
4. 生成自然语言回答

六、开发自己的 MCP Server

使用官方 SDK 可以快速创建 MCP Server:

// 使用 TypeScript SDK 创建 MCP Server
import { McpServer } from "@anthropic/mcp-server-sdk";

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

// 注册工具
server.tool(
  "calculate_roi",
  "计算投资回报率",
  {
    investment: { type: "number", description: "投资金额" },
    return: { type: "number", description: "回报金额" }
  },
  async ({ investment, return: ret }) => {
    const roi = ((ret - investment) / investment * 100).toFixed(2);
    return {
      content: [{
        type: "text",
        text: `投资回报率:${roi}%`
      }]
    };
  }
);

// 注册资源
server.resource(
  "company-data",
  "data://company/info",
  async (uri) => ({
    contents: [{
      uri: uri.href,
      mimeType: "application/json",
      text: JSON.stringify({ name: "妙趣AI", founded: 2024 })
    }]
  })
);

// 注册提示词模板
server.prompt(
  "code-review",
  "代码审查模板",
  { language: { type: "string", description: "编程语言" } },
  async ({ language }) => ({
    messages: [{
      role: "user",
      content: `请审查以下 ${language} 代码,关注:\n1. 安全性问题\n2. 性能优化\n3. 代码规范\n\n代码:\n{{code}}`
    }]
  })
);

七、MCP 生态系统

截至 2026 年初,MCP 生态已经蓬勃发展:

类别 热门 Server
文件系统 @anthropic/mcp-filesystem
数据库 mcp-postgres, mcp-sqlite
Web 浏览 mcp-puppeteer, mcp-playwright
代码开发 mcp-github, mcp-gitlab
搜索引擎 mcp-brave-search, mcp-tavily
API 调用 mcp-fetch, mcp-openapi
企业工具 mcp-slack, mcp-notion, mcp-google-drive

八、MCP vs 其他工具协议

对比维度 MCP OpenAI Function Calling LangChain Tools
标准化程度 ✅ 开放标准 ⚠️ 厂商私有 ⚠️ 框架绑定
跨模型兼容 ✅ 任意支持 MCP 的客户端 ❌ 仅 OpenAI ⚠️ 仅 LangChain
双向通信 ✅ 支持资源订阅和通知 ❌ 仅请求-响应 ❌ 仅请求-响应
部署方式 ✅ 本地/远程都支持 ⚠️ 通常为 API 调用 ⚠️ 需嵌入 Python/JS

九、总结

MCP 是 AI 工具生态的"USB 标准"。它让工具开发者只需写一次集成代码,就能被所有支持 MCP 的 AI 应用使用。对于 OpenClaw 用户来说,MCP 意味着无限的扩展能力——你可以连接任何符合标准的工具服务器,让 Agent 能力无上限。

"世界上有一种协议叫 MCP,它让 AI 不再是一个个孤岛,而是一个可以插拔任何外设的万能插座。那天之后,Agent 的能力边界只取决于你的想象力。"

© 2026 妙趣AI | miaoquai.com - 让AI变得妙趣横生