Model Context Protocol(MCP)简介 Cloud Native Spring AI MCP 简介 Cloud Native Spring AI 应用程序:使用 Spring AI 框架构建想要通过 MCP 访问数据的生成式 AI 应用程序 Spring MCP 客户端:MCP 协议的 Spring AI 实现,与服务器保持 1:1 连接 MCP 服务器:轻量级程序,每个程序都通过标准化的模型上下文协议公开特定的功能 本地数据源:MCP 服务器可以安全访问的计算机文件、数据库和服务 远程服务:MCP 服务器可以通过互联网(例如,通过 API)连接到的外部系统 通过一个示例快速体验 Spring AI MCP Cloud Native 示例完整源码[3]:https://github.com/springaialibaba/spring-ai-alibaba-examples/spring-ai-alibaba-mcp-example 1. MCP Client,与 MCP 集成的关键,提供了与本地文件系统进行交互的能力。 2. Function Callbacks,Spring AI MCP 的 function calling 声明方式。 和开发之前的 Spring AI 应用一样,我们先定义一个 ChatClient Bean,用于与大模型交互的代理。需要注意的是,我们为 ChatClient 注入的 functions 是通过 MCP 组件(McpFunctionCallback)创建的。 发现 MCP server 中可用的工具 tool(Spring AI 中叫做 function)列表。 依次将每个 tool 转换成 Spring AI function callback。 可以看出,ChatClient 与模型交互的过程是没有变化的,模型在需要的时候告知 ChatClient 去做函数调用,只不过 Spring AI 通过 McpFunctionCallback 将实际的函数调用过程委托给了 MCP,通过标准的 MCP 协议与本地文件系统交互: 在与大模交互的过程中,ChatClient 处理相关的 function calls 请求 ChatClient 调用 MCP 工具(通过 McpClient) 在以上代码中: 1. 配置 MCP server 启动命令与参数。 2. 初始化 McpClient:关联 MCP server、指定超时时间等。 3. Spring AI 会使用 npx -y @modelcontextprotocol/server-filesystem "/path/to/file"在本地机器创建一个独立的子进程(代表本地 Mcp server),Spring AI 与 McpClient 通信,McpClient 进而通过与 Mcp server 的连接操作本地文件。 2. 下载示例源码 3. 设置环境变量 4. 构建示例 总结 Cloud Native 在客户端,让 Spring AI 开发的智能体可以快速接入 MCP 生态中的各种 server 服务。模型上下文协议(即 Model Context Protocol,MCP)[1]是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。MCP 提供了一种统一的方式将 AI 模型连接到不同的数据源和工具,它定义了统一的集成方式。在开发智能体(Agent)的过程中,我们经常需要将将智能体与数据和工具集成,MCP 以标准的方式规范了智能体与数据及工具的集成方式,可以帮助您在 LLM 之上构建智能体(Agent)和复杂的工作流。
Spring AI MCP 为模型上下文协议提供 Java 和 Spring 框架集成。它使 Spring AI 应用程序能够通过标准化的接口与不同的数据源和工具进行交互,支持同步和异步通信模式。

这里我们提供一个示例智能体应用,这个智能体可以通过 MCP 查询或更新本地文件系统,并以文件系统中的数据作为上下文与模型交互。次示例演示如何使用模型上下文协议(MCP)将 Spring AI 与本地文件系统进行集成。
声明 ChatClient
// List<McpFunctionCallback> functionCallbacks;var chatClient = chatClientBuilder.defaultFunctions(functionCallbacks).build();
声明 MCP Function Callbacks
@Beanpublic List<McpFunctionCallback> functionCallbacks(McpSyncClient mcpClient) {return mcpClient.listTools(null).tools().stream().map(tool -> new McpFunctionCallback(mcpClient, tool)).toList();}
初始化 McpClient
@Bean(destroyMethod = "close")public McpSyncClient mcpClient() {var stdioParams = ServerParameters.builder("npx").args("-y", "@modelcontextprotocol/server-filesystem", "path)).build(); // 1var mcpClient = McpClient.sync(new StdioServerTransport(stdioParams),Duration.ofSeconds(10), new ObjectMapper()); //2var init = mcpClient.initialize(); // 3System.out.println("MCP Initialized: " + init);return mcpClient;}前提条件
首先确保本地机器安装了 npm[4],然后运行如下命令:
npm install -g npx
git clone https://github.com/springaialibaba/spring-ai-alibaba-examples.gitcd spring-ai-alibaba-examples/spring-ai-alibaba-mcp-example/filesystem
# 通义大模型 Dashscope API-KEYexport AI_DASHSCOPE_API_KEY=${your-api-key-here}
./mvnw clean install
运行示例应用
./mvnw spring-boot:run
MCP 作为一款开放协议,直接规范了应用程序如何向LLM提供上下文。MCP 就像是面向 AI 应用程序的 USB-C 端口,正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一个将 AI 模型连接到不同数据源和工具的标准化方法。
暂无讨论,说说你的看法吧


