前几日群里还在讨论MCP,好奇心的驱使,我也去看了下,搞了一通之后发现还需要访问国外网站就没有再研究下去,今日闲来无事又开始琢磨琢磨,开始折腾之旅。
MCP(Model Context Protocol) 是 Anthropic 推出的一种开放协议标准,并在2024年11月份已经开源(https://modelcontextprotocol.io/
)。MCP标准化了应用程序如何向LLM提供上下文
,通过统一的客户端-服务器架构解决 LLM 应用与数据源连接的难题,通过提供一个统一、标准化且安全的数据连接方式,MCP解决了数据孤岛问题。再简单点来说,如果你把MCP想象成人工智能应用程序的USB-C端口。正如USB-C提供了一种将您的设备连接到各种外围设备和附件的标准化方式,MCP提供了一种将人工智能模型连接到不同数据源和工具的标准化方式。总结起来就是下面几个特点:
MCP支持通过统一协议访问本地资源(如数据库、文件)和远程资源(如 Slack、GitHub API),无需定制集成。MCP 不仅共享数据,还可公开工具和交互模板,且内置安全性,确保资源由服务器完全掌控。通过官网提供的一张图可以清晰理解MCP。
MCP将 LLMs 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。客户端负责发送请求给 MCP 服务器,MCP服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。通过官方提供的周期图来感受下:
在MCP中有三大组件,分别是协议层(Protocol layer)、传输层(Transport layer)、消息类型(Message types)。
Stdio传输
和基于 HTTP 和 SSE 的传输
。请求、结果、错误、通知
。例如错误消息interface Error {
code: number;
message: string;
data?: unknown;
}
随着AI技术的发展,Java开发者可能感到需要不断学习新的技能以跟上时代的步伐,尤其是在机器学习、深度学习等新领域的知识,以及新的工具和技术上很吃力,毕竟在人工智能方向,Python一直都是王者般的存在。模型上下文协议的JavaSDK支持AI模型和工具之间的标准化集成,那么如何集成呢?
在JavaSDK中,遵循分层架构,明确分离关注点。
MCP客户端是模型上下文协议(MCP)架构中的关键组件,负责建立和管理与MCP服务器的连接。它实现了协议的客户端。
MCP服务器是模型上下文协议(MCP)架构中的基础组件,它为客户端提供工具、资源和功能。它实现了协议的服务器端。
如果你使用了一个Maven项目,那么可以引入下面的包
<!-- 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 解决方案。同时,开源社区已开放了连接器和实现的代码库,支持开发者贡献自己的扩展功能。但是很无奈的是,这玩意我没有注册成功,先写一篇其他博文咯。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。