Skip to main content

MCP 核心概念

1.1 MCP解决什么问题

每个AI应用都需要连接外部系统。没有MCP之前,每个AI应用都要为每个外部系统写一套定制集成代码。N个AI应用 x M个外部系统 = N x M个集成。 MCP把这变成了N+M:每个AI应用实现一个MCP Client,每个外部系统实现一个MCP Server。通过标准协议通信,任意组合。 这一设计直接借鉴了微软的Language Server Protocol (LSP)。LSP解决了”每个编辑器 x 每种语言”的集成爆炸问题,MCP用同样的思路解决”每个AI应用 x 每个外部系统”的问题。 协议版本: 2025-11-25 规范地址: modelcontextprotocol.io 规范仓库: github.com/modelcontextprotocol/specification

1.2 三个参与方

MCP Host(宿主)

AI应用本身。负责管理一个或多个MCP Client。 例子: Claude Desktop、VS Code (Copilot)、ChatGPT、Cursor Host的职责:
  • 启动和管理MCP Client连接
  • 将MCP Server暴露的能力(工具、资源)提供给AI模型
  • 处理用户交互
  • 执行安全策略(如工具调用需用户确认)

MCP Client(客户端)

Host内部为每个Server连接创建的组件。每个Client与一个MCP Server保持1:1的专用连接 你通常不需要直接开发Client — Host会自动创建和管理。 Client还可以向Server暴露自己的能力(Sampling、Roots、Elicitation),让Server能够反向请求LLM推理或用户输入。

MCP Server(服务器)

提供工具、数据和提示词的程序。这是大多数开发者需要构建的部分。 例子:
  • 文件系统Server: 让AI读写本地文件
  • 数据库Server: 让AI查询数据库
  • Sentry Server: 让AI查看错误日志
  • 你的商务Server: 让AI搜索商品、查询订单

架构图

一个Host可以连接多个Server。每个Client-Server对维持独立的有状态连接。本地Server通过stdio通信,远程Server通过Streamable HTTP通信。

1.3 协议生命周期

MCP是有状态协议,连接有三个阶段:初始化、操作、关闭。

阶段一:初始化(Initialization)

Client发送 initialize 请求,双方协商协议版本和支持的能力。
能力协商的关键:
  • Client声明自己支持什么(如 sampling LLM推理、elicitation 用户交互、roots 文件系统边界)
  • Server声明自己提供什么(如 tools 工具、resources 资源、prompts 提示词)
  • 双方只使用对方声明支持的能力
  • 协议版本必须双方一致,否则初始化失败
超时机制: 初始化阶段有超时限制。如果Server未在规定时间内响应,Client应断开连接。

阶段二:操作(Operation)

初始化完成后,进入正常操作阶段。Client可以发现和调用Server的能力:
工具执行: AI模型决定使用某个工具时,通过Client调用:
通知机制: Server可以主动通知Client工具列表变化(需在初始化时声明 listChanged: true):
Client收到后会重新请求 tools/list 获取最新列表。

阶段三:关闭(Shutdown)

连接可以由任意一方发起关闭。关闭后所有未完成的请求应被取消,资源应被清理。

1.4 全部Primitive总览

MCP的Primitive分为Server端和Client端两类:

Server端 Primitive(Server向Client提供)

控制方的含义:
  • 模型控制(Tools): AI模型自主决定何时调用哪个工具
  • 应用控制(Resources): Host应用决定何时读取哪些资源提供给模型
  • 用户控制(Prompts): 用户主动选择使用哪个提示词模板

Client端 Primitive(Client向Server提供)

内容类型

工具返回结果、资源数据等均使用统一的内容类型系统: 所有内容类型均支持 annotations 元数据字段,用于标注受众、优先级等信息。

1.5 实验性特性

Tasks(任务)

Tasks是实验性功能,为持久执行的操作提供包装。当工具调用的结果无法立即返回(如异步处理、长时间运算)时,可通过Task机制实现延迟交付。

1.6 MCP不做什么

MCP专注于上下文交换,不涉及:
  • AI模型如何处理上下文(那是AI应用的事)
  • AI模型的选择和配置
  • 用户界面设计
  • 业务逻辑和工作流编排
MCP只负责:AI应用与外部系统之间的标准化通信。
下一章: 数据层协议 — JSON-RPC 2.0消息格式和能力协商详解