成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

必看!SpringAI輕松構建MCP Client-Server架構

人工智能
MCP 是 Model Context Protocol,模型上下文協議,它是由 Anthropic(Claude 大模型母公司)提出的開放協議,用于大模型連接外部“數據源”的一種協議。

MCP 這個概念相信大家已經聽了無數次了,但不同人會有不同的解釋,你可能也是聽得云里霧里的。

不過沒關系,今天這篇內容會通過 Spring AI 給你實現一個 MCP 的 Client 和 Server 架構,讓你徹底搞懂 MCP 的概念,以及學會 MCP 的開發技能。

什么是MCP?

MCP 是 Model Context Protocol,模型上下文協議,它是由 Anthropic(Claude 大模型母公司)提出的開放協議,用于大模型連接外部“數據源”的一種協議。

它可以通俗的理解為 Java 界的 Spring Cloud Openfeign,只不過 Openfeign 是用于微服務通訊的,而 MCP 用于大模型通訊的,但它們都是為了通訊獲取某項數據的一種機制,如下圖所示:

為什么需要MCP?

MCP 存在的意義是它解決了大模型時代最關鍵的三個問題:數據孤島、開發低效和生態碎片化等問題。

1.打破數據孤島,讓AI“連接萬物”

大模型本身無法直接訪問實時數據或本地資源(如數據庫、文件系統),傳統方式需要手動復制粘貼或定制接口。MCP 通過標準化協議,讓大模型像“插USB”一樣直接調用外部工具和數據源,例如:

  • 查天氣時自動調用氣象 API,無需手動輸入數據。
  • 分析企業數據時直接連接內部數據庫,避免信息割裂。

2.降低開發成本,一次適配所有場景

在之前每個大模型(如 DeepSeek、ChatGPT)需要為每個工具單獨開發接口(Function Calling),導致重復勞動,MCP 通過統一協議:

  • 開發者只需寫一次 MCP 服務端,所有兼容 MCP 的模型都能調用。
  • 用戶無需關心技術細節,大模型可直接操作本地文件、設計軟件等。

3.提升安全性與互操作性

  • 安全性:MCP 內置權限控制和加密機制,比直接開放數據庫更安全。
  • 生態統一:類似 USB 接口,MCP 讓不同廠商的工具能“即插即用”,避免生態分裂。

4.推動AIAgent的進化

MCP 讓大模型從“被動應答”變為“主動調用工具”,例如:

  • 自動抓取網頁新聞補充實時知識。
  • 打開 Idea 編寫一個“Hello World”的代碼。

MCP 的誕生,相當于為AI世界建立了“通用語言”,讓模型、數據和工具能高效協作,最終釋放大模型的全部潛力。

MCP組成和執行流程

MCP 架構分為以下 3 部分:

  • 客戶端:大模型應用(如 DeepSeek、ChatGPT)發起請求。
  • 服務器:中間層,連接具體工具(如數據庫、設計軟件)。
  • 資源:具體的數據或工具(如 Exce l文件、網頁 API)。

運行流程

  • 用戶提問。
  • 大模型通過 MCP 客戶端發送請求。
  • MCP 服務器接收指令。
  • 調用對應工具(如數據庫)執行。
  • 返回結果給大模型。
  • 生成最終回答。

Spring AI MCP 介紹

Spring AI MCP 是通過 Spring Boot 集成擴展了 MCP 的 Java SDK(開發工具),它同時提供了 Spring Boot 客戶端和服務器的啟動器,方便使用 Spring AI MCP 快速開發 AI 應用程序。

Spring AI MCP 實戰

當前案例中,我們使用 MCP 實現一個天氣查詢小助手,其中包含的主要角色有:

  • MCP Server:MCP 服務提供方,提供天氣查詢功能。
  • MCP Client:MCP 客戶端(大模型端)我們對接 DeepSeek LLM 實現對 MCP Server 的調用,從而實現天氣預報的查詢功能。

具體交互流程如下:

實現 MCP Server 代碼編寫

MCP Server 主要實現步驟如下:

  • 添加 MCP Server 依賴。
  • 設置 MCP 配置信息。
  • 編寫 MCP Server 服務代碼。
  • 將 MCP Server 進行暴露設置。

關鍵實現代碼如下。

添加 MCP Server 依賴

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

<repositories>
<repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
</repository>
<repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
</repository>
<repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
</repository>
</repositories>

MCP Server 依賴有三種類型:

  • 標準輸入/輸出 (STDIO):spring-ai-starter-mcp-server
  • Spring MVC(服務器發送的事件):spring-ai-starter-mcp-server-webmvc
  • Spring WebFlux(響應式 SSE):spring-ai-starter-mcp-server-webflux

設置 MCP 配置信息

MCP Server 包含以下配置信息:

配置項

描述

默認值

enabled

啟用/禁用 MCP 服務器

TRUE

stdio

啟用/禁用 stdio 傳輸

FALSE

name

用于標識的服務器名稱

mcp-server

version

服務器版本

1.0.0

type

服務器類型 (SYNC/ASYNC)

SYNC

resource-change-notification

啟用資源更改通知

TRUE

prompt-change-notification

啟用提示更改通知

TRUE

tool-change-notification

啟用工具更改通知

TRUE

tool-response-mime-type

(可選)每個工具名稱的響應 MIME 類型。例如,將 mime 類型與工具名稱相關聯spring.ai.mcp.server.tool-response-mime-type.generateImage=image/pngimage/pnggenerateImage()

-

sse-message-endpoint

Web 傳輸的 SSE 終端節點路徑

/mcp/message

其中 MCP Server 又分為以下兩種類型。

服務器類型
  • 同步服務器:默認服務器類型,它專為應用程序中的簡單請求-響應模式而設計。要啟用此服務器類型,請在您的配置中設置。 激活后,它會自動處理同步工具規格的配置,spring.ai.mcp.server.type=SYNC。
  • 異步服務器:異步服務器實現使用非阻塞作并針對非阻塞作進行了優化。要啟用此服務器類型,請使用配置您的應用程序。此服務器類型會自動設置具有內置 Project Reactor 支持的異步工具規范,spring.ai.mcp.server.type=ASYNC。

編寫 MCP Server 服務代碼

編寫天氣預報查詢偽代碼:

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

import java.util.Map;

@Service
publicclass WeatherService {

    @Tool(description = "根據城市名稱獲取天氣預報")
    public String getWeatherByCity(String city) {
        Map<String, String> mockData = Map.of(
            "西安", "晴天",
            "北京", "小雨",
            "上海", "大雨"
        );
        return mockData.getOrDefault(city, "抱歉:未查詢到對應城市!");
    }

}

將服務暴露出去

@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}

這樣 MCP Server 就編寫完成了。

實現 MCP Client 代碼編寫

MCP Client 主要實現步驟如下:

  • 添加 MCP Client 相關依賴。
  • 設置配置信息。
  • 設置 ChatClient 對象(調用 MCP Server)。
  • 編寫測試代碼調用 MCP Server。

核心實現代碼如下:

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
publicclass ClientController {

    @Autowired
    private ChatClient chatClient;

    @RequestMapping("/chat")
    public String chat(@RequestParam(value = "msg",defaultValue = "今天天氣如何?") String msg) {
        String response = chatClient.prompt()
        .user(msg)
        .call()
        .content();
        System.out.println("響應結果: " + response);
        return response;
    }

}

最終執行結果如下:

因為 MCP Server 只配置了 3 個城市,所以查詢結果和預期相符:

“想要獲取完整案例的同學加V:vipStone【備注MCP】

小結

到這里使用 Spring AI 就實現了 MCP Client 和 Server 的調用了,可以看出 MCP 的推出只是為了增強大模型的能力的,有了 MCP 協議之后,任何大模型就可以調用任意實現了 MCP Server 的服務了,這樣就無線擴充了大模型的能力,為 AI 的發展提供了標準的協議和便利的對接。

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2025-03-28 09:33:11

2025-06-19 02:30:00

Spring服務器MCP

2025-04-14 00:00:00

MCPjson 信息地理編碼

2024-05-13 11:00:23

2025-05-06 08:09:50

2025-06-03 01:25:00

2025-04-17 08:00:00

ManusDeepSeekMCP

2025-05-12 08:16:49

2024-09-30 13:11:09

2025-04-21 04:22:00

Spring AIMCPDeepSeek

2023-06-05 00:28:24

MySQL數據庫非鎖定讀

2025-06-03 09:31:05

2025-04-01 08:05:00

智能體人工智能MCP

2025-02-12 09:04:20

2015-12-09 15:16:03

架構師京東架構

2025-05-27 01:10:00

MCP服務OAuth2

2025-04-29 00:01:55

2025-05-19 08:30:19

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品视频网站 | 久久久久久黄 | 一级毛毛片 | 日韩在线资源 | 国产精品永久久久久久久www | 欧美成人免费在线视频 | 日本三级线观看 视频 | 久久99深爱久久99精品 | 精品美女视频在免费观看 | 亚洲综合大片69999 | 国产91丝袜在线18 | 亚洲精品一区二区三区中文字幕 | 草逼网站 | 伊人久久精品 | 少妇精品久久久久久久久久 | 日批免费看 | 毛片免费观看 | 亚洲一区免费视频 | 一色一黄视频 | 亚洲在线一区 | 蜜臀久久99精品久久久久野外 | 日韩av美女电影 | 四虎影视免费观看 | 国产一区二区三区四区 | 青青草综合网 | 国产精品中文字幕一区二区三区 | 视频一区二区中文字幕 | 麻豆一区二区三区 | 国产成人99久久亚洲综合精品 | 国产精品99久久久久久宅男 | 久久久久资源 | .国产精品成人自产拍在线观看6 | 99re视频在线 | 精品美女视频在免费观看 | 午夜精品一区二区三区在线视频 | 久久99国产精一区二区三区 | 在线视频 欧美日韩 | 二区在线视频 | 久久国产精品久久久久久久久久 | 国产一区在线免费观看 | 国产91亚洲精品一区二区三区 |