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

↓推薦關注↓
