最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring自定義MCP sse-endpoint配置指南

 更新時(shí)間:2025年09月11日 10:16:01   作者:Gwanda  
本文給大家介紹Spring自定義MCP sse-endpoint配置指南,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

前言

最近調(diào)研了MCP的相關(guān)內(nèi)容,嘗試自定義MCP server的端點(diǎn),并在MCP client里配置自定義的server 端點(diǎn),發(fā)現(xiàn)官方的文檔缺失了一部分,且無法通過yaml直接自定義。經(jīng)過翻看源碼后,成功修改了配置,以下是一些記錄。

一、MCP server配置自定義sse-endpoint

首先,根據(jù)SpringAI官方文檔,在yaml文件中,spring.ai.mcp.server.sse-endpoint為自定義端點(diǎn)

但是,經(jīng)過驗(yàn)證,只配置該選項(xiàng),啟動(dòng)正常,通過postman調(diào)用新配置的sse-endpoint :“http://localhost:8080/demo/sse”,會(huì)提示404 not found。
通過斷點(diǎn),發(fā)現(xiàn)項(xiàng)目啟動(dòng)時(shí),框架通過McpWebMvcServerAutoConfiguration來進(jìn)行自動(dòng)配置

通過源碼,發(fā)現(xiàn)配置的sse-endpoint,并沒有在配置類里引用,無論配置什么地址,都是使用默認(rèn)的/sse作為端點(diǎn)。
而springboot是可以通過自己編寫配置類,來實(shí)現(xiàn)對(duì)jar包內(nèi)的配置類的補(bǔ)充和覆蓋,所以第一時(shí)間就想到了,自己編寫一個(gè)config,實(shí)現(xiàn)獲取yaml里的配置內(nèi)容,代碼如下

/**
 * @className: MyMcpServerConfig
 * @author: huajie
 * @date: 2025/4/29
 * @Description:
 **/
@Configuration
public class MyMcpServerConfig {
    @Bean
    @Primary
    public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider(
            ObjectProvider<ObjectMapper> objectMapperProvider, McpServerProperties serverProperties) {
        ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
        return new WebMvcSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint(),
                serverProperties.getSseEndpoint());
    }
    @Bean
    public RouterFunction<ServerResponse> mvcMcpRouterFunction(WebMvcSseServerTransportProvider transportProvider) {
        return transportProvider.getRouterFunction();
    }
}

重新啟動(dòng),可以通過postman訪問自定義的地址了

二、MCP client配置

在server端配置完成后,client也需要同步配置,不然啟動(dòng)會(huì)提示404,找不到server的地址,但在翻閱文檔后,發(fā)現(xiàn)spring提供的client相關(guān)jar,并沒有配置自定義sse-endpoint的方式??,沒有辦法,又需要自定義相關(guān)配置類了,首先,先在yaml里增加對(duì)應(yīng)key

翻看源碼和斷點(diǎn),找到client端的自動(dòng)配置class

按照server端的經(jīng)驗(yàn),編寫自定義config,此處需要注意,因?yàn)閥aml里并不存在sseEndpoint這個(gè)key,我們需要先自定義一個(gè)SseClientProperties,替換源碼里的McpSseClientProperties

@Configuration
public class MyMcpSseConfig {
    private final SseClientProperties sseClientProperties;
    public MyMcpSseConfig(SseClientProperties sseClientProperties) {
        this.sseClientProperties = sseClientProperties;
    }
    @Bean
//    @Primary
    public List<NamedClientMcpTransport> mcpHttpClientTransports(SseClientProperties sseProperties,
                                                                 ObjectProvider<ObjectMapper> objectMapperProvider) {
        ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
        List<NamedClientMcpTransport> sseTransports = new ArrayList<>();
        for (Map.Entry<String, SseClientProperties.Connection> serverParameters : sseProperties.getConnections().entrySet()) {
            String url = serverParameters.getValue().getUrl();
            String sseEndpoint = serverParameters.getValue().getSseEndpoint();
            var transport = new HttpClientSseClientTransport(HttpClient.newBuilder(), url,
                    sseEndpoint, objectMapper);
            sseTransports.add(new NamedClientMcpTransport(serverParameters.getKey(), transport));
        }
        return sseTransports;
    }
}

源碼里的McpSseClientProperties:

編寫完成后啟動(dòng),此時(shí)console報(bào)錯(cuò),提示

詢問模型后,發(fā)現(xiàn)是因?yàn)镾pring Boot 中,同名的 Bean 不能重復(fù)注冊(cè), mcpHttpClientTransports 這個(gè) Bean,在兩個(gè)地方都被定義了: 1個(gè)在官方自動(dòng)配置 SseHttpClientTransportAutoConfiguration, 1個(gè)在自己的配置類 MyMcpSseConfig
通過修改啟動(dòng)類,排除官方自動(dòng)配置的class
@SpringBootApplication(exclude = {SseHttpClientTransportAutoConfiguration.class})
再次啟動(dòng),此時(shí)console沒有報(bào)錯(cuò)了,通過postman調(diào)用client的接口,也可以正常調(diào)用server里編寫的tools

總結(jié)

SpringAI還是一個(gè)比較新的內(nèi)容,很多文檔、代碼,可能都存在一些缺漏,而且網(wǎng)上相關(guān)內(nèi)容也較少,尤其是MCP相關(guān)。此文檔作為一個(gè)調(diào)研的記錄

到此這篇關(guān)于Spring自定義MCP sse-endpoint配置指南的文章就介紹到這了,更多相關(guān)Spring MCP sse-endpoint內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis中<choose>標(biāo)簽的用法說明

    mybatis中<choose>標(biāo)簽的用法說明

    這篇文章主要介紹了mybatis中<choose>標(biāo)簽的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • JAVA代碼塊你了解嗎

    JAVA代碼塊你了解嗎

    這篇文章主要介紹了舉例說明Java中的代碼塊,包括靜態(tài)屬性和非靜態(tài)屬性以及構(gòu)造函數(shù)等相關(guān)的執(zhí)行先后,需要的朋友可以參考下
    2021-09-09
  • Nacos框架服務(wù)注冊(cè)實(shí)現(xiàn)流程

    Nacos框架服務(wù)注冊(cè)實(shí)現(xiàn)流程

    這篇文章主要介紹了SpringCloud服務(wù)注冊(cè)之nacos實(shí)現(xiàn)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • java.lang.NoClassDefFoundError錯(cuò)誤解決辦法

    java.lang.NoClassDefFoundError錯(cuò)誤解決辦法

    這篇文章主要介紹了java.lang.NoClassDefFoundError錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 深入探究SpringBoot可以同時(shí)處理多少請(qǐng)求

    深入探究SpringBoot可以同時(shí)處理多少請(qǐng)求

    SpringBoot是一款非常流行的Java后端框架,它可以幫助開發(fā)人員快速構(gòu)建高效的Web應(yīng)用程序,但是,許多人對(duì)于SpringBoot能夠同時(shí)處理多少請(qǐng)求的疑問仍然存在,在本篇文章中,我們將深入探討這個(gè)問題,需要的朋友可以參考下
    2023-07-07
  • Spring?Boot中Controller層規(guī)劃與最佳實(shí)踐建議

    Spring?Boot中Controller層規(guī)劃與最佳實(shí)踐建議

    本文將系統(tǒng)性地介紹如何規(guī)劃編寫高質(zhì)量的Controller層代碼,涵蓋RESTful設(shè)計(jì)、參數(shù)處理、異常處理、日志記錄、安全控制等關(guān)鍵方面,并提供可落地的代碼示例和架構(gòu)建議,感興趣的朋友一起看看吧
    2025-06-06
  • SpringBoot+Vue3整合SSE實(shí)現(xiàn)實(shí)時(shí)消息推送功能

    SpringBoot+Vue3整合SSE實(shí)現(xiàn)實(shí)時(shí)消息推送功能

    在日常開發(fā)中,我們經(jīng)常需要實(shí)現(xiàn)實(shí)時(shí)消息推送的功能,這篇文章將基于SpringBoot和Vue3來簡(jiǎn)單實(shí)現(xiàn)一個(gè)入門級(jí)的例子,下面小編就和大家詳細(xì)介紹一下
    2025-11-11
  • IDEA 集成 Docker 插件一鍵部署 SpringBoot 應(yīng)用小結(jié)

    IDEA 集成 Docker 插件一鍵部署 SpringBoot 應(yīng)用

    通過本文介紹的方法,我們期望能幫助開發(fā)者更輕松地在IDEA中實(shí)現(xiàn)Spring Boot應(yīng)用的Docker化部署,為現(xiàn)代軟件開發(fā)提供更便捷的解決方案,感興趣的朋友一起看看吧
    2023-11-11
  • Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù)

    Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù)

    這篇文章主要介紹了Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Spring從入門到源碼之IOC基本用法

    Spring從入門到源碼之IOC基本用法

    這篇文章給大家介紹了Spring從入門到源碼之IOC基本用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-01-01

最新評(píng)論

湟源县| 盐亭县| 综艺| 宜宾县| 藁城市| 东海县| 革吉县| 固镇县| 盐亭县| 疏附县| 泰来县| 临沭县| 余干县| 修文县| 沅江市| 右玉县| 丰宁| 大关县| 增城市| 白银市| 革吉县| 班戈县| 古丈县| 海城市| 龙井市| 贺州市| 嵊泗县| 永清县| 浑源县| 清徐县| 民县| 牙克石市| 凯里市| 西安市| 精河县| 万荣县| 泸水县| 上思县| 黑龙江省| 云龙县| 宁波市|