MCP(模型上下文协议)说明
背景
MCP(Model Context Protocol,模型上下文协议)旨在解决大型语言模型(LLM)与外部数据源及工具集成的问题。由Anthropic公司于2024年11月提出并开源,目标是实现AI模型与现有系统的无缝集成。
解决的问题
- 统一接口:MCP 提供了一个统一的接口,解决了不同数据源和工具之间的兼容问题,使得 AI 应用能够更加灵活地与外部资源进行交互。
- 降低集成成本:开发者不再需要为每种工具或数据源编写单独的集成代码,通过 MCP 协议,AI 模型能够轻松接入多种服务,减少了开发和维护的工作量。
- 双向通信:MCP 协议的双向通信机制使得 AI 应用可以与外部工具和数据源进行更为复杂和智能的交互,为未来的智能化应用提供了更加广阔的可能性。
- 高度扩展性:MCP 支持多种数据传输机制和传输层协议,具有良好的扩展性,能够适应不同的应用需求。
发展历程与时间线
MCP协议的发展经历了几个关键阶段:
-
2024年11月24日:Anthropic首次提出MCP协议,旨在为无法直接修改底层逻辑的Agent(如Cursor、Claude桌面端等)提供工具调用标准
-
2024年12月:技术社区出现首批基于Claude 3.5 + MCP的应用案例,如通过MCP协议实现Claude与本地文件系统、数据库的自动化交互
-
2025年3月初:MCP生态进入规模化应用阶段,企业如Block、Apollo等通过集成MCP实现跨系统数据调度,业务流程响应速度提升数倍
-
2025年3月11日:LangChain联合创始人与LangGraph负责人围绕MCP展开辩论,40%参与者支持MCP成为未来标准
-
2025年3月17日:Anthropic推出MCP协议新传输方案"Streamable HTTP",彻底重构通信机制,解决原HTTP+SSE方案在连接恢复性、服务器负载及双向通信方面的核心瓶颈
-
2025年3月27日:OpenAI宣布支持MCP协议,标志着MCP获得行业广泛认可
MCP Servers主要功能
- 资源暴露:服务器提供给客户端的数据实体,可以是文件、数据库记录等。
- 工具提供:服务器暴露的可执行功能,客户端可以通过调用这些工具完成特定任务。
- 动态通知:当资源发生变化时,服务器可以通过通知机制主动推送更新到客户端。
- 会话管理:处理客户端的连接初始化、能力协商和会话关闭。
协议架构
MCP 采用客户端-服务器架构:
- MCP Host(主机):运行LLM的应用程序,例如Claude 桌面版、IDE 插件或聊天机器人。主机是与外部数据源或工具交互的核心,通常需要从外部获取上下文数据或执行操作。
- MCP Server(服务器):提供特定的功能或数据访问能力。服务器封装与实际数据源的交互逻辑,并对外暴露统一的MCP接口。
- MCP Client(客户端):充当主机和服务器之间的中介,负责将主机的请求转发给服务器,并将服务器的响应返回给主机。每个客户端与一个特定的服务器建立 1:1 的连接。
通过这种架构,MCP 协议消除了传统上每种数据源都需要单独集成的繁琐步骤,使得 AI 应用能够通过统一的接口与各种外部资源进行交互。

- MCP 主机 :通过 MCP 访问数据的 Claude Desktop、IDE 或 AI 工具等程序
- MCP 客户端 :与服务器保持 1:1 连接的协议客户端
- MCP 服务器 :轻量级程序,每个程序都通过标准化的 Model Context Protocol 公开特定功能
- 本地数据源 :MCP 服务器可以安全访问的计算机文件、数据库和服务
- 远程服务 :MCP 服务器可以连接到的 Internet 上可用的外部系统(例如,通过 API)
核心原理
MCP 协议基于标准的客户端-服务器架构,其中 Host、Client 和 Server 分别承担不同的角色。通信过程遵循 JSON-RPC 等通用 Web 协议来实现双向通信。Host 通过 MCP Client 调用 Server 提供的服务或方法(例如读取文件、执行搜索等),而 Server 完成相应操作后将结果返回给 Host。
整个过程采用 JSON 格式的消息进行数据传输,这样做的好处是确保了上下文在多次交互中得以保持,实现了“连续对话”的功能,而不仅仅是一次性 API 调用。
模型如何确定工具选择
模型通过prompt engineering来确定应该使用哪些工具:
- 当MCP Server初始化时,它会获取所有可用工具的描述信息
- 这些工具描述(包括名称、功能说明和参数要求)被格式化成文本形式
- 格式化后的工具描述与用户问题一起作为prompt发送给LLM
- LLM基于这些描述和用户问题进行推理,决定是否需要调用工具及调用哪些工具
- 如果需要调用工具,LLM会输出JSON格式的工具调用请求
工具的描述信息通常直接来自开发者定义的函数名和函数docstring。
ReAct循环与处理机制
MCP实现了ReAct(Reasoning + Acting)循环机制:
- LLM分析用户需求并制定任务计划
- 执行工具调用并获取结果
- 基于结果进行推理并决定下一步行动
- 如果参数不完整或输出结果置信度低,启动用户协同修正流程
- 循环迭代直至任务完成
传输协议
- stdio:通过标准I/O进行通信,服务器运行在本地,数据更安全。
- HTTP with Server-Sent Events (SSE):通过 HTTP 与外部服务进行通信。
相关服务
目前已经有大量服务和应用基于 MCP 实现,例如可以使用 GitHub-MCP,用自然语言提交代码、创建 PR。利用 Figma MCP,让 AI 直接生成 UI 图。接入 Browser-tools-MCP 后,甚至还能让 cursor 根据浏览器控制台中的元素节点和打印的日志进行代码调试。
MCP与其他协议的关系
MCP与A2A协议
MCP和Agent-to-Agent(A2A)协议实际上是互补关系而非竞争关系:
- MCP:连接大模型与外部数据源/工具,提供上下文和工具支持
- A2A:不同智能体之间的通信协议,支持智能体间协作完成复杂任务
两者可以协同工作构建复杂AI系统:
- A2A负责任务分配、状态同步和协作管理
- MCP为单个智能体提供外部资源访问能力
MCP协议内容
xxSpecification - Model Context Protocol
参考文章
一文搞懂 MCP Servers - 虫师 - 博客园
什么是MCP协议?MCP的技术架构与核心原理是什么?MCP封装了哪些协议?_mcp服务封装-CSDN博客
相关文章:
MCP(模型上下文协议)说明
背景 MCP(Model Context Protocol,模型上下文协议)旨在解决大型语言模型(LLM)与外部数据源及工具集成的问题。由Anthropic公司于2024年11月提出并开源,目标是实现AI模型与现有系统的无缝集成。 解决的问题…...
AI当前状态:有哪些新技术
一、到目前为址AI领域出现的新技术 到目前为止,AI领域涌现了许多令人兴奋的新技术。以下是一些关键的进展,涵盖了从基础模型到实际应用的多个方面: 1. 更强大的大型语言模型 (LLMs): 性能提升: 新一代LLM,例如OpenAI的GPT-4o和…...
如何校验一个字符串是否是可以正确序列化的JSON字符串呢?
方法1:先给一个比较暴力的方法 try {JSONObject o new JSONObject(yourString); } catch (JSONException e) {LOGGER.error("No valid json"); } 方法2: Object json new cn.hutool.json.JSONTokener("[{\"name\":\"t…...
orcad csi 17.4 DRC规则设置及检查
rCAD绘制完原理图之后总是需要开启DRC检测,但是DRC一般都是英文版的,下面基于Cadence17.4 的orCAD16.6 对DRC的界面做简单的介绍 首先,鼠标点击原理图,然后再点击右上方的小勾图标 desine rules check option选项的界面 电气规…...
k8s教程3:Kubernetes应用的部署和管理
学习目标 理解Kubernetes中应用部署的基本概念和方法掌握Deployment、ReplicaSet、StatefulSet、DaemonSet、Job与CronJob等控制器的使用了解Helm作为Kubernetes的包管理工具的基本使用通过实际示例学习应用的部署、更新与管理 Kubernetes提供了一套强大而灵活的机制ÿ…...
微信小程序获得当前城市,获得当前天气
// // 获取用户当前所在城市 // wx.getLocation({// type: wgs84, // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 // success: function(res) {// console.log(获取位置成功, res); // // 使用腾讯地图API进行逆地址解析 // wx…...
磁流变式汽车减振器创新设计与关键技术研究
摘要 本文针对智能悬架系统的发展需求,深入探讨磁流变减振器(MR Damper)的核心设计原理与工程实现路径。通过建立磁场-流场耦合模型,优化磁路结构与控制策略,提出具有快速响应特性的新型磁流变减振器设计方案…...
Python3.14都有什么重要新特性
目录 1、语法糖新宠:模式匹配再进化 1.1 结构化数据克星 1.2 类型守卫(Type Guard) 2、性能黑科技:尾递归与异步双杀 2.1 尾调用优化(TCO) 2.2 异步任务重构 3、注释系统重构:annotationlib深度解析 3.1 延迟评估机制 3.2 类型推导增…...
前端资源加载失败后重试加载(CSS,JS等引用资源)
前端资源加载失败后的重试 .前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时) 解决这个问题首先要明确一下几个步骤 1.什么情况或者什么时候重试 2.如何重试 3.重试过程中的边界处理 这里引入里三个测试脚本,分别加载里三个不同的脚…...
【HDFS入门】联邦机制(Federation)与扩展性:HDFS NameNode水平扩展深度解析
目录 引言 1 NameNode水平扩展原理 1.1 传统HDFS架构的局限性 1.2 联邦机制的基本原理 1.3 联邦架构的关键组件 2 多个Namespace的路由规则配置 2.1 客户端挂载表概念 2.2 挂载表配置示例 2.3 挂载表匹配规则 2.4 配置示例 3 BlockPool与Namespace的映射关系 3.1 B…...
C#学习第16天:聊聊反射
什么是反射? 定义:反射是一种机制,允许程序在运行时获取关于自身的信息,并且可以动态调用方法、访问属性或创建实例。用途:常用于框架设计、工具开发、序列化、代码分析和测试等场景 反射的核心概念 1. 获取类型信息…...
论文阅读:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 AI Safety in Generative AI Large Language Models: A Survey https://arxiv.org/pdf/2407.18369 https://www.doubao.com/chat/3262156521106434 速览 研究动机&#x…...
AI推荐系统的详细解析 +推荐系统中滤泡效应(Filter Bubble)的详细解析+ 基于Java构建电商推荐系统的分步实现方案,结合机器学习与工程实践
以下是AI推荐系统的详细解析: 一、核心概念 定义 推荐系统是通过分析用户行为、物品特征或用户画像,向用户推荐个性化内容的技术,广泛应用于电商、视频、社交等领域。 目标 提升用户留存与转化率增强用户体验实现精准营销 二、技术原理 1…...
CSS 美化页面(五)
一、position属性 属性值描述应用场景static默认定位方式,元素遵循文档流正常排列,top/right/bottom/left 属性无效。普通文档流布局,默认布局,无需特殊定位。relative相对定位,相对于元素原本位置进行偏…...
java 设计模式之模板方法模式
简介 模板方法模式:定义一个算法的基本流程,将一些步骤延迟到子类中实现。模板方法模式可以提高代码的复用性, 模板方法中包含的角色: 抽象类:负责给出一个算法的基本流程,它由一个模板方法和若干个基本…...
基于大模型的腹股沟疝诊疗全流程风险预测与方案制定研究报告
目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与创新点 二、大模型技术概述 2.1 大模型基本原理 2.2 常用大模型类型及特点 2.3 大模型在医疗领域的应用潜力 三、腹股沟疝诊疗流程分析 3.1 腹股沟疝的发病机制与分类 3.2 传统术前评估方法与局…...
无约束最优化问题的求解算法--梯度下降法(Gradient Descent)
文章目录 梯度下降法梯度下降法原理(通俗版)梯度下降法公式学习率的设置**如何选择学习率?** 全局最优解梯度下降法流程损失函数的导函数三种梯度下降法**梯度下降法核心步骤回顾****优缺点详解****1. 全量梯度下降 (Batch Gradient Descent,…...
Python全功能PDF工具箱GUI:支持转换、加密、旋转、图片提取、日志记录等多功能操作
使用Python打造一款集成 PDF转换、编辑、加密、解密、图片提取、日志追踪 等多个功能于一体的桌面工具应用(Tkinter ttkbootstrap PyPDF2 等库)。 ✨项目背景与开发动机 在日常办公或学习中,我们经常会遇到各种关于PDF文件的操作需求&#…...
[密码学实战]国密算法面试题解析及应用
以下是密码学领域常见的面试题及其详细解析,涵盖基础理论、算法实现与应用场景,帮助系统化备战技术面试 一、基础概念类 1. 密码学的主要目标是什么? 答案: 确保数据的机密性(加密防止窃听)、完整性(哈希校验防篡改)、认证性(数字签名验证身份)和不可否认性(签名防…...
React 受控表单绑定基础
React 中最常见的几个需求是: 渲染一组列表绑定点击事件表单数据与组件状态之间的绑定 受控表单绑定是理解表单交互的关键之一。 📍什么是受控组件? 在 React 中,所谓“受控组件”,指的是表单元素(如 &l…...
计算机视觉---相机标定
相机标定在机器人系统中的作用 1.确定相机的内部参数 相机的内部参数包括焦距、主点坐标、像素尺寸等。这些参数决定了相机成像的几何关系。通过标定,可以精确获取这些参数,从而将图像中的像素坐标与实际的物理坐标建立联系。例如,已知相机…...
LeetCode 443 压缩字符串
字符数组压缩算法详解:实现与分析 一、引言 在处理字符数组时,我们常常遇到需要对连续重复字符进行压缩的场景。这不仅可以节省存储空间,还能提升数据传输效率。本文将深入解析一个经典的字符数组压缩算法,通过详细的实现步骤和…...
datasheet数据手册-阅读方法
DataSheet Datasheet(数据手册):电子元器件或者芯片的数据手册,一般由厂家编写,格式一般为PDF,内容为电子分立元器件或者芯片的各项参数,电性参数,物理参数,甚至制造材料…...
AI绘制流程图,方法概述
1 deepseek 生成图片的mermaid格式代码,在kimi中进行绘图或在jupter notebook中绘制: 或在draw.io中进行绘制(mermaid代码) 2 svg是矢量图,可以插入到word """mermaid graph TDA[基线解算] --> B[北…...
ObjectOutputStream 深度解析
ObjectOutputStream 深度解析 ObjectOutputStream 是 Java IO 体系中的一个关键类,用于序列化(将对象转换为字节流),通常与 ObjectInputStream 配合使用,实现对象的持久化存储或网络传输。 1.作用:完成对象的序列化过程 2.它可以将JVM当中的Java对象序列化到文件中/网…...
git回滚指定版本并操作
你可以通过以下步骤切换到第三个版本。根据你的需求,有两种主要方法: 方法 1:临时查看第三个版本(不修改当前分支) 适用于仅查看或测试旧版本,不保留后续修改: 找到第三个版本的提交哈希&#…...
【AI插件开发】Notepad++ AI插件开发实践:支持配置界面
一、引用 此前的系列文章已基本完成了Notepad的AI插件的功能开发,但是此前使用的配置为JSON配置文件,不支持界面配置。 本章在此基础上集成支持配置界面,这样不需要手工修改配置文件,直接在界面上操作,方便快捷。 注…...
polkitd服务无法启动导致docker无法启动问题解决
问题docker服务无法启动,溯源发现是polkit服务没有正确运行 systemctl status polkit可以看到类似提示 Sep 18 02:58:24 server1 dbus[897]: [system] Failed to activate service org.freedesktop.PolicyKit1: timed out Sep 18 02:59:29 server1 systemd[1]: po…...
软件工程中数据一致性的探讨
软件工程中数据一致性的探讨 引言数据一致性:软件工程中的业务正确性与性能的权衡数据一致性为何重要业务正确性:事务的原子性与一致性ACID原则的基石分布式事务的挑战一致性级别:从强一致到最终一致 实践中的一致性权衡金融系统:…...
数据库原理及应用mysql版陈业斌实验四
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 实验四索引与视图 1.实验数据如下 student 表(学生表&…...
