什么是 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 Host AI 应用(如 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 HTTP HTTP 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

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐