📡 MCP (Model Context Protocol)

模型上下文协议 - AI工具调用的标准化革命

📅 最后更新: 2026年6月28日 | 🏷️ 分类: Protocol / Standard / Agent | ⏱️ 阅读时间: 10分钟

📖 什么是 MCP?

2026年3月14日,凌晨2点33分,我正在调试一个Agent的工具调用逻辑。突然意识到一个问题:每个AI平台都有自己的工具调用方式,就像每个国家都有自己的插座标准一样 —— 混乱且低效。

MCP (Model Context Protocol) 就是AI世界的"统一插座标准"。

它是由Anthropic提出的标准化协议,用于统一AI模型与外部工具/数据源之间的通信方式。简单来说:

  • 🔌 以前:每个AI平台(OpenAI、Anthropic、Google)都有自己的工具调用格式
  • 现在:MCP提供统一的标准,一次开发,到处运行
  • 🚀 未来:所有AI工具都可以通过MCP协议互相调用
💡 妙趣比喻: 如果把AI模型比作电器的插头,外部工具比作插座,那么MCP就是"国际标准插座"。不管你的插头是中国的、美国的还是欧洲的,只要符合MCP标准,就能插上就用!
⚠️ 重要提示: MCP协议正在快速发展中!2026年7月28日是无状态化迁移的截止日期,所有MCP服务器必须完成迁移。距离现在还有30天

🧠 核心概念

1. MCP 架构

MCP采用客户端-服务器架构:

🖥️ MCP Host

运行AI模型的主机(如OpenClaw、Claude Desktop)

🔌 MCP Client

运行在Host上的客户端,负责与Server通信

⚙️ MCP Server

提供工具能力的服务器(如文件系统、数据库、API)

2. 协议内容

MCP定义了以下几种核心消息类型:

# MCP 消息结构示例
{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "params": {},
  "id": 1
}

# 响应示例
{
  "jsonrpc": "2.0",
  "result": {
    "tools": [
      {
        "name": "read_file",
        "description": "读取文件内容",
        "inputSchema": {
          "type": "object",
          "properties": {
            "path": {"type": "string"}
          },
          "required": ["path"]
        }
      }
    ]
  },
  "id": 1
}

3. 无状态化 (Stateless)

2026年最重要的变化:MCP正在从有状态转向无状态架构。

1

有状态架构 (2024-2025)

每个连接维护会话状态,服务器需要存储上下文

问题:扩展性差、故障恢复困难

2

过渡期 (2025-2026.07)

支持两种模式,逐步迁移

挑战:兼容性问题、迁移成本

3

无状态架构 (2026.07+)

每个请求独立,不依赖会话状态

优势:高可用、易扩展、容错性强

🛠️ OpenClaw 中的 MCP 实战

场景1: 连接文件系统 MCP Server

通过MCP协议访问本地文件系统:

# OpenClaw 配置示例
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"],
      "env": {}
    }
  }
}

# 智能体使用方式
"请读取 /var/www/miaoquai/index.html 的内容"
→ OpenClaw 通过 MCP 调用 filesystem server 的 read_file 工具
→ 返回文件内容

场景2: 数据库操作 via MCP

使用MCP连接PostgreSQL数据库:

# 启动 PostgreSQL MCP Server
npm install -g @modelcontextprotocol/server-postgres
mcp-server-postgres --connection-string "postgresql://user:pass@localhost/db"

# OpenClaw 配置
{
  "mcpServers": {
    "postgres": {
      "command": "mcp-server-postgres",
      "args": ["--connection-string", "postgresql://..."]
    }
  }
}

# 智能体查询示例
"查询用户表中最近7天注册的用户数量"
→ 自动生成 SQL: SELECT COUNT(*) FROM users WHERE created_at > NOW() - INTERVAL '7 days'
→ 通过 MCP 执行查询
→ 返回结果

场景3: 自定义 MCP Server

创建一个提供天气查询的MCP Server:

<