掘金 人工智能 07月02日
MCP协议原理
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

MCP(Model Context Protocol)是一个开放协议,旨在标准化AI应用程序与模型之间的数据和工具连接。它类似于AI领域的USB-C端口,简化了开发者集成工作,并内置加密与权限管理机制确保数据安全。MCP采用客户端-服务器架构,包括主机(AI应用)、MCP客户端(中间人)和MCP服务器(工具库)。通过资源、工具和提示模板,MCP使大模型能够访问外部数据源和功能,并支持标准输入/输出和流式传输两种数据传输方式。安全机制包括访问控制、身份验证、元数据提示和沙箱隔离,确保数据安全。

💡 MCP的核心是标准化AI模型与数据源/工具的通信方式,类似于AI领域的通用接口,简化开发者的集成过程,并保障数据安全。

⚙️ MCP采用客户端-服务器架构,其中主机是AI应用,MCP客户端是“中间人”,MCP服务器是“工具库”,分别负责接收指令、翻译指令和执行操作。

📚 MCP的核心组件包括资源(供模型读取的数据)、工具(可执行函数或操作)和提示模板(指导模型完成任务的模板),这些组件共同构建了模型与外部世界的桥梁。

🚀 MCP支持标准输入/输出和流式传输两种数据传输方式,其中流式传输采用HTTP结合SSE(Server Sent Events),实现服务器向客户端推送消息。

🔒 MCP内置多种安全机制,如访问控制、身份验证、元数据提示和沙箱隔离,以确保数据安全和保护系统免受潜在的恶意指令影响。

一、MCP简介

1.1 什么是MCP

MCP(Model Context Protocol,模型上下文协议)是一个开放协议,用于标准化应用程序如何向模型提供上下文。可以把MCP想象成AI应用程序的USB-C端口。就像USB-C提供了一种将设备连接到各种外设和配件的标准化方式一样,MCP提供了一种将AI模型连接到不同数据源和工具的标准化方式。

MCP皆在标准化大模型与各种数据源、工具之间的通信方式,简化开发者的集成工作,并通过协议层内置的加密与权限管理机制确保数据安全。掌握MCP,并帮助开发者深入理解插件AI和AI助手的工作原理,更高效地开发新型AI应用。

想象一下,我们有一个强大的AI助手,它能聊天、回答问题,甚至帮助我们写代码。然而当我们向它咨询指定位置的文件信息,或者让它获取最新的天气数据时,却发现它不能有效作答。原因很简单,它接触不到我们手头的数据或工具。MCP正是为了解决这一问题而出现的一种标准化的开放协议,其工作原理如图所示:

通俗地讲,MCP就是AI领域的通用接口。若将大模型视作计算机或智能手机,MCP则相当于标准化的USB接口,不同的大模型都能通过它无缝接入实时数据、外部数据源。通过MCP,开发者无须针对不同的大模型重复编写集成代码,只需遵循统一的标准即可实现兼容。所有支持MCP的大模型,都能直接访问通过该协议接入的数据源、功能或服务。

二、MCP的工作原理

2.1 核心架构

MCP采用的是经典的客户端-服务器架构,它由三部分组成,即主机(Host)、客户端(Client)、服务器(Server)。

2.2 核心组件

    资源

我们可以将资源理解为供大模型读取的各种数据。在MCP中,资源指的是由MCP服务器提供给MCP客户端的任意数据类型,它强调的是数据本身,而不是对数据的操作。

    工具

MCP中的工具是由服务器开放的供大模型调用的一系列可执行函数或操作。从最简单的计算到复杂的系统操作,工具可以完成各种各样的任务。与资源不同,工具可能会改变外部系统的状态,或者与外界发生交互,所以其操作是动态的。

    提示模板

最后一类核心组件是提示模板,即Prompts。这里的“提示”并不是日常对话里的简单提示,而是指预先设计好的、可以指导大模型完成某种任务的模板。提示模板提供了一种规范的方式,在我们向大模型提问或者指挥大模型做事的时候,保证提问的方式有效且一致。

2.3 两种常见的传输方式

    标准输入/输出
    标准输入/输出主要用于本地场景,当客户端与服务器运行在同一服务器上时,数据直接通过进行的stdin和stdout进行数据的传输。常见的应用场景包括:

      构建命令行工具;与本地服务器或进程集成;进程间的简单数据交换;使用Shell脚本自动化执行任务;

    流式传输
    MCP用到的数据传输方式为HTTP结合SSE的传输方式。SSE指的是Server Sent Events,即MCP服务器向客户端推送消息的方式。SSE通信方式类似于Websocket,都需要客户端主动与服务器建立一个长连接,不同的是SSE客户端无法主动向服务器发送消息,而是被动等待服务推送消息给客户端,因其Accept头中声明对text/event-stream的支持,所以称其为流式传输,它只支持文本类型的数据传输,不支持二进制数据的传输。

2.4 安全机制

    访问控制和权限管理。
    MCP强调由MCP服务器掌控资源和工具,这本身就是一种天然的权限隔离。换句话说,大模型并不能想看什么就看什么、想做什么就做什么,它只能使用MCP服务器开放给它的资源和工具。而MCP服务器由谁部署?通常由数据和服务器的拥有者部署,而且将MCP服务器部署在受信任的环境中。所以,拥有数据或服务器的一方始终拥有决定权:可以选择提供哪些资源、启用哪些工具。

    身份验证和安全通信。
    MCP在连接远程服务时,强制要求使用安全认证机制(如OAuth2.1)来验证MCP客户端或MCP服务器的身份。

    元数据和安全提示。
    MCP工具可以带有元数据来描述其行为特性。例如,一个工具可被标记为“只读”或者“可能修改数据”。MCP客户端可以根据这些元数据,决定是否允许大模型直接调用,或者在调用前提示用户确认。

    沙箱隔离机制。
    很多MCP服务器均被部署于受控的沙箱环境中,以实现隔离运行。这可确保即便某些客户端经由MCP发出错误或潜在的恶意指令,其影响亦被限定在沙箱范围内,无法扩散至宿主系统。

参考文献:

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MCP AI协议 模型上下文协议
相关文章