Skip to content

Model Context Protocol (MCP)

MCP(Model Context Protocol) 是 Anthropic 主导开发的一种开放标准协议,旨在为 AI 应用程序提供与外部系统(数据源、工具、工作流)交互的统一接口。它将 AI 模型与外部世界的连接标准化,被誉为"AI 应用的 USB-C 接口"。

Overview

在 MCP 出现之前,每个 AI 应用(Claude、ChatGPT、VS Code 等)都需要为集成的外部系统(文件系统、数据库、API、日历等)编写自定义适配代码。这种碎片化的集成模式导致:

  • 重复劳动:每个 AI 应用重复实现相同的工具集成
  • 不可移植:为一个平台编写的集成无法在其他平台复用
  • 安全风险:缺乏统一的安全审核和权限控制框架

MCP 通过提供一个标准化的协议层来解决这些问题——让 AI 应用作为 MCP Host,外部系统通过 MCP Server 暴露能力,两者通过 JSON-RPC 2.0 协议进行标准化通信。

类比理解

USB-C 接口    = MCP 协议
USB-C 设备    = MCP Server(文件系统、数据库、GitHub……)
USB-C 主机    = MCP Host(Claude Desktop、VS Code、ChatGPT……)

就像 USB-C 统一了电子设备的连接方式,MCP 统一了 AI 应用与外部世界的连接方式。

Architecture

MCP 遵循 客户端-服务器架构,基于 JSON-RPC 2.0 作为通信协议。

核心参与者

┌─────────────────────────────────────────────────────────┐
│                   MCP Host (AI 应用)                      │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │Client 1  │  │Client 2  │  │Client 3  │  ← 每个Client │
│  │(连接管理) │  │(连接管理) │  │(连接管理) │    对应一个Server│
│  └────┬─────┘  └────┬─────┘  └────┬─────┘              │
└───────┼───────────────┼───────────────┼──────────────────┘
        │ JSON-RPC 2.0  │               │
  ┌─────▼──────┐  ┌────▼─────┐  ┌──────▼─────┐
  │ MCP Server │  │MCP Server│  │ MCP Server │
  │ (本地/远程) │  │ (本地)   │  │  (远程)    │
  │  文件系统   │  │  数据库   │  │  GitHub    │
  └────────────┘  └──────────┘  └────────────┘
角色说明示例
MCP Host管理用户体验并协调多个 Client 的 AI 应用Claude Desktop、VS Code、ChatGPT
MCP ClientHost 为每个 Server 创建的协议级连接组件一个 Host 可以有多个 Client
MCP Server通过标准化接口暴露特定能力的程序文件系统、数据库、GitHub、Slack 等

两种传输方式

传输方式适用场景特点
STDIO本地 MCP Server进程内通信,一对一连接,适合文件系统等本地资源
Streamable HTTP远程 MCP Server网络通信,一对多连接,适合 API/SaaS 集成

Core Primitives

MCP Server 通过三种核心原语暴露能力:

1. Resources(资源)

只读的被动数据源,为模型提供上下文信息。

属性说明
用途检索文档、读取文件、访问知识库、获取日历
控制方应用(MCP Host/Client 决定何时使用)
协议操作resources/list — 列出可用资源;resources/read — 读取资源内容
典型场景AI 在回答问题前检索相关文档作为上下文

2. Tools(工具)

模型可主动调用的操作,支持写操作。

属性说明
用途写入数据库、调用外部 API、发送消息、修改文件
控制方模型(LLM 根据上下文决定是否调用)
协议操作tools/list — 发现可用工具及其 JSON Schema 定义;tools/call — 执行特定工具
安全机制工具执行可能需要用户授权(user consent),确保用户保持控制
典型场景AI 写代码时调用 GitHub MCP 创建 PR、发消息时调用 Slack MCP

3. Prompts(提示词模板)

预构建的指令模板,指导模型如何与特定工具和资源协作。

属性说明
用途规划假期、总结会议、起草邮件、代码审查
控制方用户(用户选择使用哪个模板)
协议操作prompts/list — 列出可用提示词;prompts/get — 获取提示词模板内容
典型场景用户说"帮我规划假期",触发含航班工具调用模板

三者协作示例

以旅行助手场景为例:

用户: "帮我规划下周去东京的行程"

MCP Server (航班工具):  tools/call → 搜索航班
MCP Server (酒店资源):  resources/read → 获取酒店推荐
MCP Server (日历资源):  resources/read → 读取用户日历确认空闲时间
Prompt 模板:             组织输出为结构化行程单

Client Features

MCP Client 除了消费 Server 提供的能力外,还可以提供以下功能给 Server:

Elicitation(信息征询)

允许 Server 在交互过程中主动向用户请求特定信息——提供了一种结构化方式来按需收集信息。例如旅行预订 Server 可以询问乘客偏好、座位类型、联系方式。

Roots(根目录)

允许 Client 指定 Server 应关注的工作范围,通过一种协调机制来设定边界。例如代码审查 Server 可能只被授予访问特定项目目录的权限。

Security Model

MCP 设计了一套多层级的安全模型:

层级机制说明
用户授权工具执行前可能要求用户确认(user consent)用户对模型的每个重要操作保持最终控制
信任边界本地 STDIO Server 与远程 HTTP Server 的信任层级不同远程 Server 需要额外的身份验证
根目录隔离Roots 机制限制 Server 可访问的路径范围防止 Server 越权访问文件系统
认证方案支持 Bearer Token、API Key、OAuth2 等多种认证方式通过 Authorization header 传递

Versioning

MCP 使用基于日期的版本标识符,格式为 YYYY-MM-DD,表示最后一次不向后兼容变更的日期。只要变更保持向后兼容,协议版本不会递增。这允许在保持互操作性的同时进行增量改进。

当前最新协议版本:2025-11-25

Ecosystem

SDK 支持

MCP 官方提供以下语言的 SDK,已在 GitHub 开源(MIT 许可证):

  • Python SDK — 完整的 async/await 支持
  • TypeScript/JavaScript SDK — 服务端和客户端实现
  • Java SDK — 基于 Reactor 的响应式实现
  • Kotlin SDK — 基于协程的轻量级实现
  • Go SDK — 基于 Go 协程的高性能实现

已知的 MCP Server 实现

类型示例
代码/开发GitHub、GitLab、Filesystem、VS Code
通信Slack、Notion、Google Calendar、Gmail
数据PostgreSQL、SQLite、DuckDB、Elasticsearch
创意Figma、Blender、Photoshop
基础设施Kubernetes、Docker、AWS、Cloudflare
搜索/知识Brave Search、Tavily、Perplexity

已知的 MCP Host

Host支持方
Claude DesktopAnthropic
Claude CodeAnthropic
VS CodeMicrosoft
ZedZed Industries
CursorCursor
IntelliJ IDEAJetBrains(插件)
Continue.devContinue
Sourcegraph CodySourcegraph

MCP vs Harness Engineering

MCP 与 Harness Engineering 在概念上互补:

MCPHarness Engineering
范围协议层:标准化 AI ↔ 外部工具的通信方法论层:设计约束、反馈回路、整体架构
关注点连接(Connection)控制(Control)
输出可插拔的工具/资源/提示词标准AGENTS.md、linter、机械约束
关系MCP Server 是 Harness 中 Tools 层的标准实现Harness 是 MCP 的更高层设计哲学

在 Harness Engineering 的组件清单中,MCP Server 对应"Tools & MCP"组件——为智能体提供标准化的能力扩展接口。

Why MCP Matters

  1. 标准化消除了重复集成 — 一个 MCP Server 可供所有主流 AI 应用复用,不再"为每个平台写一遍"
  2. 降低了 AI 应用开发门槛 — 开发者只需实现标准协议即可让自己的系统被 AI 访问
  3. 提升了安全性 — 统一的用户授权框架和信任边界模型
  4. 生态系统效应 — MCP Registry 将发展为类似 npm/PyPI 的工具市场
  5. 与 Agent 范式天然契合 — Tools 原语是 Agent 调用外部能力的基础

Open Questions

  • MCP 在跨模型可移植性方面的表现如何?使用 MCP 的 Agent 是否能更自由地在模型间切换?
  • MCP Registry 是否会形成类似 npm 的垄断效应?
  • MCP 对工具调用的延迟开销是否会影响 Agent 的实时性?
  • MCP 与 OpenAI 的 Function Calling、Google 的 Tool Use 标准如何竞合?

Sources

AI Knowledge Base — 持续积累