王炸!MCP 架構設計深度剖析 & 使用 Spring AI + MCP 四步教你實現 Agent 智能體開發 原創
Model Context Protocol(MCP)模型上下文協議是一種標準化協議,它讓大模型能夠更便捷地與外部數據、工具相連。你可以把 MCP 想象成一個通用的插頭或接口,就像 USB-C 一樣,不管是什么設備,只要插上這個接口,就能和電腦、充電器等連接起來。只不過,MCP 連接的不是物理設備,而是 AI 大模型與外部的數據源、工具等。
有了 MCP,AI 大模型就能更輕松地獲取外部信息,完成更多任務。比如,通過 MCP,AI 大模型可以操作電腦讀寫文件,或者模擬瀏覽器操作等。
1、MCP 架構設計剖析
第一、MCP 架構設計
MCP 包含三大核心模塊:MCP Hosts、MCP Clients、MCP Servers。
- MCP Hosts:像 Claude Desktop、Cursor 這樣的應用程序,它們通過 MCP Client 訪問數據。
- MCP Clients:與 MCP Server 服務器保持 1:1 連接的協議客戶端。
- MCP Servers:輕量級程序,每個 AI 程序都通過標準化的模型上下文協議公開特定功能。
第二、Java MCP 架構設計案例
結合 AI 大模型,以一個 Java AI 應用(比如:AI Agent 智能體)為例,Java MCP 架構設計如下所示:
可以看到 Java MCP 架構設計的傳輸層有兩類:Stdio Transport、HTTP SSE,如下圖所示:
第三、MCP 架構設計的工作模式
MCP Server 可以以工具(Tools)的形式配置到 MCP Client 中。當我們向 MCP Host 發送執行指令時,MCP Host 會攜帶這些工具信息,一起發送給 AI 大模型。隨后,AI 大模型會進行意圖識別和語義分析,并調用 MCP 來執行具體的業務需求,處理邏輯時序圖如下圖所示:
上圖大致的處理邏輯,總結如下6步:
1.讀取配置文件,運行所有 MCP Servers,獲取可用的 Tools;
2.用戶與 LLM 對話(附帶所有 Tools 名稱描述,參數定義);
3.LLM 識別到要執行某個Tool,返回名稱和參數;
4.找到對應 MCP Server 的 Tool,調用執行,返回結果;
5.把工具執行結果提交給 LLM;
6.LLM 返回分析結果給用戶。
你可以把 MCP 想象成你雇來的得力助手,你只需要告訴他你的想法,他就會負責跑腿和執行具體任務,而你只需負責下達指令和驗收最終結果。
以下使用 Spring AI + MCP 四步教你實現 Agent 智能體開發。
2、MCP Server 開發步驟
本節手把手教您搭建一個基于 Spring AI MCP 的 Java MCP Server,讓您能夠在各類客戶端輕松調用企業級 AI 服務。借助這一方案,您可以將業務邏輯與工具無縫融入 AI 交互流程,為用戶提供更智能、更貼合業務場景的體驗。
第一、準備環境
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
</dependency>
第二、業務邏輯實現
@Service
publicclassMeilisearchService {
@Tool(description = "PIG ISSUE 知識庫檢索,解決用戶技術問題 ")
public String queryQuestion(@ToolParam(description = "用戶的技術問題描述 ") String question) {
Clientclient=newClient(newConfig()
));
SearchResultresults= client.index("pigx-doc")
.search(newSearchRequest(question)
.setShowMatchesPosition(true)
.setSort(newString[]{"lvl2:desc"})
.setLimit(1));
return results.getHits().stream()
.map(hit -> "【"+hit.get("lvl0")+"】"+hit.get("text"))
.collect(Collectors.joining("\n\n"));
}
}
第三、服務注冊
@Configuration
public class McpConfig {
@Bean
public ToolCallbackProvider documentTools(MeilisearchService searchService) {
return MethodToolCallbackProvider.builder()
.toolObjects(searchService)
.build();
}
}
3、MCP Client 配置
第一、MCP Clent 通用配置
{
"mcpServers":{
"pig-issue":{
"isActive":true,
"command":"java",
"args":[
"-Dspring.ai.mcp.server.stdio=true",
"-jar",
"/Users/lengleng/env/repository/io/github/pig-mesh/pig-issue-query-mcp/0.0.1-SNAPSHOT/pig-issue-query-mcp-0.0.1-SNAPSHOT.jar"
]
}
}
}
第二、圖形化配置
1.Cherry 客戶端配置界面
2.客戶端配置界面
第三、效果展示
4、MCP 架構設計總結
總體而言,MCP 解決了 Client 和 Server 之間的數據交互問題,但在 LLM 到 Tool 的對接上仍有不足:不同模型對 Function Call 的支持程度參差不齊,例如 DeepSeek R1 就不支持,這就導致了工具路由的問題。
第一、不足之處
1.開源時間較短:目前還不夠完善,語言支持有限,示例代碼也不夠豐富。
2.MCP Server 質量參差不齊:缺乏統一的質量保障體系和包管理工具,許多 MCP Server 無法正常運行,或者頻繁崩潰。
3.本地 MCP Server 依賴特定環境:本地 MCP Server 仍依賴 Node.js 或 Python 環境,而遠程 MCP Server 的支持較少。
第二、未來展望
如果未來更多 AI 應用開始接入 MCP 協議,生態逐漸完善,其能力將非常強大。隨著使用人數的增加,會有更多 AI 應用愿意對接,真正實現一套代碼在所有地方運行。
個人認為,MCP 仍有很大的發展潛力,未來可期!
本文轉載自公眾號玄姐聊AGI 作者:玄姐
