SpringAI再進化:支援MCP對話外部世界

隨著 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 中新增必要的依賴:
<dependency>
<groupId>

org.springframework.experimental

</groupId>
<artifactId>

spring-ai-mcp

</artifactId>
<version>

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<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;
 }

privatestatic 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 開發感興趣可以加入我們社群:


↓推薦關注↓

相關文章