Spring AI 再进化,支持 MCP 协议
Model Context Protocol (MCP) 是一种开放标准,旨在促进人工智能(AI)系统与各种数据源之间的安全双向连接。它为 AI 应用程序提供了统一的接口,使其能够高效地访问和利用外部数据,从而取代了以往需要为每个数据源定制集成的复杂做法。
https://modelcontextprotocol.io/docs/concepts/architecture
是什么?
Model Context Protocol(MCP)是由Anthropic推出的一项开放协议,旨在促进大型语言模型(LLM)与外部数据源之间的无缝集成。MCP通过提供一个标准化的客户端-服务器架构,使得不同的AI应用能够高效地访问和共享本地及远程资源,从而解决了数据孤岛问题。
MCP 协议让开发者能够以统一的方式,连接各种本地或远程资源。
统一标准:
开发者只需要针对 MCP 进行一次开发,就能够实现与各种数据来源的对接,免去为每个数据源编写单独连接器的麻烦,从而大幅减少开发和维护的成本。
支持多种数据格式
MCP 能够处理各种不同的数据,包括结构化数据(如数据库)和非结构化数据(如文本或影像),这使得开发者可以在不考虑数据格式的情况下,轻松地将不同来源的资料整合到一起。
无缝整合
开发者可以在一个统一的界面中,从多个来源同时获取并操作数据。例如,MCP 让你可以在语言模型的聊天界面中,直接访问 GitHub、Google Drive 等资源,让团队协作更加流畅,提升工作流程效率。
和 function calling 的区别
MCP(多协议通信)提供了一种灵活且高效的数据交换机制,支持跨系统的通信和数据交换。它通过协议标准化,简化了分布式系统的开发,并有效降低了长期生态开发的成本,实现了数据共享和上下文协同等高级功能。
相较之下,Function Calling 主要适用于简单任务,且与具体的 AI 应用紧密绑定。在实际应用中,Function Calling 一旦设计完毕,通常很难在其他业务场景中复用。而 MCP 的设计初衷是为了应对跨系统、跨工具的复杂场景,它着重解决了复用性和系统间交互的问题,使得数据和功能能够在不同系统间灵活传递,从而提升了系统的整体协同效率。
Spring AI MCP
添加依赖
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0-M5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental</groupId> <artifactId>spring-ai-mcp</artifactId> <version>0.4.1</version> </dependency> </dependencies>
增加配置
-
application.properties
spring.ai.openai.base-url=https://api.openai-hk.com spring.ai.openai.api-key=XXX
MCP Client 实现
业务目标,让 MCP 直接加载当前公众号推文,让大模型提出修改意见
@Bean public CommandLineRunner predefinedQuestions(ChatClient.Builder chatClientBuilder, List<McpFunctionCallback> functionCallbacks, ConfigurableApplicationContext context) { return args -> { var chatClient = chatClientBuilder .defaultFunctions(functionCallbacks.toArray(new McpFunctionCallback[0])) .build(); String question1 = "mcp.txt 这篇文档有什么建议吗?方便公众号传播推广"; System.out.println("ASSISTANT: " + chatClient.prompt(question1).call().content()); context.close(); }; } @Bean public List<McpFunctionCallback> functionCallbacks(McpSyncClient mcpClient) { return mcpClient.listTools(null) .tools() .stream() .map(tool -> new McpFunctionCallback(mcpClient, tool)) .toList(); } @Bean(destroyMethod = "close") public McpSyncClient mcpClient() { var stdioParams = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-filesystem", getDbPath()) .build(); var mcpClient = McpClient.using(new StdioClientTransport(stdioParams)) .requestTimeout(Duration.ofSeconds(10)).sync(); var init = mcpClient.initialize(); System.out.println("MCP Initialized: " + init); return mcpClient; } private static String getDbPath() { return Paths.get(System.getProperty("user.dir"), "target").toString(); }
测试执行
运行以下命令来启动Spring Boot应用,测试MCP功能:
mvn springboot:run
如果您对 Java AI 感兴趣,欢迎订阅我的频道。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【GreatSQL优化器-09】make_join_query_block
【GreatSQL优化器-09】make_join_query_block 一、make_join_query_block介绍 GreatSQL优化器对于多张表join的连接顺序在前面的章节介绍过的best_access_path函数已经执行了,接着就是把where条件进行切割然后推给合适的表。这个过程就是由函数make_join_query_block来执行的。 下面用几个简单的例子来说明join连接中条件推送是什么。 CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT,date1 DATETIME); INSERT INTO t1 VALUES (1,10,'2021-03-25 16:44:00.123456'),(2,1,'2022-03-26 16:44:00.123456'),(3,4,'2023-03-27 16:44:00.123456'),(5,5,'2024-03-25 16:44:00.123456'),(7,null,'2020-03-25 16:44:00.123456'),(8,10,'2020-10-25 16:4...
- 下一篇
枫清科技高雪峰: Data-Centric新范式开启,知识引擎+大模型双轮驱动企业智能化
2024年12月,由智猩猩与智东西联合主办的2024中国生成式AI大会(上海站)在上海圆满收官。在第二日主会场进行的「AI Infra峰会」上,枫清科技创始⼈兼CEO高雪峰以《从数据到知识:AI 重塑百行千业的基石》为主题发表了主题演讲。 在演讲中,高雪峰谈到要将生成式 AI 真正应用到企业决策场景中,弥合其与决策智能之间鸿沟的技术突破点,就是利用好企业本地知识,同时将符号逻辑推理的能力和各种大模型的算法能力相融合。 枫清科技创始⼈兼CEO高雪峰 随后,高雪峰指出企业智能化的核心趋势,正在从以模型为中心(Model-Centric)的人工智能架构落地范式,转向以数据为中心(Data-Centric)这一新的人工智能落地范式。 他总结了企业智能化面临的四个典型困境:模型幻觉、可解释性、推理能力弱、安全与合规;以及企业级人工智能平台场景落地需要解决的四个技术挑战:数据孤岛、数据整合、知识校验、实时性与时效。 为此,他在演讲中表示,枫清科技可以为企业提供知识引擎与大模型双轮驱动的新一代智能体平台,通过构建全链路优化体系,帮助企业提升数据质量,将企业本地数据知识化,并融合大模型沉淀的泛化知识,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启