項目地址: https://gitee.com/kylewka/smart-ai
1 項目說明
MCP(Model Context Protocol)協議是一個用于 AI 模型和工具之間通信的標準協議。隨著 AI 應用變得越來越復雜并被廣泛部署,原有的通信機制面臨著一系列挑戰。
近期 MCP 倉庫的 PR #206【1】 引入了一個全新的 Streamable HTTP 傳輸層替代原有的 HTTP+SSE 傳輸層
Streamable HTTP 相比 HTTP + SSE 具有更好的穩定性,在高并發場景下表現更優。
Streamable HTTP 在性能方面相比 HTTP + SSE 具有明顯優勢,響應時間更短且更穩定。
Streamable HTTP 客戶端實現相比 HTTP + SSE 更簡單,代碼量更少,維護成本更低。
本文介紹了SpringBoot如何實現MCP StreamableHTTP 服務器,并且使用 Cherry Studio 客戶端測試MCP服務器
Streamable HTTP 支持無狀態的服務和有狀態的服務,目前的大部分場景無狀態的 Streamable HTTP 的可以解決,通過對比兩種傳輸方案的客戶端實現代碼,可以直觀地看到無狀態的 Streamable HTTP 的客戶端實現簡潔性。
由于官方的 mcp-java-sdk 還未支持 StreamableHTTP 模式,同時需要研究以原有項目提供MCP服務,故設計了該項目
項目已經封裝為 springboot 的 starter 組件,僅需添加幾個注解就能實現MCP服務器方法
項目地址: https://gitee.com/kylewka/smart-ai
2 使用說明
2.1 安裝教程
確保您的開發環境已安裝 JDK 8 或更高版本以及 Maven
克隆本倉庫到本地:git clone https://gitee.com/kylewka/smart-ai.git?
進入項目根目錄,執行 Maven 構建命令:mvn clean install?
2.2 添加依賴
在您的 Spring Boot 項目的 pom.xml? 文件中添加以下依賴
該依賴暫未發布到 Maven 倉庫,需要手動安裝至本地倉庫
com.github.kylewkasmart-ai-mcp-spring-boot-starter1.0.02.3 創建 MCP 服務端點
使用 @McpServerEndpoint 注解標注您的服務類,并使用 @McpFunction 注解標注服務方法
@McpServerEndpoint(value = “/mcp”, version = “1.0.0”, name = “測試MCP服務”)
public class McpServerTool {
@McpFunction(name = "getWeather", description = "獲取天氣信息")
public String getWeather(@McpParam(name = "city", description = "城市名稱", required = true) String city) {return String.format("%s: 晴天,溫度25℃", city);
}@McpFunction(name = "getSpeciality", description = "獲取城市特產")
public String getSpeciality(@McpParam(name = "city", description = "城市名稱", required = true) String city) {return String.format("%s特產是小籠包", city);
}
}
2.4 啟動應用
直接啟動 Spring Boot 啟動,即可啟動MCP服務
MCP服務受項目本身的鑒權系統影響,請根據實際情況進行配置
客戶端使用
使用新版MCP協議的客戶端軟件 Cherry Studio,建議使用 Cherry Studio >= 1.2.0