随着 AI 技术的快速发展,如何让 AI 系统高效地获取和处理外部数据成为一个关键挑战。今天为大家介绍 Spring AI 最新支持的 MCP 协议,它将为 AI 应用打开一个全新的数据互联世界。
MCP:AI 与外部世界的"万能翻译官"

想象一下,如果你的 AI 应用需要同时读取数据库、访问文件系统、调用 API,以前你可能需要为每个数据源写一个专门的接口。而现在,Model Context Protocol (MCP)的出现彻底改变了这一切。

为什么 MCP 这么特别?

  • 统一标准:一次开发,到处运行。MCP 就像一个"万能适配器",让 AI 应用可以用同一种方式与各种数据源对话。

  • 全面兼容:无论是结构化的数据库表,还是非结构化的文本文件,MCP 都能轻松应对。

  • 即插即用:想在聊天界面中直接查看 GitHub 代码或 Google 文档?MCP 让这一切变得自然而流畅。

MCP vs Function Calling:不止是简单的函数调用

很多开发者可能会问:这和 Function Calling 有什么不同?关键区别在于:

  • Function Calling 更像是"一次性订制":完成特定任务,但难以复用

  • MCP 则是"通用翻译官":为不同系统搭建沟通的桥梁,让数据和功能自由流动

Spring AI + MCP:几行代码搞定数据互联

让我们通过一个实际例子,看看如何在 Spring AI 中使用 MCP:让 AI 帮你优化文章

有了 MCP 的支持,我们可以让 AI 直接读取本地文档,数据库,各种数据源,这种能力让 AI 应用的实用性大大提升,为内容创作、文档处理等场景带来新的可能。

1. 添加依赖

首先在 pom.xml 中添加必要的依赖:


     

 org.springframework.experimental groupId>     

 spring-ai-mcp artifactId>     

 0.4.1 version> dependency>



2. 基础配置

在 application.properties 中配置 AI 服务:

spring.ai.openai.base-url=your-api-base-url
spring.ai.openai.api-key=your-api-key
3. 核心实现

@Bean
 public CommandLineRunner predefinedQuestions(ChatClient.Builder chatClientBuilder,    List  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   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 应用开发感兴趣,可以学习一下笔者录制的这个系列视频:Java AI应用开发(https://javaai.pig4cloud.com),当然是开源免费的啦。当然如果对Java AI 开发感兴趣可以加入我们社群: