MCP (Model Context Protocol) 完全学习指南

AI 应用的 USB-C 接口:标准化的模型上下文协议深度解析

协议版本: MCP 2025 | 基金会: Agentic AI Foundation (Linux Foundation) | 核心传输: JSON-RPC 2.0


核心指标概览

MCP 生态核心数据

核心原语
3
传输协议
2
官方 SDK
4
社区服务器
100+
创始成员
10+
支持客户端
20+

什么是 MCP?

模型上下文协议 (Model Context Protocol, MCP) 是由 Anthropic 发起、现由 Linux 基金会旗下 Agentic AI Foundation 管理的开放标准协议。它解决了 AI 应用领域长期存在的 “N × M” 集成难题:将 LLM 连接到 GitHub、PostgreSQL 或本地文件系统需要为每个模型和每个数据源编写特定的”胶水代码”,导致维护成本呈指数级增长。

MCP 被形象地称为 “AI 应用的 USB-C 接口”,它通过建立一种标准化的、基于 JSON-RPC 2.0 的通用接口,实现了模型与工具、资源、提示词的解耦,使得一次开发即可在 Claude Desktop、VS Code、Cursor 等多个宿主环境中复用。


MCP 整体架构

系统架构全景图

正在加载图表...

三层架构详解

层级组件职责示例
宿主层MCP HostAI 应用容器,协调 LLM 与用户交互,管理连接生命周期Claude Desktop, VS Code, Cursor
客户端层MCP Client驻留在宿主内部,负责与服务器建立 1:1 连接内置于宿主的协议处理模块
服务器层MCP Server能力提供者,专注特定领域逻辑github-mcp, postgres-mcp, playwright-mcp

核心组件详解

Host (宿主)

正在加载图表...

核心职责:

  • 作为 AI 应用程序的容器(如 Claude Desktop 或 IDE)
  • 协调 LLM 与用户的交互
  • 管理连接生命周期
  • 作为最终的安全守门人
  • 不直接执行工具逻辑,通过客户端聚合来自不同服务器的能力

Client (客户端)

正在加载图表...

核心职责:

  • 驻留在宿主内部
  • 负责与服务器建立 1:1 的连接
  • 处理协议握手、能力协商 (Capability Negotiation)
  • 消息路由
  • 将用户的自然语言请求转化为对服务器工具的结构化调用

Server (服务器)

正在加载图表...

核心职责:

  • 能力的提供者
  • 可以是本地运行的轻量级进程,也可以是远程部署的微服务
  • 专注于特定的领域逻辑(如访问数据库或控制浏览器)
  • 将能力通过 MCP 原语暴露给客户端

传输层协议

传输协议对比

正在加载图表...

STDIO 传输

# 宿主启动服务器进程
npx -y @playwright/mcp@latest

# 或者 Python 服务器
python my_mcp_server.py

特点:

  • 本地开发工具最常用的模式
  • 延迟极低
  • 天然继承宿主进程的用户权限
  • 适合文件系统操作或本地构建任务

HTTP/SSE 传输

正在加载图表...

特点:

  • 适用于分布式部署
  • 支持多客户端连接
  • 需要额外的认证机制(如 OAuth)
  • 适合企业级共享服务

核心原语 (Primitives)

MCP 定义了三种核心原语,它们构成了代理与世界交互的语汇:

正在加载图表...

Tools (工具) - 代理的手

正在加载图表...

机制:

  • 服务器定义工具的名称、描述和 JSON Schema 输入参数
  • 当 LLM 决定调用工具时,它会生成符合 Schema 的参数
  • 客户端将其发送给服务器执行

设计原则:

  • 工具应当是原子化
  • 在可能的情况下设计为幂等 (Idempotent),以便模型在失败时重试
@mcp.tool()
def execute_sql(query: str, database: str) -> dict:
  """
  在指定数据库上执行 SQL 查询。
点击展开查看完整代码14

Resources (资源) - 代理的眼

正在加载图表...

关键特性:

  • URI 寻址:资源通过 URI 进行标识
  • 动态模板:服务器可以暴露资源模板(如 github://issue/{id}
  • 性能优势:使用资源而非工具来获取静态上下文可以显著降低延迟
@mcp.resource("config://app-settings")
def get_app_settings() -> str:
  """返回当前应用程序的全局配置参数"""
  return """
  DEBUG=False
点击展开查看完整代码15

Prompts (提示词) - 代理的剧本

正在加载图表...

作用:

  • 预定义的交互模板
  • 用于指导模型如何使用服务器提供的工具和资源
  • 允许服务器开发者将”领域知识”内嵌到协议中

通信流程详解

完整的请求-响应流程

正在加载图表...

能力协商 (Capability Negotiation)

正在加载图表...

安全性设计

多层安全模型

正在加载图表...

人机回环 (Human-in-the-Loop)

正在加载图表...

OAuth 认证流程(远程服务器)

正在加载图表...

行业应用场景

开发工具与 IDE 增强

正在加载图表...

浏览器自动化 (Playwright-MCP)

正在加载图表...

Playwright-MCP 工具集

工具名称功能描述关键参数战略价值
playwright_navigate访问指定 URLurl, waitUntil代理进入环境的入口
playwright_screenshot页面截图fullPage, selector仅在必要时使用(如验证 UI)
playwright_click点击元素selector基于语义选择器,而非坐标
playwright_fill填写表单selector, value自动化数据录入的核心
playwright_evaluate执行 JS 代码script允许执行复杂的页面逻辑

企业级数据与可观测性

正在加载图表...

技术选型决策框架

MCP vs CLI vs Native Skill

正在加载图表...

决策矩阵

评估维度MCPCLI / ShellNative Skill
核心适用场景系统集成与领域建模临时性运维操作轻量级逻辑扩展
数据交互格式强类型 (JSON Schema)非结构化文本JSON
安全性与管控高 (沙箱化)低 (高风险)
上下文管理主动式 (Resources)被动式
生态复用性通用跨平台环境依赖平台锁定

何时使用 MCP?

黄金法则:当你需要构建一个”领域桥梁”时,请使用 MCP。

适用场景:

  • 连接具有独立逻辑、数据结构和状态的外部系统
  • 数据库、Git 仓库、云平台或复杂的内部 API
  • 需要跨多个 AI 客户端复用的能力

不适用场景:

  • 简单的单行修复
  • 纯计算任务
  • 平台特定功能

开发实战

使用 FastMCP (Python) 开发服务器

from mcp.server.fastmcp import FastMCP

# 1. 初始化服务器
mcp = FastMCP("corporate-data-service")
点击展开查看完整代码66

客户端配置

{
"mcpServers": {
  "corporate-data": {
    "command": "python",
    "args": ["/path/to/corporate_data_server.py"]
点击展开查看完整代码28

配置文件位置

操作系统配置文件路径
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/claude/claude_desktop_config.json

调试与验证

MCP Inspector

MCP 生态提供了 MCP Inspector,这是一个可视化的调试工具:

# 安装并启动 MCP Inspector
npx @modelcontextprotocol/inspector python /path/to/your_server.py

功能:

  • 手动发送 JSON-RPC 请求
  • 测试工具和资源
  • 查看请求响应的详细 Payload
  • 排查 Schema 错误或逻辑 Bug

日志最佳实践

import logging
import sys

# 配置日志输出到 stderr(不是 stdout!)
logging.basicConfig(
点击展开查看完整代码16

进阶模式:代码执行替代工具调用

当处理大规模数据时(如分析一个 100MB 的 CSV 文件),直接调用 MCP 工具并将数据传回给 LLM 会瞬间撑爆上下文窗口。

正在加载图表...

策略:

  1. 让 LLM 编写分析脚本
  2. 通过 MCP 的代码执行工具在服务器端运行
  3. 仅返回高价值的”洞察”

2025 路线图与未来展望

Agentic AI Foundation

2025 年,Anthropic 将 MCP 捐赠给 Linux 基金会并成立 Agentic AI Foundation (AAIF)。创始成员包括 OpenAI、Google、Block 等行业巨头。

正在加载图表...

即将推出的特性

特性描述
远程服务注册中心类似 npm,一键安装”Salesforce 连接器”
代理对代理通信编码代理直接请求数据库代理提供 Schema
状态流服务器推送长运行任务进度
代理原生基础设施API 自动生成 MCP 接口

总结

MCP 的出现是 AI 工程化领域的一个分水岭。 它结束了 LLM 集成的蛮荒时代,用一套标准化的语言统一了模型与世界的交互方式。

核心要点

  1. 三层架构:Host → Client → Server,职责分离
  2. 三大原语:Tools(执行)、Resources(数据)、Prompts(模板)
  3. 两种传输:STDIO(本地)、HTTP/SSE(远程)
  4. 安全优先:人机回环、OAuth 认证、PII 脱敏

最佳实践

  • MCP 优先:构建领域桥梁时首选
  • ⚠️ 慎用 CLI:仅限受控环境的临时操作
  • 📱 善用 Native Skill:平台特定的轻量级扩展
  • 🔐 严格实施人机回环:敏感操作必须用户审批

参考资源


本文档基于 MCP 2025 规范编写,内容会随协议演进持续更新。