admin管理员组文章数量:1446757
大模型协议|深入理解MCP协议
引言
前几日群里还在讨论MCP,好奇心的驱使,我也去看了下,搞了一通之后发现还需要访问国外网站就没有再研究下去,今日闲来无事又开始琢磨琢磨,开始折腾之旅。
什么是MCP
MCP(Model Context Protocol) 是 Anthropic 推出的一种开放协议标准,并在2024年11月份已经开源(/
)。MCP标准化了应用程序如何向LLM提供上下文
,通过统一的客户端-服务器架构解决 LLM 应用与数据源连接的难题,通过提供一个统一、标准化且安全的数据连接方式,MCP解决了数据孤岛问题。再简单点来说,如果你把MCP想象成人工智能应用程序的USB-C端口。正如USB-C提供了一种将您的设备连接到各种外围设备和附件的标准化方式,MCP提供了一种将人工智能模型连接到不同数据源和工具的标准化方式。总结起来就是下面几个特点:
- LLMs开源标准协议
- 解决LLMs数据孤岛问题
- 可连接本地资源和外部资源
- 提供集成能力
- ……
MCP整体架构
MCP支持通过统一协议访问本地资源(如数据库、文件)和远程资源(如 Slack、GitHub API),无需定制集成。MCP 不仅共享数据,还可公开工具和交互模板,且内置安全性,确保资源由服务器完全掌控。通过官网提供的一张图可以清晰理解MCP。
- MCP 主机(MCP Hosts):希望通过 MCP 访问资源的程序(例如 Claude Desktop、IDE 或 AI 工具),用于发起连接。
- MCP 客户端(MCP Clients):与服务器保持 1:1 连接的协议客户端。
- MCP 服务器(MCP Servers):轻量级程序,每个程序都通过标准化模型上下文协议公开特定功能。为客户端提供上下文、工具和 prompt 信息。
- 本地资源(Local Resources):本地机器资源中可供 MCP 服务器安全访问的资源,例如数据库(Data Source A和Data Source B)、文件、服务,官方提供了一个案例来访问SQLite。
- 互联网远程服务(Remote Resources):可以通过网页API来双向调用远程服务,例如Remote Service C。
MCP工作原理
MCP将 LLMs 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。客户端负责发送请求给 MCP 服务器,MCP服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。通过官方提供的周期图来感受下:
MCP核心组件
在MCP中有三大组件,分别是协议层(Protocol layer)、传输层(Transport layer)、消息类型(Message types)。
- 协议层(Protocol layer):协议层负责消息的封装、请求/响应的关联,以及高层通信模式的管理。 主要类包括:Protocol、Client、Server等。
- 传输层(Transport layer):MCP支持多种传输机制,主要有
Stdio传输
和基于 HTTP 和 SSE 的传输
。 - 消息类型(Message types):MCP的消息类型主要有
请求、结果、错误、通知
。例如错误消息
interface Error {
code: number;
message: string;
data?: unknown;
}
MCP协议利好Java
随着AI技术的发展,Java开发者可能感到需要不断学习新的技能以跟上时代的步伐,尤其是在机器学习、深度学习等新领域的知识,以及新的工具和技术上很吃力,毕竟在人工智能方向,Python一直都是王者般的存在。模型上下文协议的JavaSDK支持AI模型和工具之间的标准化集成,那么如何集成呢?
JavaSDK整体架构
在JavaSDK中,遵循分层架构,明确分离关注点。
MCP客户端
MCP客户端是模型上下文协议(MCP)架构中的关键组件,负责建立和管理与MCP服务器的连接。它实现了协议的客户端。
MCP服务端
MCP服务器是模型上下文协议(MCP)架构中的基础组件,它为客户端提供工具、资源和功能。它实现了协议的服务器端。
引入依赖包
如果你使用了一个Maven项目,那么可以引入下面的包
代码语言:javascript代码运行次数:0运行复制<!-- 1、引入MCP核心功能依赖 -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId>
</dependency>
……
<!-- 2、引入HTTP SSE传输依赖 -->
<!-- Spring WebFlux-based SSE client and server transport -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
</dependency>
<!-- Spring WebMVC-based SSE server transport -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
</dependency>
……
<!-- 3、依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-bom</artifactId>
<version>0.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
总结
AI开发者可以通过 Claude 桌面应用快速部署 MCP 服务,也可以根据官方提供的快速入门指南构建自己的 MCP 解决方案。同时,开源社区已开放了连接器和实现的代码库,支持开发者贡献自己的扩展功能。但是很无奈的是,这玩意我没有注册成功,先写一篇其他博文咯。
本文标签: 大模型协议|深入理解MCP协议
版权声明:本文标题:大模型协议|深入理解MCP协议 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748294051a2839910.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论