MCP协议学习

article/2025/6/29 16:00:55

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


http://www.hkcw.cn/article/iiQRHEmNVY.shtml

相关文章

【笔记】Windows 部署 Suna 开源项目完整流程记录

#工作记录 因篇幅有限,所有涉及处理步骤的详细处理办法请参考文末资料。 Microsoft Windows [Version 10.0.27868.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗…

SQL Views(视图)

目录 Views Declaring Views Example: View Definition Example: Accessing a View Advantages of Views Triggers on Views Interpreting a View Insertion(视图插入操作的解释) The Trigger Views A view is a relation defined in terms of…

MySQL指令个人笔记

MySQL学习,SQL语言笔记 一、MySQL 1.1 启动、停止 启动 net start mysql83停止 net stop mysql831.2 连接、断开 连接 mysql -h localhost -P 3306 -u root -p断开 exit或者ctrlc 二、DDL 2.1 库管理 2.1.1 直接创建库 使用默认字符集和排序方式&#xf…

【redis实战篇】第七天

摘要: 本文介绍了黑马点评中点赞、关注和推送功能的实现方案。点赞功能采用Redis的ZSET结构存储用户点赞数据,实现点赞状态查询、热门博客排行和点赞用户展示。关注功能通过关系表和Redis集合实现用户关注关系管理,包含共同关注查询。推送功能…

[yolov11改进系列]基于yolov11引入特征融合注意网络FFA-Net的python源码+训练源码

【FFA-Net介绍】 北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,…

Baklib领跑三强:知识管理高效优选

Baklib技术架构解析 Baklib的技术底座基于全链路数字化管理理念,通过知识中台的三层架构实现企业级知识资产的深度整合。核心层采用分布式存储引擎与多模态数据处理技术,支持文档、音视频、代码等20格式的智能化解析,确保非结构化数据的精准…

零基础学习计算机网络编程----socket实现UDP协议

本章将会详细的介绍如何使用 socket 实现 UDP 协议的传送数据。有了前面基础知识的铺垫。对于本章的理解将会变得简单。将会从基础的 Serve 的初始化,进阶到 Client 的初始化,以及 run。最后实现一个简陋的小型的网络聊天室。 目录 1.UdpSever.h 1.1 构造…

深入了解linux系统—— 进程间通信之管道

前言 本篇博客所涉及到的代码一同步到本人gitee:testfifo 迟来的grown/linux - 码云 - 开源中国 一、进程间通信 什么是进程间通信 在之前的学习中,我们了解到了进程具有独立性,就算是父子进程,在修改数据时也会进行写时拷贝&…

电脑使用VPN后直接关机,再次打开后无法上网的问题

出现这种问题,都是在使用VPN后,以前自己都是通过杀毒软件的网络修复工具进行解决的。 但现在有了一个更简单的方法: 打开设置,找到网络中的代理,然后关闭即可。

【Linux】线程控制

📝前言: 这篇文章我们来讲讲Linux——线程控制 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C语言入门基础&#xf…

CppCon 2014 学习:Hardening Your Code

“Hardening Your Code” 是指增强代码的健壮性、安全性、可维护性和可测试性,确保在各种边界条件、错误场景甚至恶意输入下,代码依然稳定运行,不崩溃、不泄露资源,也不产生未定义行为。 什么是“Hardening Your Code”&#xff…

【js逆向_AES】某专业技术人员继续教育平台登录分析及模拟实践

目标:account,password加密 网址:aHR0cHM6Ly93d3cuZ3N6eGp5cHguY24vd2ViL2luZGV4 请求载荷加密方式 账号加密: 网页调试输出: python代码: from Cryptodome.Cipher import AES import base64 from Crypto…

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门:【拯救期末】期末必备!8小时速成信号与系统!【拯救期末】期末必备!8小时速成信号与系统!_哔哩哔哩_bilibili 精通:2022浙江大学信号与系统(含配…

可视化大屏通用模板Axure原型设计案例

本文将介绍一款基于Axure设计的可视化大屏通用模板,适用于城市、网络安全、园区、交通、社区、工业、医疗、能源等多个领域。 模板概述 这款Axure可视化大屏通用模板集成了多种数据展示模块和组件,旨在为用户提供一个灵活、可定制的数据展示平台。无论…

AI来敲门:我们该如何与焦虑共舞

最近一份覆盖国内上万职场人的调研报告像一颗深水炸弹,在职场圈激起层层涟漪——85.53%的人担心AI会抢走自己的饭碗,67.57%的人认为这会在五年内发生。更令人意外的是,这些焦虑的职场人中,高达34.13%出现了抑郁症状,这…

单调栈(打卡)

本篇基于b站灵茶山艾府。 下面是灵神上课讲解的题目与课后作业,课后作业还有三道实在写不下去了,下次再写。 739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是…

【C语言入门级教学】冒泡排序和指针数组

文章目录 1.冒泡排序2.⼆级指针3.指针数组4.指针数组模拟⼆维数组 1.冒泡排序 冒泡排序的核⼼思想:两两相邻的元素进⾏⽐较。 //⽅法1 void bubble_sort(int arr[], int sz)//参数接收数组元素个数 { int i 0;for(i0; i-1; i) { int j 0; for(j0; j-1; j) { …

源码解析(三):Stable Diffusion

原文 技术博客 😀 Stable Diffusion是一种基于扩散模型(Diffusion Model)的生成式AI技术,通过逐步去噪过程将随机噪声转化为高质量图像。其核心优势在于开源免费、支持本地部署,且能通过文本提示(prompt&am…

洛雪音乐+多种音源同步更新,附带安装教程 -【PC端/安卓端】音乐软件

今天,就为大家介绍一款全网免费听歌神器——‌洛雪音乐‌! 🎶 洛雪音乐:(文末获取软件) 一、软件亮点 全平台支持‌:无论是Windows系统还是安卓手机,洛雪音乐都能随时伴你左右&am…

【CATIA的二次开发18】根对象Application涉及用户交互相关方法

在CATIA VBA开发中,对根对象Application涉及用户交互相关方法进行详细总结,并且用不同形式展示出来。供大家后续开发全面了解Application对象的方法,以便在开发过程中快速查找和使用: 一、Application常用方法分类 1、基础控制与…