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搜索商品、查询订单
架构图
1.3 协议生命周期
MCP是有状态协议,连接有三个阶段:初始化、操作、关闭。阶段一:初始化(Initialization)
Client发送initialize 请求,双方协商协议版本和支持的能力。
- Client声明自己支持什么(如
samplingLLM推理、elicitation用户交互、roots文件系统边界) - Server声明自己提供什么(如
tools工具、resources资源、prompts提示词) - 双方只使用对方声明支持的能力
- 协议版本必须双方一致,否则初始化失败
阶段二:操作(Operation)
初始化完成后,进入正常操作阶段。Client可以发现和调用Server的能力:listChanged: true):
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模型的选择和配置
- 用户界面设计
- 业务逻辑和工作流编排
下一章: 数据层协议 — JSON-RPC 2.0消息格式和能力协商详解