MCP协议学习

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 访问的系统)
      图1
      从架构图中可看到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值