什么是 MCP?Model Context Protocol 详解

TL;DR: MCP(Model Context Protocol)是一个开放协议标准,就像 AI 领域的"USB-C 接口",让 AI 应用能够标准化地连接外部数据源、工具和工作流。本文深入解析 MCP 的架构、核心概念和使用场景。


MCP 是什么?

MCP(Model Context Protocol) 是一个开源协议标准,用于将 AI 应用连接到外部系统。

通过 MCP,AI 应用(如 Claude、ChatGPT)可以连接:

  • 数据源:本地文件、数据库
  • 工具:搜索引擎、计算器
  • 工作流:专业提示词模板

把 MCP 想象成 AI 应用的"USB-C 接口"——就像 USB-C 提供了连接电子设备的标准化方式一样,MCP 提供了 AI 应用连接外部系统的标准化方式。


MCP 能做什么?

场景描述
个人助理访问 Google Calendar 和 Notion,成为更个性化的 AI 助手
代码生成Claude Code 可以根据 Figma 设计稿生成整个 Web 应用
企业聊天连接企业内多个数据库,让用户通过聊天分析数据
3D 设计AI 模型在 Blender 中创建 3D 设计并打印

为什么 MCP 重要?

角色收益
开发者减少构建和集成 AI 应用的时间和复杂度
AI 应用/Agent接入数据源、工具和应用的生态系统,增强能力
终端用户获得更强大的 AI 应用,能访问数据并代为执行操作

架构解析

MCP 角色

┌─────────────────────────────────────────────────────────┐
│                    MCP Host (AI 应用)                    │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐     │
│  │ Client1 │  │ Client2 │  │ Client3 │  │ Client4 │     │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘     │
└───────┼───────────┼───────────┼───────────┼────────────┘
        │           │           │           │
        ▼           ▼           ▼           ▼
   ┌─────────┐ ┌─────────┐ ┌─────────────────────┐
   │ Server A│ │ Server B│ │    Server C        │
   │ (本地)  │ │ (本地)  │ │    (远程)           │
   │ 文件系统│ │ 数据库  │ │    Sentry          │
   └─────────┘ └─────────┘ └─────────────────────┘

三个核心角色:

角色说明
MCP HostAI 应用(如 Claude Desktop、VS Code),协调多个 MCP 客户端
MCP Client维护与 MCP Server 的连接,为 Host 获取上下文
MCP Server提供上下文数据给 MCP 客户端的程序

两层架构

MCP 由两层组成:

1. 数据层(Data Layer)

  • 基于 JSON-RPC 2.0 的通信协议
  • 定义生命周期管理
  • 核心原语:Tools、Resources、Prompts

2. 传输层(Transport Layer)

传输方式说明
Stdio标准输入/输出流,用于本地进程通信,延迟最低
Streamable HTTPHTTP POST + SSE,支持远程服务,支持 Bearer Token、API Key 等认证

核心原语(Primitives)

MCP 定义了服务器可以暴露的三种核心原语:

1. Tools(工具)

AI 应用可以调用的可执行函数:

{
  "name": "filesystem_read",
  "description": "读取文件内容",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": { "type": "string" }
    }
  }
}

2. Resources(资源)

为 AI 应用提供上下文的数据源:

{
  "uri": "file:///project/schema.sql",
  "name": "database_schema",
  "description": "数据库表结构"
}

3. Prompts(提示模板)

帮助构建与语言模型交互的可复用模板:

{
  "name": "code_review",
  "description": "代码审查提示模板",
  "arguments": [
    { "name": "language", "required": true }
  ]
}

生命周期管理

MCP 是有状态的协议,需要通过握手协商能力:

// 客户端发起初始化
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "elicitation": {} },
    "clientInfo": { "name": "my-app", "version": "1.0.0" }
  }
}

// 服务器响应
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": { "listChanged": true },
      "resources": {}
    },
    "serverInfo": { "name": "example-server", "version": "1.0.0" }
  }
}

初始化交换完成三件事:

  1. 协议版本协商 — 确保客户端和服务器版本兼容
  2. 能力发现 — 双方声明支持的特性(Tools、Resources、Prompts)
  3. 身份交换 — 交换应用信息用于调试

MCP 生态支持

MCP 是一个开放协议,被广泛支持:

AI 助手:

  • Claude
  • ChatGPT

开发工具:

  • Visual Studio Code
  • Cursor
  • Claude Code
  • JetBrains IDEs

更多客户端: modelcontextprotocol.io/clients


快速开始

构建 MCP Server

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool()
def calculate(a: int, b: int) -> int:
    """两数相加"""
    return a + b

@mcp.resource("config://app")
def get_config() -> str:
    """返回应用配置"""
    return '{"version": "1.0.0"}'

连接 MCP Server

以 Claude Desktop 为例,编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
    },
    "sentry": {
      "command": "npx",
      "args": ["-y", "@sentry/mcp"],
      "env": {
        "SENTRY_API_KEY": "your-api-key"
      }
    }
  }
}

实际应用示例

示例 1:文件系统访问

# 启动文件系统 MCP 服务器
npx -y @modelcontextprotocol/server-filesystem ~/projects

让 AI 直接读取、搜索和分析本地文件。

示例 2:数据库查询

# 启动 PostgreSQL MCP 服务器
npx -y @modelcontextprotocol/server-postgres \
  postgresql://user:pass@localhost/dbname

AI 可以执行 SQL 查询、获取表结构、分析数据。

示例 3:Slack 集成

{
  "mcpServers": {
    "slack": {
      "command": "uvx",
      "args": ["mcp-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-..."
      }
    }
  }
}

AI 可以读取频道消息、发送通知、管理 Slack。


与 OpenClaw 的结合

OpenClaw 在 2026.4.1 版本中增强了 MCP 支持:

作为 MCP 服务器:

openclaw mcp serve

允许 Codex、Claude Code 等客户端直接连接 OpenClaw,通过 MCP 访问飞书、Telegram 等渠道的对话。

作为 MCP 注册中心:

openclaw mcp set filesystem '{"command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","/home"]}'
openclaw mcp list

集中管理 MCP 服务器配置,供 OpenClaw 启动的运行时使用。


总结

MCP 的核心价值:

价值点说明
标准化一次构建,处处运行
可组合多个 MCP Server 可以同时连接一个 AI 应用
双向通信不仅 AI 调用工具,工具也可以调用 AI(Sampling)
开放生态官方提供 20+ 参考实现,覆盖所有主流场景

MCP 正在成为 AI 应用连接外部世界的标准接口。现在开始学习 MCP,意味着站在了 AI 工具生态的前沿。


参考链接


项目内容
作者胡小纯
发布日期2026-04-02
联系微信hu–xiaochun
个人主页https://胡小纯.cn
备用主页https://xn–yets91feqb.cn/

技术没有捷径,但有方向

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐