MCP协议出现的背景
MCP(Model Context Protocol,模型上下文协议)由Anthropic公司于2024年11月推出,旨在解决大语言模型(LLM)与外部数据源、工具和服务之间的标准化交互问题。例如某金融科技公司需开发一款智能投顾工具,要求 LLM(如 GPT-4)能实时调用外部金融数据源(如 Bloomberg、同花顺)获取股票行情、财报数据,并结合分析模型生成投资建议。
MCP的提出类似于硬件领域的USB-C接口,旨在为AI应用提供统一的“万能插头”,简化开发过程中大模型与外部工具联动开发的流程。
MCP架构简介
- 标准化接口:定义通用的通信协议、数据格式(JSON-RPC 2.0)和规则,支持文本、图像等多模态数据。
- 分层架构:
- MCP Host:发起请求的AI应用(如Claude Desktop)。
- MCP Client:协议转换层,维护与服务器的连接。
- MCP Server:封装数据源或工具能力(如数据库、API)。
- 本地数据源:MCP 服务器可安全访问的您计算机中的文件、数据库和服务
- 远程服务:MCP 服务器可通过互联网连接的外部系统(如通过 API 访问的系统)
从架构图中可看到Host中通过MCP Client与Server进行通讯,使用Server提供的能力。Server可能是本地部署或远程服务。
MCP协议概述
模型上下文协议(MCP)[2] 由多个协同工作的关键不分构成:
- 基础协议:核心 JSON-RPC 消息类型(如请求、响应、通知)
- 生命周期管理:定义了完整交互的多个阶段
- 数据传输:定义了可用的通信传输协议
- 权限控制:定义身份认证、访问控制
- 实用工具:请求取消、Ping机制、
基础协议
基础协议不分内容主要介绍了 MCP 协议中消息交互的规范,基于 JSON-RPC 2.0 标准,定义了三种消息类型及其格式要求。
- 请求(Requests):模型或工具主动发起操作(比如 “帮我查下今天的天气”),必须带一个唯一 “编号”(ID),避免混乱。
- 响应(Responses):对请求的回复(比如 “今天晴天,温度 25℃”),必须和请求的 “编号” 对应,要么返回结果,要么报错(比如 “查不到天气”)。
- 通知(Notifications):单向消息(比如工具主动告诉模型 “数据更新了”),不需要回复,就像发一条微信消息不要求对方必须回。
生命周期管理
生命周期管理介绍了MCP中客户端和服务器连接的生命周期管理,核心是确保双方在通信过程中能正确协商能力并管理状态。
MCP 规定客户端和服务器的连接必须经历三个阶段,就像两个人打电话要先 “打招呼确认身份”,再 “正式聊天”,最后 “礼貌挂断” 一样:
- 初始化阶段(Initialization):双方先 “互相认识”,确认能听懂对方的 “语言”(协议版本),并告诉对方自己会什么 “技能”(支持的功能)。
- 操作阶段(Operation):双方按照初始化时协商好的 “技能”,正式开始通信和执行任务(比如调用工具、查询数据)。
- 关闭阶段(Shutdown):双方 “礼貌挂断电话”,干净利落地断开连接,避免资源浪费。
生命中期管理就像两个人合作完成任务前需要先 “确认彼此能配合” 一样,MCP 的生命周期管理确保:
- 兼容性:客户端和服务器用相同的 “语言”(协议版本)沟通,避免 “鸡同鸭讲”。
- 安全性:通过协商能力,限制双方只能使用允许的功能,防止越权操作(比如服务器不能随便访问客户端未授权的文件)。
- 稳定性:明确的连接建立和关闭流程,加上超时机制,避免连接 “僵死” 或资源浪费。
数据传输
传输主要讲了 “模型和工具之间通过什么通道打电话” 的问题。传输包括如下三种方式
- stdio(标准输入 / 输出,类似命令行通信)
- HTTP(超文本传输协议,网页常用的通信方式)
- WebSocket(全双工通信,实时交互必备)
MCP 协议支持多种传输方式是为了适配不同的使用场景
- 适配不同场景:本地工具用 stdio 更简单,远程工具用 HTTP/HTTPS 更通用,实时交互用 WebSocket 更高效。
- 灵活性和兼容性:开发者可以根据工具的部署环境(本地 / 云端)、数据传输需求(实时性 / 安全性)选择最合适的 “通道”,就像选择最适合的交通方式(走路 / 开车 / 坐飞机)。
权限控制规则
权限控制规则,也就是解决 “模型和工具之间如何安全地互相信任、避免越权操作” 的问题。规定了 “谁能访问什么资源,以及如何验证身份和权限”。
例:让智能助手(模型)帮你查电脑里的文件,但肯定不希望它未经允许就删除文件或访问隐私数据。MCP 的权限控制就是为了确保:
- 模型只能访问它被允许的工具和数据(比如只能查财务数据,不能改工资表)。
- 工具只能执行模型授权的操作(比如数据库工具只能执行查询,不能执行删除语句)。
- 防止坏人冒充模型或工具搞破坏(比如黑客伪装成模型骗取工具的敏感数据)。
因此主要解决下面3个问题
- 身份认证(谁在访问?)
- 权限授权(允许访问什么?)
- 访问控制(如何阻止越权?)
实用工具
MCP定义了请求取消机制、长操作进度跟踪机制、Ping机制
- 请求取消机制:也就是解决 “当模型或工具发出请求后,如何中途取消不再需要的操作” 的问题。用大白话来说,就像你点外卖后突然不想吃了,需要取消订单一样,MCP 协议规定了如何安全地终止一个正在进行的请求。
- 长操作进度跟踪机制:让模型和工具实时同步任务进展” 的问题,类似下载文件时显示的进度条。
- Ping机制:检验通信双方是否存活
其它 - 应用交互概述
大模型是不会执行代码,这个过程是MCP server提供的工具完成。当向大模型发起提问,大模型分析出需要执行工具时,会将结果返回给client,由client请求mcp server获取结果。得到结果后将历史问题加工具结果统一提交给大模型分析,最终大模型依赖完整的信息给出分析结果。
参考
[1]mcp介绍,https://modelcontextprotocol.io/introduction
[2]协议规范,https://modelcontextprotocol.io/specification/2025-03-26/basic