【翻译、转载】【译文】模型上下文协议(Model Context Protocol, MCP)简介

原文地址:

https://michaelwapp.medium.com/model-context-protocol-mcp-an-introduction-guide-25736f3dd672

在人工智能和 AI 驱动应用日新月异的格局中,一种与大型语言模型(LLM)交互的新方式正在兴起。随着 AI 智能体(Agent)的崛起带来了系统间高效交互的需求,高效的模型交互变得比以往任何时候都更加重要。

模型上下文协议(Model Context Protocol, MCP)是一种新兴标准,旨在简化 AI 模型与外部系统的交互方式,确保基于上下文的响应并实现与各种应用的无缝集成。但 MCP 究竟是什么?为何它在开发者和 AI 爱好者中日益受到关注?

本文将解释 MCP 是什么,它是如何工作的,以及它为何对 AI 交互的未来至关重要。

在这里插入图片描述

什么是模型上下文协议?

其核心是,模型上下文协议是一种标准化的方式,让 AI 系统能够在对话期间访问外部信息源。可以将其想象为赋予 AI 模型在需要时**“查找信息或执行操作”**的能力,而不是仅仅依赖其预训练知识或当前的对话上下文。

想象一下你正在与一个 AI 助手对话。没有 MCP,AI 只能利用其训练数据(有知识截止日期)以及你在当前对话中明确告知它的内容。有了 MCP,AI 可以动态地访问外部信息源——如数据库、API 或文档存储库——以提供更准确、最新和个性化的响应。

模型上下文协议是 Anthropic 发起的一个开源项目。他们的工作旨在创建一个统一的协议,允许 AI 系统以一致的方式请求和接收外部数据,无论底层实现如何。这种标准化对于构建更可靠、更透明的 AI 助手至关重要,这些助手能够为用户提供及时准确的信息。
在这里插入图片描述

MCP 是如何工作的?

模型上下文协议通过几个组件之间的结构化通信模式运作:

  • 用户 (User):与 AI 系统交互的人(例如,通过聊天界面、SaaS 应用程序或任何其他与 AI 通信的方式)。
  • AI 模型 (AI Model):处理用户查询的大型语言模型(如 GPT-4、Claude 或其他模型)。
  • MCP 服务器 (MCP Server):一个中间件服务,它解释模型对额外上下文的请求,并获取相关信息。
  • 信息源 (Information Sources):提供模型请求信息的外部数据存储库、API 或服务。

以下是典型的 MCP 交互流程:

  1. 用户向 AI 模型发送提示 (prompt)。
  2. 模型处理提示,并确定需要额外的上下文来提供准确的响应。
  3. 模型按照 MCP 格式生成对特定信息的请求。
  4. MCP 服务器接收此请求,对其进行解释,并查询适当的信息源。
  5. 信息源将请求的数据返回给 MCP 服务器。
  6. MCP 服务器格式化数据并将其发送回模型。
  7. 模型将这些新信息整合到其上下文中,并为用户生成响应。

这个过程无缝发生,且通常近乎实时,给人一种 AI 助手知识更渊博、能力更强的印象。

MCP 的技术结构

现在让我们看看模型上下文协议的底层工作原理:

请求结构

当 AI 模型需要额外的上下文时,它会生成一个结构化的请求,通常包括:

{"queries": [{"provider": "github","query": "the last 10 files changed in the main branch of the example repository","parameters": {"repo_name": "example"}}]
}

在这个例子中,你可以看到:

  • queries: 查询对象的数组,允许同时发起多个信息请求。
  • provider: 指定使用哪个信息源(在此例中是 “github”,可能指向一个搜索引擎或知识库)。
  • query: 实际的查询文本。
  • parameters: 额外的配置选项,例如 repo_name

请注意,这是一个简化版本,因为 AI 模型使用此上下文请求格式的更复杂版本来查询外部源。

响应格式

MCP 服务器随后以模型能够解释的标准化格式返回数据:

{"responses": [{"provider": "github","status": "success","results": [{"filename": "app.py","commit_id": "c21100226d66741de8d56fb8351d83e5723a5e32"},{"filename": "requrirements.txt","commit_id": "c21100226d66741de8d56fb8351d83e5723a5e32"},// 更多结果...]}]
}

这种结构化格式确保模型能够高效地处理和整合新信息。

常见的 MCP 提供者 (Providers)

MCP 实现通常包括几个标准提供者:

  • 搜索 (Search):从搜索引擎或知识库检索相关信息。
  • 文档 (Document):访问特定的文档或内容存储库。
  • 数据库 (Database):查询结构化数据库以获取精确信息。
  • API:与外部服务接口以获取实时数据。
  • 向量 (Vector):在向量数据库上执行相似性搜索(对语义匹配很有用)。

每个提供者都有自己的参数和响应格式,但它们都遵循通用的 MCP 结构以保持一致性。

MCP 的好处

模型上下文协议提供了几个显著优势:

1. 克服知识截止日期

LLM 有一个训练截止日期,此后它们不了解世界事件或新信息。MCP 允许模型访问最新信息,有效地消除了这一限制。

2. 减少幻觉

通过向模型提供来自可靠来源的事实信息,MCP显著降低了 AI 响应中出现“幻觉”或捏造信息的可能性。

3. 个性化

MCP 使模型能够访问用户特定信息(在获得适当权限的情况下),从而实现更个性化的交互,而无需将所有这些信息都包含在对话上下文中。

4. 专业知识

模型可以利用特定领域的知识库和工具,使其能够在专业领域提供专家级的响应。

5. 透明度与溯源 (Attribution)

MCP 实现通常包含信息来源的归属信息,清楚地表明 AI 的知识来源,从而提高用户信任度。

真实世界示例

让我们探讨一些实际的 MCP 应用场景:

示例 1:访问日历的个人助理

用户:“我明天有什么会议?”

没有 MCP 时,AI 可能不得不回答:“我无法访问您的日历。”

使用 MCP 时

  1. 模型识别出它需要日历信息。
  2. 它向日历提供者生成一个 MCP 请求。
  3. MCP 服务器(通过适当的身份验证)查询用户的日历。
  4. 日历数据被返回给模型。
  5. 模型以详细列表的形式回应用户的会议安排。

示例 2:访问文档的技术支持

用户:“我该如何解决这个软件系统的错误 FD-123?”

使用 MCP 时

  1. 模型识别出这是一个技术支持问题。
  2. 它生成一个 MCP 请求,以搜索该软件系统的文档。
  3. MCP 服务器检索相关的故障排除指南。
  4. 模型综合这些信息,形成一个有用的响应,其中可能包括官方文档的直接引用。

示例 3:获取实时数据的研究助理

用户:“mRNA 疫苗技术的最新进展是什么?”

使用 MCP 时

  1. 模型确定它需要超出其训练数据的当前信息。
  2. 它通过 MCP 查询一个科学研究数据库。
  3. MCP 服务器返回最近的论文和发现。
  4. 模型将这些信息综合成一个全面的摘要,并附带引文。

实现 MCP:可用资源

对于有兴趣在自己项目中实施 MCP 的开发者,有几个可用的开源资源:

  • MCP 服务器参考实现:MCP 服务器规范的一个标准实现。
  • 官方参考文档:MCP 的官方文档。
  • “MCP Hub”:在这里可以找到许多已发布的、可立即使用的 MCP。

安全和隐私考量

虽然 MCP 提供了强大的功能,但它也引发了重要的安全和隐私考量:

  • 访问控制 (Access Control):MCP 实现必须仔细管理模型可以访问哪些信息源以及在什么情况下可以访问。
  • 数据最小化 (Data Minimization):应仅检索必要的信息并与模型共享。
  • 用户同意 (User Consent):应告知用户并在其交互过程中访问外部数据源时征得其同意。
  • 身份验证 (Authentication):必须为访问私有或敏感信息源实施安全的身份验证机制。
  • 审计追踪 (Audit Trails):记录 MCP 请求有助于保持透明度和问责制。

MCP 的未来

模型上下文协议代表着朝着功能更强大、更值得信赖的 AI 系统迈出的重要一步。随着协议的发展,我们可以期待看到:

  • 标准化 (Standardization):MCP 标准在不同 AI 提供商之间得到更广泛的采用。
  • 更丰富的提供者生态系统 (Richer Provider Ecosystem):出现更多针对不同类型信息和服务的专业提供者。
  • 增强的推理能力 (Enhanced Reasoning):模型不仅能访问信息,还能推理应该访问哪些信息以及如何组合多个来源的信息。
  • 用户控制 (User Control):提供更精细的用户控制,让用户决定可以访问哪些信息源以及何时访问。

结论

模型上下文协议通过打破模型与其所需信息之间的壁垒,正在改变我们与 AI 系统的交互方式。通过为 AI 模型访问外部信息提供标准化的途径,MCP 使得 AI 体验更加准确、最新和个性化。

在下一篇文章中,我们将探讨一个模型上下文协议服务器的示例实现。此外,我们还将探讨 OpenAI 对模型上下文协议标准的回应(或对应方案)。

对于希望在其 AI 解决方案中实施 MCP 的组织,我们的机构专门开发根据特定业务需求量身定制的 MCP 服务器和集成。我们帮助弥合您组织的知识库与用户交互的 AI 系统之间的差距。

无论您是构建需要访问产品文档的客户服务聊天机器人,还是需要最新科学论文的研究助理,或是需要安全访问公司数据的内部工具,MCP 都提供了使这些交互成为可能的架构。

这篇博文由领先的 AI 集成服务提供商 AVIMBU 撰写。请访问我们的网站 avimbu.com,了解更多关于我们如何帮助您的组织实施 MCP 和其他高级 AI 功能的信息。

注意:模型上下文协议是一项快速发展的技术。本文信息截至 2025 年 3 月。有关最新信息,请参阅官方 MCP 规范和文档。

同时也需要如下贴图中提到的,mcp迭代非常快,很可能信息就不准确了。官网是最可靠的参考。

参考资料:
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[方法论]软件工程中的软件架构设计:从理论到实践的深度解析

文章目录 软件架构设计:从理论到实践的深度解析引言一、软件架构设计的核心目标体系1.1 质量属性矩阵1.2 架构权衡艺术 二、架构设计方法论演进2.1 传统设计范式2.2 现代架构方法论2.3 设计模式演化路径 三、主流架构风格全景图3.1 单体架构(Monolithic&…

【win11 】win11 键盘测试

我的键盘是支持mac和win的,fn tab 就能切换,有可能是用错了模式,导致 我alt a 就会弹出 win11的 wifi 等菜单控制 键盘测试网站 https://keyboard.bmcx.com/ 识别到我按下的是alt

Linux环境部署iview-admin项目

环境:阿里云服务 系统:CentOS7.X系统 1、下载源码安装包 wget https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz2、解压并放入指定目录 tar -xf node-v14.17.3-linux-x64.tar.xz && mv node-v14.17.3-linux-x64 /usr/local/no…

VSCode常用插件推荐

文章目录 VSCode常用插件推荐1 Git相关插件2 代码格式3 AI工具4 语言插件通用工具参考 VSCode常用插件推荐 1 Git相关插件 2 代码格式 3 AI工具 4 语言插件 通用工具 参考 50 个 VSCode 必装插件推荐 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg

【Unity】使用XLua进行热修复

准备工作: (1)将XLua的Tool拖入Asset (2)配置热修复 (3)运行Genrate Code (4)运行Hotfix Inject In Editor 编写脚本(注意类上带有[Hotfix]) [Hot…

javaEE——单例模式

目录 前言1.概念2. 实现3. 比较和改进总结 前言 本篇文章来介绍单例模式,并讲述在保证线程安全的前提下,单例模式的写法。 1.概念 单例模式是一种设计模式,可以说是写代码的一种模板,如果在一些固定的场景下按照设计模式进行写…

TS 对象类型

给对象添加类型注解 ![在这里插入图片描述(https://i-blog.csdnimg.cn/direct/6c413992c11142d88106633ec442b905.png) 格式:数据类型名:类型别名 注意:对象类型限制使用分号,如果对象中存在方法就写成:方法(&#x…

C++类_虚基类

在 C 里,虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生,而这些基类又从同一个基类派生时,派生类会包含多份间接基类的数据副本,这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…

详细案例,集成算法

以下是一个使用 随机森林(RF) 和 XGBoost 解决结构化数据分类问题的完整案例(以泰坦尼克号生存预测为例),包含数据处理、建模和结果分析: 案例:泰坦尼克号乘客生存预测 目标:根据乘客…

《C#数据结构与算法》—201线性表

线性表的实现方式 顺序表 线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表。 特点:表中相邻的数据元素在内存中存储位置也相邻。 顺序表接口实现: 方法名参数返回值描述GetLen…

深入解析C++11委托构造函数:消除冗余初始化的利器

一、传统构造函数的痛点 在C11之前,当多个构造函数需要执行相同的初始化逻辑时,开发者往往面临两难选择: class DataProcessor {std::string dataPath;bool verbose;int bufferSize; public:// 基础版本DataProcessor(const std::string&am…

LeetCode 热题 100 189. 轮转数组

LeetCode 热题 100 | 189. 轮转数组 大家好,今天我们来解决一道经典的算法题——轮转数组。这道题在LeetCode上被标记为中等难度,要求我们将数组中的元素向右轮转 k 个位置。下面我将详细讲解解题思路,并附上Python代码实现。 问题描述 给定…

GAEA商业前景和生态系统扩展

GAEA情感坐标系不仅增强了AI对人类情感的理解,也为Web3生态注入了新的活力。通过去中心化的数据存储和共享,GAEA构建了一个开放透明的数据市场,为AI训练提供了优质的数据源。同时,贡献数据的用户将获得灵魂积分(SOUL P…

[原创](现代Delphi 12指南):[macOS 64bit App开发]: [2]如何使用跨平台消息框?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

js逆向绕过指纹识别

​​一、兼容性说明​​ 官方支持 curl_cffi 明确支持 Windows 平台,并提供了预编译的安装包。其核心功能(如浏览器指纹模拟、HTTP/2 支持)在 Windows 上与 Linux/macOS 表现一致。 版本要求 • Python 3.8 及以上版本(推荐 Pyth…

聊聊对Mysql的理解

目录 1、Sql介绍 1.1、SQL的分类 1.2、数据库的三大范式 1.3、数据表的约束 1.4、约束的添加与删除 2、核心特性 3、主要组件 4、数据结构原理 5、索引失效 6、常用问题 7、优势与局限 前言 MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL A…

[HOT 100] 1617. 统计子树中城市之间最大距离

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 1617. 统计子树中城市之间最大距离 - 力扣(LeetCode) 2. 题目描述 给你 n 个城市,编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges &…

接口自动化——参数化

之前有说过,通过pytest测试框架标记参数化功能可以实现数据驱动测试。数据驱动测试使用的文件主要有以下类型: txt 文件 csv 文件excel 文件json 文件yaml 文件.... 本文主要讲的就是以上几种文件类型的读取和使用 一.txt 文件读取使用 首先创建一个 …

游戏引擎学习第257天:处理一些 Win32 相关的问题

设定今天的工作计划 今天我们本来是打算继续开发性能分析器(Profiler),但在此之前,我们认为有一些问题应该先清理一下。虽然这类事情不是我们最关心的核心内容,但我们觉得现在是时候处理一下了,特别是为了…

实验三 触发器及基本时序电路

1.触发器的分类?各自的特点是什么? 1 、 D 触发器 特点:只有一个数据输入端 D ,在时钟脉冲的触发沿,输出 Q 的状态跟随输入端 D 的 状态变化,即 ,功能直观,利于理解和感受…