链载Ai
标题: Spring AI MCP:AI智能体与本地数据无缝集成详解来了! [打印本页]
作者: 链载Ai 时间: 昨天 12:55
标题: Spring AI MCP:AI智能体与本地数据无缝集成详解来了!
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">在人工智能飞速发展的今天,大语言模型(LLM)已成为企业数字化转型的核心引擎。ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">但是,模型的能力往往受限于输入数据的范围——如何将本地文件、数据库甚至外部API中的海量数据注入模型,成为技术人员面临的一大挑战。ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">近日,Spring AI推出的MCP(Model Context Protocol)集成方案,为这一问题提供了标准化答案。ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">通过MCP协议,开发者可以像连接USB设备一样,轻松将本地数据源、数据库甚至远程服务接入AI智能体,构建具备上下文感知能力的复杂应用。ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">本文将从技术原理、实战案例到未来趋势,全面解析Spring AI MCP的生态价值。ingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
Spring AI MCP为Java开发者提供了与MCP协议深度集成的解决方案,
其核心组件包括:
Spring AI应用:基于Spring框架构建的智能体应用,负责与用户交互和任务调度。MCP客户端:封装了与MCP Server通信的逻辑,支持同步/异步调用。MCP Server:轻量级服务端程序,暴露特定功能的标准化接口(如文件读写、数据库查询)。本地/远程数据源:MCP Server可直接访问的文件系统、数据库或第三方API。关键组件解析:
1.Function Callbacks
Spring AI MCP通过McpFunctionCallback将MCP工具转换为标准的Spring AI函数调用。
例如,当模型需要查询本地文件时,McpFunctionCallback会触发MCP Client与Server的通信,最终将文件内容作为上下文返回模型。
2.ChatClient集成
开发者只需在ChatClient中注入McpFunctionCallback,即可让模型在对话中动态调用外部工具。以下代码展示了这一过程的简洁性:
java@BeanpublicChatClientchatClient(McpSyncClientmcpClient){List<McpFunctionCallback>callbacks=mcpClient.listTools(null).tools().stream().map(tool->newMcpFunctionCallback(mcpClient,tool)).collect(Collectors.toList());returnchatClientBuilder.defaultFunctions(callbacks).build();}示例演示:
Step1:用到的组件
1. MCP Client,与 MCP 集成的关键,提供了与本地文件系统进行交互的能力。
2. Function Callbacks,Spring AI MCP 的 function calling 声明方式。
3. Chat Client,Spring AI 关键组件,用于 LLM 模型交互、智能体代理。
Step2:声明 ChatClient
//List<McpFunctionCallback>functionCallbacks;varchatClient=chatClientBuilder.defaultFunctions(functionCallbacks).build();
这里首先定义一个 ChatClient Bean,作为代理与大模型进行交互。
Step3:声明 MCP Function Callbacks
下面代码通过mcpClient与MCP server 交互,把MCP通过 McpFunctionCallback 适配为标准的 Spring AI function。
- 发现 MCP server 中可用的工具 tool(Spring AI 中叫做 function)列表。
- 依次将每个 tool 转换成 Spring AI function callback。
- 最终我们会将这些 McpFunctionCallback 注册到 ChatClient 使用。
@BeanpublicList<McpFunctionCallback>functionCallbacks(McpSyncClientmcpClient){returnmcpClient.listTools(null).tools().stream().map(tool->newMcpFunctionCallback(mcpClient,tool)).toList();}通过上面我们可以知道,ChatClient 与模型交互过程是无感知的,模型在需要的时候告知 ChatClient 去做函数调用。
只不过 Spring AI 通过 McpFunctionCallback 将实际的函数调用过程委托给了 MCP,通过标准的 MCP 协议与本地文件系统交互:
- 在与大模交互的过程中,ChatClient 处理相关的 function calls 请求;
- ChatClient 调用 MCP 工具(通过 McpClient);
- McpClient 与 MCP server(即 filesystem)交互;
Step4:初始化 McpClient
该智能体应用使用同步 MCP 客户端与本地运行的文件系统 MCP server 通信:
@Bean(destroyMethod ="close")publicMcpSyncClient mcpClient() { varstdioParams = ServerParameters.builder("npx") .args("-y","@modelcontextprotocol/server-filesystem","path)) .build(); // 1
var mcpClient = McpClient.sync(new StdioServerTransport(stdioParams), Duration.ofSeconds(10), new ObjectMapper()); //2
var init = mcpClient.initialize(); // 3 System.out.println("MCP Initialized:" + init);
return mcpClient;}
运行示例,这里前提条件要注意:
1. 安装 npx(Node Package eXecute)
首先确保本地机器安装了 npm[4],然后运行如下命令:
2. 下载示例源码
gitclonehttps://github.com/springaialibaba/spring-ai-alibaba-examples.gitcdspring-ai-alibaba-examples/spring-ai-alibaba-mcp-example/filesystem
3. 设置环境变量
#通义大模型DashscopeAPI-KEYexportAI_DASHSCOPE_API_KEY=${your-api-key-here}4. 构建示例
Step6:运行示例
智能体将向模型发起提问,可通过控制台查看输出结果。
至此示例演示就顺利完成!
写在最后
从本地文件到企业数据库,从实时API到物联网设备,MCP协议正在重新定义AI与数据的交互方式。

Spring AI MCP凭借其强大的生态兼容性和易用性,为开发者提供了一把打开智能体时代的钥匙。
无论是构建个人助手还是企业级应用,掌握MCP都将让你在AI竞赛中抢占先机。
| 欢迎光临 链载Ai (https://www.lianzai.com/) |
Powered by Discuz! X3.5 |