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


配置模型并選擇MCP服務(wù)器

對話測試效果

到此這篇關(guān)于SpringBoot改造MCP服務(wù)器的詳細(xì)說明(StreamableHTTP 類型)的文章就介紹到這了,更多相關(guān)SpringBoot MCP服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springBoot集成Ollama大模型及流式傳輸?shù)膯栴}小結(jié)
Ollama是一個用于部署和運(yùn)行各種開源大模型的工具,它支持多種平臺和設(shè)備,包括Windows、Mac和Linux,甚至可以在樹莓派等輕量級設(shè)備上運(yùn)行,這篇文章主要介紹了springBoot集成Ollama大模型及流式傳輸?shù)膯栴}小結(jié),需要的朋友可以參考下2025-04-04
java如何把逗號分隔的String字符串轉(zhuǎn)int集合
這篇文章主要介紹了java實現(xiàn)把逗號分隔的String字符串轉(zhuǎn)int集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
關(guān)于Java實體類Serializable序列化接口的作用和必要性解析
序列化是將對象狀態(tài)轉(zhuǎn)化為可保持或者傳輸?shù)母袷竭^程,與序列化相反的是反序列化,完成序列化和反序列化,可以存儲或傳輸數(shù)據(jù),一般情況下,在定義實體類時會使用Serializable,需要的朋友可以參考下2023-05-05
Spring?Cloud?中使用?Sentinel?實現(xiàn)服務(wù)限流的兩種方式
這篇文章主要介紹了Spring?Cloud?中使用?Sentinel?實現(xiàn)服務(wù)限流的方式,通過示例代碼主要介紹了Sentinel的兩種實現(xiàn)限流的方式,需要的朋友可以參考下2024-03-03
詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問題
這篇文章主要介紹了詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

