精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于Spring AI實現MCP客戶端 + 服務端,全網最保姆級的教程來了

人工智能
基于Spring AI實現的MCP協議,與Spring Boot進行了集成,提供客戶端和服務器端兩種啟動器Starter,可快速搭建具備 MCP 支持能力的 AI 應用。

我們在前文中介紹過,MCP是一種類似于USB-C接口一樣的標準化協議,能夠讓LLM以結構化的方式與外部工具及資源進行交互。

該協議支持多種傳輸機制,可在不同環境下提供靈活的適配能力。

而基于Spring AI實現的MCP協議,與Spring Boot進行了集成,提供客戶端和服務器端兩種啟動器Starter,可快速搭建具備 MCP 支持能力的 AI 應用。

Java MCP Client ArchitectureJava MCP Client Architecture

在上圖中,MCP Client的核心作用在于與MCP Server建立并管理連接,并對其所提供的工具和能力進行發現、協商和執行,并與LLM的提示詞系統進行交互。

而MCP Server則是以提示詞模板匹配的方式,為MCP Client提供工具和能力。

接下來,我們基于Spring AI來實現MCP Client + Server的Demo,讓大家感受一下MCP的神奇之處。

準備工作

首先,我們需要在本地安裝Ollama框架,這樣各類LLM就可以在我們的電腦上跑起來,下載地址為:https://ollama.com/。

下載之后,可以通過ollama run命令來安裝我們想要的LLM,圖中下載的是通義大模型Qwen3。

也可以通過這種方式來測試連通性,為Spring AI工程的引入做準備。

圖片

Spring AI構建MCP Client和MCP Server

接下來步入正題,我們開始進行Spring AI的工程構建,需要在工程中分為mcp-client和mcp-server兩個module。

圖片圖片

1、mcp-server構建

pom.xml
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-M7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>


<dependencies>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
    </dependency>
</dependencies>

我們在這里用的是1.0.0-M7版本,并引入 spring-ai-starter-mcp-server-webmvc jar包實現sse傳輸。

MCPService.java
package com.tony.mcpserver.service;


import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Service;




@Service
public class MCPService {


    @Tool(description = "中國最宜居的城市")
    public String livingCity() {
        return "最宜居的城市是天津,風景秀美,美食眾多,消費不貴。";
    }


}

在 Spring AI 中,@Tool 注解是實現 AI 模型與外部工具(如函數、服務、API 等)交互的核心機制。

它允許將普通 Java 方法標記為 “可被 AI 模型調用的工具”,從而讓LLM能夠根據用戶請求自動選擇并執行相應工具,擴展 AI 的能力邊界(數據庫查詢、API調用、文件處理等)。

ToolCallbackProviderConfig.java
package com.tony.mcpserver;


import com.tony.mcpserver.service.MCPService;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;




@Configuration
public class ToolCallbackProviderConfig {


    @Bean
    public ToolCallbackProvider livingCityTools(MCPService mcpService) {
        return MethodToolCallbackProvider.builder().toolObjects(mcpService).build();
    }
}

將指定的工具對象( mcpService)注冊為可被 AI 模型調用的工具集。

MCPServerApplication.java
package com.tony.mcpserver;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class MCPServerApplication {


    public static void main(String[] args) {
        SpringApplication.run(MCPServerApplication.class, args);
    }
}
application.properties
server.port=8080


spring.ai.mcp.server.name=city-mcp-server
spring.ai.mcp.server.sse-message-endpoint=/mcp/city

至此,我們終于將MCP Server工程搭建完成,下面來訪問一下,看看效果。

圖片

我們可以在啟動日志中看到這條日志,代表已經將工具對象注冊成功。

圖片

通過訪問上述URL證明,SSE服務端已正確啟動并監聽端口。

2、mcp-client構建

pom.xml
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-M7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-mcp-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-model-ollama</artifactId>
    </dependency>
</dependencies>

在這里,我們需要將Spring AI的版本與server端對應上,并引入mcp-client和ollama的依賴jar包。

MCPController.java
package com.tony.mcp.client;


import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class MCPController {


    @Autowired
    private OllamaChatModel ollamaChatModel;
    @Autowired
    private ToolCallbackProvider toolCallbackProvider;




    @GetMapping("/mcp")
    public String MCPGenerate(@RequestParam(value = "message", defaultValue = "推薦宜居的城市") String message) {
        ChatClient chatClient = ChatClient.builder(ollamaChatModel)
                .defaultTools(toolCallbackProvider.getToolCallbacks())
                .build();
        return chatClient.prompt(message).call().content();
    }
}

該類用于接收用戶請求,與MCP Server建立連接并發現其所提供的帶@Tool注解的對象和方法,以及與LLM的提示詞系統進行交互。

MCPClientApplication.java
package com.tony.mcp.client;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class MCPClientApplication {


    public static void main(String[] args) {
        SpringApplication.run(MCPClientApplication.class, args);
    }
}
application.properties
server.port=8081


spring.ai.ollama.base-url=http://127.0.0.1:11434/
spring.ai.ollama.chat.model=qwen3:8b
spring.ai.ollama.chat.options.temperature=0.7


spring.ai.mcp.client.name=mcp-client
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8080
spring.ai.mcp.client.toolcallback.enabled = true

在該文件中,包括與MCP Server和Ollama的連接配置項。

至此,我們也將MCP Client工程搭建完成了,接下來我們把MCP Client和MCP Server的服務全部啟動起來,看看運行效果。

圖片

從輸出的這些內容可以看出來,這條請求確實到了MCP Server,并根據@Tool方法的內容返回了結果,實驗成功。

結語

我這段時間寫Spring AI代碼最直觀的感受是,LLM在講究因果的工程代碼中增加了智能因素。

責任編輯:武曉燕 來源: 小托尼學長
相關推薦

2009-08-21 15:54:40

服務端與客戶端

2009-08-21 15:36:41

服務端與客戶端

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 16:14:52

服務端與客戶端通信

2011-09-09 09:44:23

WCF

2025-06-03 09:31:05

2024-03-06 14:58:52

客戶端微服務架構

2025-06-19 02:30:00

Spring服務器MCP

2010-11-19 14:22:04

oracle服務端

2023-03-06 08:01:56

MySQLCtrl + C

2010-03-18 17:47:07

Java 多客戶端通信

2021-10-19 08:58:48

Java 語言 Java 基礎

2015-01-13 10:32:23

RestfulWeb框架

2023-04-03 08:13:05

MySQLCtrl + C

2022-06-14 15:07:04

IPC客戶端服務端

2022-09-05 14:36:26

服務端TCP連接

2009-06-12 19:18:08

REST客戶端框架JavaScript

2021-06-11 06:54:34

Dubbo客戶端服務端

2011-08-15 14:09:59

JavaHBase

2021-10-14 08:39:17

Java Netty Java 基礎
點贊
收藏

51CTO技術棧公眾號

亚洲中文字幕无码av永久| 国产日本欧美视频| 在线不卡av电影| 99精品女人在线观看免费视频| 亚洲综合色噜噜狠狠| 免费看成人av| 99国产精品久久久久99打野战| 99亚洲视频| 精品国模在线视频| 女同性恋一区二区三区| 国产亚洲精彩久久| 精品国产91久久久久久老师| 中文字幕久精品免| 欧洲成人av| 极品尤物av久久免费看| 奇米四色中文综合久久| 免费毛片在线播放免费| 成人影院天天5g天天爽无毒影院| 欧美大片日本大片免费观看| 亚洲欧美日韩一级| 欧产日产国产精品视频| 亚洲精品久久7777| 亚洲欧美99| 精品视频一二三| 99久久精品国产网站| 亚洲淫片在线视频| 在线视频1卡二卡三卡| 99在线热播精品免费99热| 欧美成人自拍视频| 国产一区在线观看免费| 欧美精品尤物在线观看| 日韩高清a**址| 免费不卡的av| 波多野结衣欧美| 欧美一级夜夜爽| 天天综合天天添夜夜添狠狠添| 欧美xo影院| 欧美视频精品一区| 黄色免费视频大全| av美女在线观看| 亚洲在线视频免费观看| 国产精品啪啪啪视频| 日本在线视频网| 国产精品另类一区| 天天综合色天天综合色hd| 免费av在线电影| 久久这里只有精品首页| 精品不卡在线| 午夜福利一区二区三区| 成人av资源站| 精品国产免费一区二区三区| 天堂网2014av| 91在线视频免费91| 欧美激情论坛| av在线第一页| 中文字幕在线观看不卡| 一区二区三区我不卡| 黄网站app在线观看| 亚洲欧美在线观看| 激情五月五月婷婷| av在线官网| 亚洲综合自拍偷拍| 激情伊人五月天| 一区二区精品伦理...| 色综合中文字幕| 精品久久久久久久无码| 日日狠狠久久| 日韩精品在线一区二区| www.啪啪.com| 欧美猛男男男激情videos| 色吧影院999| 我家有个日本女人| 国产欧美日韩亚洲一区二区三区| 57pao精品| 亚洲熟妇无码久久精品| 国产精品中文欧美| 精品视频第一区| www.久久热.com| 亚洲精品日韩专区silk| 久久久999免费视频| **在线精品| 91精品国产91综合久久蜜臀| 大尺度做爰床戏呻吟舒畅| 国产欧美日韩精品一区二区免费 | 999精品视频一区二区三区| 亚洲高清在线观看视频| 久久你懂得1024| 一区在线电影| 精品丝袜在线| 欧美美女黄视频| 国产chinese中国hdxxxx| 少妇精品久久久一区二区| 久久久av免费| yjizz国产| 国产精品一区二区久久精品爱涩| 国产日韩欧美一区二区| 欧美日韩xx| 黄网动漫久久久| 久久人人爽av| 亚州av日韩av| 精品中文字幕视频| 精品视频一二三区| 粉嫩av亚洲一区二区图片| 日本不卡免费新一二三区| 国产美女在线观看| 在线亚洲欧美专区二区| 无码人妻丰满熟妇啪啪网站| 成人精品影院| 欧美一区第一页| 国产福利第一页| 中文字幕精品三区| 各处沟厕大尺度偷拍女厕嘘嘘| 99国内精品久久久久| 亚洲欧美国产一区二区三区| 精品无码免费视频| 激情综合色播激情啊| 欧美日韩最好看的视频| 丰乳肥臀在线| 欧美一区二区三区白人| 中文字幕精品亚洲| 老司机午夜免费精品视频| 都市激情久久久久久久久久久| jizzjizz在线观看| 色94色欧美sute亚洲线路一久| 国产av一区二区三区传媒| 久久久久国产精品| 国产精品亚洲精品| 国产69久久| 在线看国产日韩| 欧美做受喷浆在线观看| 亚洲人成人一区二区三区| 7777精品伊久久久大香线蕉语言 | 欧美国产精品久久| 欧美一级片中文字幕| 免费福利视频一区| 久久久久久久国产精品视频| h狠狠躁死你h高h| 综合久久综合久久| www.桃色.com| 亚洲国产不卡| 亚洲综合精品一区二区| 二区三区在线观看| 中文一区一区三区免费在线观看| 久久久精品中文字幕麻豆发布| 影音欧美亚洲| 亚洲最大的免费视频网站| 中文字幕在线观看亚洲| 中文在线观看免费高清| 中文字幕第一区综合| 日韩爱爱小视频| 青青草97国产精品麻豆| 国产精品尤物福利片在线观看| 91在线视频| 欧美体内she精视频| 国产传媒在线看| 奇米888四色在线精品| 亚洲不卡1区| 国产69精品久久| www国产91| 精品国产无码AV| 一区二区三区四区在线| 中文字幕人妻一区| 亚洲欧洲一区| 日本一区不卡| 四虎影视国产精品| 欧美精品在线播放| 婷婷在线免费视频| 日韩欧美国产免费播放| 中字幕一区二区三区乱码| 久草这里只有精品视频| 日本国产中文字幕| 偷拍一区二区| 国产精品中文在线| 在线电影福利片| 亚洲经典中文字幕| 成人免费一级片| 亚洲蜜臀av乱码久久精品蜜桃| 无码人妻aⅴ一区二区三区玉蒲团| 亚洲精品精选| 亚洲国产综合自拍| 2021年精品国产福利在线| 91精品国产99| 97人人在线| 日韩成人网免费视频| 亚洲精品无码久久久久| 亚洲摸摸操操av| 中文字幕一区二区人妻在线不卡 | 一区二区三区中文字幕| 青青草福利视频| 国产在线精品一区二区夜色| 1024av视频| 亚洲成人日韩| 欧美日韩在线精品| 中文无码日韩欧| 国产精品直播网红| 国产美女高潮在线| 久久精品国产一区二区三区| 天天插天天干天天操| 在线成人免费观看| 国产精品久久久久久久久久久久久久久久久 | 国产精品无圣光一区二区| 精品国产aⅴ一区二区三区东京热| 久久亚洲欧洲| 精品少妇人欧美激情在线观看| 欧美日韩中文字幕一区二区三区| 波多野结衣精品久久| 成人毛片免费| 777午夜精品福利在线观看| 国产写真视频在线观看| 国产一区二区三区在线视频| 天堂中文字幕av| 久草在线中文最新视频| 亚洲国产精品久久久久秋霞蜜臀 | 久久精品国产久精国产| 欧美牲交a欧美牲交| 欧美欧美全黄| 日本一区二区免费高清视频| 国产精品免费99久久久| 国产伦精品一区二区三区照片 | 日韩偷拍一区二区| 欧美a级网站| 国产激情一区二区三区在线观看 | 久久综合久久久| 风间由美一区二区av101| 91成人免费看| 国产日韩欧美中文在线| 成人免费在线视频网址| 久久免费资源| 国产精品欧美风情| 欧美影视资讯| 国产成人高清激情视频在线观看| 欧美gv在线观看| 国语对白做受69| 波多野在线观看| 久久久日本电影| 日本在线观看大片免费视频| 久久99精品久久久久久琪琪| gogo在线观看| 久久久亚洲综合| 91视频最新| 欧美视频三区| av在线亚洲男人的天堂| 日韩在线成人| 国产精华一区二区三区| 国产精品1luya在线播放| 国产欧美欧洲| 欧美日韩一区二区三区不卡视频| 国内精品一区二区| 亚洲综合图色| 日本三级中国三级99人妇网站| 国产精品欧美在线观看| 日韩欧美精品一区二区| 日韩黄色大片网站| 亚洲图片都市激情| 久久精品亚洲人成影院| 国产成人生活片| 亚洲国产国产亚洲一二三| 日韩视频免费播放| 99精品福利视频| 日韩精品免费播放| 日产国产高清一区二区三区| 我要看一级黄色大片| 蜜桃av一区二区三区| 激情久久综合网| av电影在线观看完整版一区二区| 人体私拍套图hdxxxx| 久久精品一区四区| 娇小11一12╳yⅹ╳毛片| 亚洲另类色综合网站| 久久高清免费视频| 色噜噜狠狠色综合欧洲selulu| 中文字幕在线2019| 精品久久五月天| 国产露出视频在线观看| 日韩视频免费在线观看| 超碰97免费在线| 国产精品视频区1| 91精品国产乱码久久久竹菊| 美国av一区二区三区| 91精品一区二区三区综合| 国产va亚洲va在线va| 日韩精品乱码免费| 中文字幕一二三| 久久久欧美精品sm网站| 午夜国产小视频| 欧美性黄网官网| 国产精品人人妻人人爽| 精品一区二区三区四区| 欧美性videos| 91成人国产在线观看| 亚洲精品66| 欧美性色黄大片人与善| 好看不卡的中文字幕| 午夜国产一区二区三区| 成人黄色在线视频| 亚洲精品自拍视频在线观看| 午夜电影网一区| 国产三级三级在线观看| 亚洲欧美一区二区三区情侣bbw| 欧美性videos| 国产成人欧美在线观看| 风间由美中文字幕在线看视频国产欧美| 五月天久久狠狠| 国产日韩一区二区三区在线| 亚洲免费在线播放视频| 国产欧美日韩不卡免费| 99久在线精品99re8热| 日韩西西人体444www| 99精品老司机免费视频| 青青青国产精品一区二区| 欧美午夜在线播放| 色香蕉在线观看| 日韩二区三区在线观看| 成人手机在线免费视频| 一区二区三区高清不卡| 国产一区二区在线视频观看| 亚洲香蕉成视频在线观看| 2020国产在线| 成人三级视频在线观看一区二区| 999久久久国产精品| 国产嫩草在线观看| 久久在线观看免费| 97人人澡人人爽人人模亚洲| 精品久久久久久久久久久院品网 | 啄木系列成人av电影| 国产一二三区在线播放| 国产一区二区三区国产| 秋霞欧美一区二区三区视频免费| 欧美在线你懂的| 黄色电影免费在线看| 热re91久久精品国99热蜜臀| 美日韩黄色大片| 日本a在线免费观看| 成人av综合一区| 国产成人无码精品| 亚洲激情视频网| a欧美人片人妖| 欧美精品一区二区三区在线四季 | 亚洲成在线观看| 国产刺激高潮av| 高清欧美电影在线| 极品尤物一区| 亚洲熟妇无码另类久久久| av高清久久久| 欧美videossex极品| 亚洲欧美日韩在线高清直播| 天天免费亚洲黑人免费| 日本一区视频在线| 秋霞午夜av一区二区三区| 国产真人真事毛片视频| 欧美日韩国产三级| 成年人黄视频在线观看| 国产成人免费电影| 亚洲神马久久| 久久亚洲AV无码专区成人国产| 欧美在线免费播放| 午夜精品一区| 91中文字精品一区二区| 伊人久久婷婷| 精品无码国产污污污免费网站 | 久久亚洲国产| 一级片免费在线观看视频| 一个色在线综合| 天天干视频在线| 国产精品你懂得| 欧美激情日韩| 短视频在线观看| 欧美影院午夜播放| www免费在线观看| 国产综合 伊人色| 男男视频亚洲欧美| 国产一二三四在线| 亚洲老头同性xxxxx| 99视频这里有精品| 国内精品在线观看视频| 国产欧美一区二区三区沐欲| 国产视频手机在线观看| 97精品国产97久久久久久免费| 精品国产不卡| 亚洲精品无码一区二区| 欧美在线观看一二区| 在线观看操人| 色噜噜一区二区| 成人性视频免费网站| 国产一级片免费在线观看| 色综合久久天天综线观看| 九色精品91| 青青草精品在线| 色88888久久久久久影院按摩 | 亚洲一区二区三区四区在线观看 | 精人妻一区二区三区| 91福利视频在线| 美女网站视频在线| 亚洲乱码国产乱码精品天美传媒| 成人a区在线观看| 国产女人18毛片水18精| 日韩av免费一区| 亚洲午夜在线| av最新在线观看| 国产午夜精品一区理论片飘花 |