Spring AI MCP:解鎖大模型應用開發新姿勢

一、AI 浪潮下的新利器 ——Spring AI MCP 登場

在當今數字化時代,人工智能(AI)無疑是最耀眼的技術明星,正以前所未有的速度滲透到各個領域,深刻改變著我們的生活和工作方式。從智能語音助手到圖像識別技術,從自動駕駛汽車到智能醫療診斷,AI 的身影無處不在。它不僅提升了各行業的效率和生產力,還為創新和發展開辟了新的道路。在這場 AI 革命中,如何高效地利用 AI 技術,尤其是大模型,成為開發者和企業面臨的重要課題。而 Spring AI MCP 的出現,猶如一顆璀璨的新星,為大模型應用開發帶來了新的曙光。

Spring AI MCP 是 Spring AI 生態系統中的關鍵組件,它的誕生旨在解決在將大模型集成到實際應用中時所面臨的一系列挑戰。隨著大模型的能力不斷增強,其在自然語言處理、圖像生成、智能決策等方面展現出巨大的潛力。然而,將這些強大的模型與現有的應用系統進行無縫對接,并非易事。開發者往往需要面對復雜的接口、不同模型提供商的差異、數據格式的轉換以及安全和性能等諸多問題。Spring AI MCP 的出現,正是為了簡化這一過程,提供一種統一、高效的方式來連接應用與大模型,讓開發者能夠更加專注于業務邏輯的實現,而無需過多關注底層的技術細節。它就像是一座橋梁,搭建在傳統應用與前沿 AI 技術之間,使得大模型的強大能力能夠輕松地融入到各種應用場景中,為企業和用戶創造更大的價值 。

二、Spring AI MCP 深度剖析

(一)什么是 Spring AI MCP

Spring AI MCP,即模型上下文協議(Model Context Protocol) ,是一種專門為大語言模型設計的標準化協議,旨在為大語言模型與外部工具、數據源之間搭建起一座高效、安全的交互橋梁。它允許 AI 模型以一種結構化、標準化的方式與外部世界進行交互,從而打破了以往大模型與外部連接的各種障礙。

在實際應用中,MCP 充當著 “萬能適配器” 的角色。比如,企業內部有多種不同類型的數據庫,如關系型數據庫 MySQL、PostgreSQL,以及非關系型數據庫 MongoDB 等,還有各類文件系統、API 接口等。以往,大模型要與這些不同的數據源和工具進行交互,需要為每一種都單獨開發適配代碼,這無疑是一項繁瑣且耗時的工作。而有了 MCP,它為所有這些外部資源定義了統一的交互接口和規范,大模型只需要按照 MCP 協議的標準進行連接和通信,就能夠輕松訪問和利用這些資源,大大簡化了集成過程。

從技術層面來看,MCP 基于多層架構設計,包括客戶端 / 服務端層、會話層和傳輸層。客戶端 / 服務端層負責處理客戶端和服務器之間的交互邏輯,會話層用于管理通信會話的狀態和生命周期,傳輸層則負責消息的序列化、反序列化以及在網絡中的傳輸 。這種分層架構使得 MCP 具有良好的擴展性和靈活性,能夠適應不同的應用場景和需求。

(二)MCP 的核心優勢

  1. 統一接口,降低開發成本:在 MCP 出現之前,開發者要將大模型與各種外部工具集成,需要針對每個工具的特定接口進行開發。不同工具的接口風格、數據格式和調用方式各不相同,這使得開發過程變得復雜且容易出錯。而 MCP 提供了統一的接口標準,基于 JSON-RPC 2.0 協議,開發者只需按照 MCP 的規范進行一次適配,就能夠讓大模型與所有支持 MCP 協議的工具進行交互。這極大地減少了開發工作量,降低了開發成本,提高了開發效率。例如,在開發一個智能數據分析應用時,使用 MCP 可以讓大模型方便地連接到各種數據庫(如 MySQL、Oracle)和數據分析工具(如 Tableau、PowerBI),而無需為每種工具單獨編寫復雜的連接和調用代碼。
  1. 打破數據孤島,實現數據流通:傳統的大模型往往只能基于其訓練時的數據進行處理和回答,無法實時獲取外部最新的數據,這就導致了 “數據孤島” 問題。而 MCP 通過標準化的接口,允許大模型安全、動態地連接到本地文件、數據庫、API 接口甚至物聯網設備等各種數據源,實現了數據的實時流通和共享。比如,在一個電商應用中,大模型可以通過 MCP 實時獲取商品庫存、價格等最新信息,從而為用戶提供更準確、及時的服務。用戶詢問某款商品是否有貨時,大模型能夠直接連接到庫存數據庫,獲取最新的庫存數據并回答用戶,而不是基于過時的訓練數據給出不準確的答案。
  1. 提升模型能力,增強應用智能:借助 MCP,大模型能夠調用各種外部工具來完成更復雜的任務,從而提升自身的能力和應用的智能化水平。例如,大模型可以通過 MCP 調用代碼編輯器工具來生成代碼,調用圖像識別工具來處理圖像,調用翻譯工具進行語言翻譯等。在智能辦公場景中,大模型可以利用 MCP 連接到郵件系統、文檔處理工具等,實現自動整理郵件、生成文檔摘要等功能,大大提高了辦公效率。
  1. 安全可控,保障數據隱私:MCP 在設計時充分考慮了安全性和數據隱私問題。它通過權限控制、加密傳輸和本地化處理等多種機制來保障數據的安全。在權限控制方面,MCP 服務器可以對大模型的訪問權限進行精細管理,只有被授權的模型才能訪問特定的資源。例如,企業可以設置大模型只能讀取數據庫中的某些特定字段,而不能進行寫入或刪除操作。在加密傳輸方面,MCP 采用了安全的加密算法,確保數據在傳輸過程中不被竊取或篡改。對于敏感數據,MCP 還支持本地化處理,將數據保留在本地服務器或設備上,不傳輸到外部,從而最大程度地保障數據隱私。

(三)Spring AI 與 MCP 的融合

Spring AI 作為 Spring 生態系統中專注于 AI 應用開發的框架,通過巧妙的設計將 MCP 集成其中,為開發者提供了更加便捷、高效的開發體驗。Spring AI 通過一系列的 Spring Boot 啟動器來實現與 MCP 的集成,主要包括客戶端啟動器和服務端啟動器。

在客戶端方面,核心啟動器
spring-ai-starter-mcp-client提供了對標準輸入輸出(STDIO)和基于 HTTP 的服務器發送事件(SSE)的支持,使得客戶端能夠方便地與 MCP 服務器進行通信。spring-ai-starter-mcp-client-webflux則是基于 WebFlux 的 SSE 流式傳輸實現,進一步優化了數據傳輸的性能和效率,適用于對實時性要求較高的應用場景。通過這些啟動器,開發者可以輕松地在 Spring Boot 應用中創建 MCP 客戶端,實現與 MCP 服務器的連接和交互。在一個智能客服應用中,開發者可以使用 Spring AI 的 MCP 客戶端啟動器,快速連接到后端的 MCP 服務器,獲取用戶的問題并調用相關的工具和數據源進行回答,從而實現高效的智能客服功能。

在服務端,
spring-ai-starter-mcp-server是支持 STDIO 傳輸的核心服務器,它為 MCP 服務端提供了基礎的功能支持。spring-ai-starter-mcp-server-webmvc基于 Spring MVC 的 SSE 流式傳輸實現,適用于基于 Spring MVC 框架的應用,能夠很好地與 Spring MVC 的架構和功能進行融合。spring-ai-starter-mcp-server-webflux則是基于 Spring WebFlux 的 SSE 流式傳輸實現,利用了 Spring WebFlux 的響應式編程模型,具有更高的性能和并發處理能力,適合構建高性能、低延遲的 MCP 服務端應用。借助這些服務端啟動器,開發者可以快速搭建起穩定、高效的 MCP 服務器,將各種工具和數據源暴露給大模型使用。在開發一個智能數據分析平臺時,開發者可以使用 Spring AI 的 MCP 服務端啟動器,將數據分析工具、數據庫等資源封裝成 MCP 服務,供大模型調用,實現智能化的數據分析功能。

Spring AI 還提供了豐富的工具和接口,方便開發者對 MCP 進行配置和管理。在配置文件中,開發者可以輕松地設置 MCP 服務器和客戶端的各種參數,如服務器地址、端口、認證信息等。Spring AI 還支持通過注解的方式來定義和注冊 MCP 工具,使得開發者能夠更加便捷地將業務邏輯封裝成可被大模型調用的工具。使用@Tool注解可以將一個 Java 方法標記為 MCP 工具,并通過注解的屬性來描述工具的功能和參數,幫助大模型更好地理解和調用這些工具。

三、實戰案例:打造智能文件管理助手

(一)需求分析

在日常辦公和項目開發中,隨著文件數量的不斷增加,文件管理變得愈發復雜和耗時。我們需要一款智能文件管理助手,以提升文件管理的效率和便捷性。這款助手需具備強大的文件搜索功能,支持根據文件名、文件內容關鍵詞等進行快速檢索,能在海量文件中迅速定位到所需文件。同時,它應擁有智能的文件整理能力,可根據文件類型(如文檔、圖片、視頻等)、創建時間、修改時間等屬性自動對文件進行分類整理,將文件放置到合適的文件夾中,使文件存儲結構更加清晰有序。還應具備文件備份與恢復功能,定期對重要文件進行備份,當文件出現丟失、損壞或誤刪除等情況時,能夠方便快捷地進行恢復,確保文件的安全性和完整性 。此外,為了方便用戶使用,智能文件管理助手需提供簡潔友好的用戶界面,操作流程應簡單易懂,降低用戶的學習成本。

(二)前期準備

開發智能文件管理助手,需要準備以下環境和工具。首先,確保安裝了 Java 開發環境,建議使用 Java 11 及以上版本,以獲得更好的性能和功能支持。Maven 是項目的構建工具,用于管理項目的依賴和構建過程,需下載并配置好 Maven 環境,以便能夠方便地引入項目所需的各種依賴庫。Spring Boot 作為開發框架,利用其強大的功能和便捷的開發方式,能夠快速搭建項目的基礎架構,提高開發效率。開發工具可以選擇 IntelliJ IDEA、Eclipse 等,它們提供了豐富的功能和插件,有助于代碼的編寫、調試和項目管理。還需要一個大語言模型,如 OpenAI 的 GPT-4 或其他支持 MCP 協議的模型,為智能文件管理助手提供智能交互和處理能力 。

(三)服務端開發

1. 引入依賴

在項目的 pom.xml 文件中,引入 Spring AI MCP 相關依賴。這些依賴是構建智能文件管理助手服務端的基礎,確保項目能夠使用 Spring AI MCP 提供的各種功能。以下是關鍵依賴代碼示例:

<dependencies>

<!-- Spring AI MCP 服務端核心依賴 -->

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-starter-mcp-server</artifactId>

</dependency>

<!-- 基于Spring MVC的SSE流式傳輸依賴,用于高效的數據傳輸 -->

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>

</dependency>

<!-- 文件操作相關依賴,用于實現文件搜索、整理等功能 -->

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

</dependency>

</dependencies>

通過引入這些依賴,項目可以順利使用 Spring AI MCP 的服務端功能,以及文件操作相關的工具類,為后續的開發工作奠定基礎。

2. 配置文件編寫

在 src/main/resources 目錄下的 application.properties 文件中,進行相關配置。首先,配置 AI 服務相關信息,如選擇使用的大語言模型以及對應的 API 密鑰。如果使用 OpenAI 的 GPT-4 模型,配置示例如下:

spring.ai.model.openai.api-key=your-openai-api-key

spring.ai.model.openai.model=gpt-4

然后,配置 MCP 服務端相關設置,指定 MCP 服務端的端口號,設置為 8081,配置如下:

spring.ai.mcp.server.port=8081

通過這些配置,項目能夠正確連接到指定的大語言模型,并啟動 MCP 服務端,為后續的功能實現提供支持。

3. 工具類編寫

以文件搜索工具為例,創建一個 FileSearchTool 類,用于實現文件搜索功能。該類利用commons-io庫提供的文件操作工具,遍歷指定目錄及其子目錄,根據文件名或文件內容關鍵詞進行搜索。以下是關鍵代碼示例:

import org.apache.commons.io.FileUtils;

import org.apache.commons.io.filefilter.IOFileFilter;

import org.apache.commons.io.filefilter.TrueFileFilter;

import org.springframework.stereotype.Component;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

@Component

public class FileSearchTool {

// 根據文件名搜索文件,支持模糊匹配

public List<File> searchFilesByName(String directoryPath, String fileName) {

File directory = new File(directoryPath);

if (!directory.exists() ||!directory.isDirectory()) {

throw new IllegalArgumentException("Invalid directory path: " + directoryPath);

}

// 使用通配符匹配文件名

IOFileFilter fileFilter = new org.apache.commons.io.filefilter.WildcardFileFilter("*" + fileName + "*");

// 遞歸遍歷目錄下的所有文件

Iterable<File> files = FileUtils.iterateFiles(directory, fileFilter, TrueFileFilter.INSTANCE);

List<File> result = new ArrayList<>();

for (File file : files) {

result.add(file);

}

return result;

}

// 根據文件內容關鍵詞搜索文件,支持多種文件類型

public List<File> searchFilesByContent(String directoryPath, String keyword) throws IOException {

File directory = new File(directoryPath);

if (!directory.exists() ||!directory.isDirectory()) {

throw new IllegalArgumentException("Invalid directory path: " + directoryPath);

}

List<File> result = new ArrayList<>();

// 遞歸遍歷目錄下的所有文件

Iterable<File> files = FileUtils.iterateFiles(directory, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);

for (File file : files) {

// 根據文件擴展名判斷文件類型,這里簡單處理文本文件

String fileExtension = org.apache.commons.io.FilenameUtils.getExtension(file.getName());

if ("txt".equalsIgnoreCase(fileExtension) || "md".equalsIgnoreCase(fileExtension)) {

String fileContent = FileUtils.readFileToString(file, "UTF-8");

if (fileContent.contains(keyword)) {

result.add(file);

}

}

}

return result;

}

}

在這段代碼中,searchFilesByName方法通過WildcardFileFilter實現文件名的模糊匹配,能夠搜索出包含指定文件名關鍵詞的所有文件。searchFilesByContent方法則針對常見的文本文件類型(如 txt、md),讀取文件內容并判斷是否包含指定關鍵詞,從而實現文件內容的搜索。

4. 工具注冊

在配置類中注冊文件搜索工具,使其能夠被 MCP 客戶端調用。創建一個 McpConfig 配置類,使用@Configuration注解標記為配置類,在類中定義一個@Bean方法,返回FileSearchTool的實例,代碼如下:

import org.springframework.ai.mcp.tool.Tool;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class McpConfig {

@Bean

@Tool(name = "fileSearchTool", description = "Tool for searching files")

public FileSearchTool fileSearchTool() {

return new FileSearchTool();

}

}

通過@Tool注解,為文件搜索工具定義了名稱和描述,方便 MCP 客戶端識別和調用。名稱fileSearchTool將作為工具的唯一標識,描述Tool for searching files則簡要說明了工具的功能,有助于大模型理解和正確使用該工具。

(四)客戶端開發

1. 依賴引入

在客戶端項目的 pom.xml 文件中,引入必要的依賴。這些依賴用于實現客戶端與 MCP 服務端的通信以及與大模型的交互功能。關鍵依賴代碼示例如下:

<dependencies>

<!-- Spring AI MCP 客戶端核心依賴 -->

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-starter-mcp-client</artifactId>

</dependency>

<!-- 基于WebFlux的SSE流式傳輸依賴,用于高效的實時數據交互 -->

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-starter-mcp-client-webflux</artifactId>

</dependency>

<!-- Spring Boot 啟動器依賴,用于快速搭建Spring Boot應用 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-webflux</artifactId>

</dependency>

</dependencies>

通過引入這些依賴,客戶端項目可以使用 Spring AI MCP 的客戶端功能,以及 Spring WebFlux 提供的響應式編程能力,實現高效的通信和交互。

2. 配置 MCP 服務端地址

在客戶端的 application.properties 文件中,配置 MCP 服務端的地址,指定服務端的地址為http://localhost:8081,配置如下:

spring.ai.mcp.client.server-url=http://localhost:8081

通過這個配置,客戶端能夠準確地連接到 MCP 服務端,建立起通信通道,以便進行后續的交互操作。

3. 與大模型交互代碼實現

創建一個 FileManagementController 類,作為客戶端與用戶交互的接口。在類中定義方法,通過 MCP 客戶端與大模型進行交互,實現文件管理功能。以下是關鍵代碼示例:

import org.springframework.ai.mcp.client.McpClient;

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;

import reactor.core.publisher.Mono;

@RestController

public class FileManagementController {

@Autowired

private McpClient mcpClient;

// 根據文件名搜索文件的接口

@GetMapping("/searchFilesByName")

public Mono<String> searchFilesByName(@RequestParam String directoryPath, @RequestParam String fileName) {

String prompt = "Search files named \"" + fileName + "\" in directory \"" + directoryPath + "\"";

return mcpClient.execute(prompt);

}

// 根據文件內容關鍵詞搜索文件的接口

@GetMapping("/searchFilesByContent")

public Mono<String> searchFilesByContent(@RequestParam String directoryPath, @RequestParam String keyword) {

String prompt = "Search files containing \"" + keyword + "\" in directory \"" + directoryPath + "\"";

return mcpClient.execute(prompt);

}

}

在這段代碼中,searchFilesByName方法和searchFilesByContent方法分別處理根據文件名和文件內容關鍵詞搜索文件的請求。通過構建包含搜索條件的提示信息prompt,調用mcpClient.execute(prompt)方法將請求發送給 MCP 服務端,進而與大模型進行交互,獲取搜索結果。

(五)測試與驗證

啟動服務端和客戶端項目,確保服務端的 MCP 服務正常運行,客戶端能夠成功連接到服務端。使用 Postman 或瀏覽器等工具進行測試,以搜索文件功能為例,在瀏覽器地址欄輸入
http://localhost:8080/searchFilesByName?directoryPath=/your-directory-path&fileName=example,其中/your-directory-path為實際的文件目錄路徑,example為要搜索的文件名關鍵詞。如果服務端和客戶端配置正確且文件搜索工具實現無誤,將會返回包含搜索結果的響應,顯示符合條件的文件列表。同樣,對于根據文件內容關鍵詞搜索文件的功能,在瀏覽器地址欄輸入http://localhost:8080/searchFilesByContent?directoryPath=/your-directory-path&keyword=important,其中important為文件內容關鍵詞。測試結果表明,智能文件管理助手能夠準確地根據用戶輸入的條件進行文件搜索,驗證了系統的功能正確性和穩定性。通過不斷完善和優化,這款智能文件管理助手可以滿足更多復雜的文件管理需求,為用戶提供高效、便捷的文件管理服務 。

四、Spring AI MCP 的應用前景與挑戰

(一)廣泛的應用場景

Spring AI MCP 憑借其獨特的優勢,在眾多領域展現出了廣闊的應用前景。在智能辦公領域,它可以與各種辦公軟件和工具集成,實現文檔的智能生成、編輯和分析。當用戶需要撰寫一份項目報告時,借助 MCP,大模型能夠調用企業內部的知識庫、項目文檔等數據源,快速生成報告大綱和內容,還能根據用戶的反饋進行實時修改和完善。MCP 還可以與郵件系統集成,實現郵件的自動分類、回復和提醒,大大提高辦公效率。

在智能客服領域,Spring AI MCP 同樣發揮著重要作用。它可以讓大模型與客服系統無縫對接,實時獲取客戶的問題和相關信息,并調用知識圖譜、歷史案例庫等工具進行準確回答。當客戶咨詢產品信息時,大模型通過 MCP 連接到產品數據庫,獲取最新的產品參數、價格、使用方法等信息,為客戶提供專業、及時的服務。對于復雜問題,還能調用工單系統、專家知識庫等工具,實現問題的快速解決和流轉。

在智能數據分析領域,Spring AI MCP 的應用也十分顯著。數據分析師可以使用自然語言通過 MCP 與數據分析工具和數據庫進行交互,快速完成數據查詢、統計分析和可視化等任務。分析師只需提出 “分析過去一年各地區的銷售數據,找出銷售額增長最快的地區” 這樣的問題,MCP 就能協調大模型連接到數據庫,執行相應的查詢和分析操作,并將結果以直觀的圖表形式展示出來,大大降低了數據分析的門檻和工作量。

(二)面臨的挑戰與問題

盡管 Spring AI MCP 具有巨大的潛力,但在發展過程中也面臨著一些挑戰和問題。MCP 作為一個相對較新的技術,其開源生態還不夠完善。雖然已經有一些工具和服務開始支持 MCP 協議,但與成熟的開源框架相比,其生態系統的豐富度和活躍度還有待提高。這可能導致開發者在使用 MCP 時,難以找到合適的工具和資源,或者在遇到問題時難以獲得有效的支持和解決方案。

不同的服務器在性能、穩定性和兼容性方面存在差異。一些低質量的服務器可能無法滿足大模型對計算資源和網絡帶寬的高要求,導致響應速度慢、連接不穩定等問題。不同服務器對 MCP 協議的實現和支持程度也可能不同,這可能會給開發者在選擇和使用服務器時帶來困擾,增加開發和維護的難度。

隨著數據安全和隱私保護意識的不斷提高,如何確保 MCP 在數據傳輸和處理過程中的安全性和隱私性成為一個重要問題。雖然 MCP 采用了一些安全機制,如權限控制、加密傳輸等,但在實際應用中,仍然可能存在安全漏洞和風險。黑客可能會攻擊 MCP 服務器,竊取敏感數據;或者通過惡意調用 MCP 工具,獲取未經授權的信息。因此,需要不斷加強 MCP 的安全防護措施,提高其安全性和可靠性。

(三)未來發展趨勢展望

展望未來,Spring AI MCP 有望在多個方面取得進一步的發展。隨著越來越多的開發者和企業關注和使用 MCP,其開源生態系統將不斷完善。會有更多的工具和服務支持 MCP 協議,形成一個更加豐富和活躍的生態社區。這將為開發者提供更多的選擇和便利,促進 MCP 的廣泛應用和發展。例如,更多的數據庫管理工具、數據分析工具、文件處理工具等將與 MCP 深度集成,開發者可以更輕松地將這些工具與大模型結合使用,實現更強大的功能。

MCP 將與更多的應用場景和行業進行深度融合。除了前面提到的智能辦公、智能客服和智能數據分析等領域,MCP 還將在智能制造、智能醫療、智能金融等領域發揮重要作用。在智能制造中,MCP 可以幫助大模型與生產設備、供應鏈系統等進行交互,實現生產過程的智能化管理和優化;在智能醫療中,MCP 可以連接醫療數據、醫學知識庫和診斷工具,輔助醫生進行疾病診斷和治療方案制定;在智能金融中,MCP 可以協助大模型進行風險評估、投資決策等,提高金融服務的效率和質量。

隨著技術的不斷進步,MCP 自身的性能和功能也將不斷提升。在性能方面,MCP 將通過優化算法、改進架構等方式,提高響應速度和處理能力,以滿足日益增長的業務需求。在功能方面,MCP 將支持更多的交互方式和數據格式,實現更靈活、高效的交互。未來的 MCP 可能會支持語音交互、手勢交互等多種交互方式,讓用戶能夠更自然地與大模型進行溝通;還可能支持更多的數據格式,如圖像、音頻、視頻等,拓展大模型的應用范圍和能力。

五、總結與展望

Spring AI MCP 作為連接大模型與外部世界的創新技術,以其統一接口、打破數據孤島、提升模型能力和保障安全隱私等顯著優勢,為 AI 應用開發帶來了新的活力和可能性。通過實戰案例我們看到,利用 Spring AI MCP 打造智能文件管理助手,能夠有效提升文件管理的效率和智能化水平,解決實際工作中的痛點問題。

盡管目前 Spring AI MCP 在開源生態、服務器性能和安全性等方面面臨一些挑戰,但隨著技術的不斷發展和完善,其應用前景依然十分廣闊。未來,Spring AI MCP 有望在更多領域得到深入應用,與各行業的業務場景深度融合,推動智能化變革。相信在開發者和企業的共同努力下,Spring AI MCP 將不斷發展壯大,為 AI 技術的普及和應用貢獻更大的力量。如果你對 AI 應用開發感興趣,不妨嘗試使用 Spring AI MCP,開啟你的智能應用開發之旅 。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91788.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ThinkPHP5x,struts2等框架靶場復現

ThinkphpThinkphp5x遠程命令執行及getshell首先我們先找一個環境&#xff0c;或者自己搭建一個環境fofa&#xff1a;body"ThinkPHP V5"搭建&#xff1a;vulhub/thinkphp/5-rcedocker-compose up -d然后去訪問我們的環境遠程命令執行/?sindex/think\app/invokefuncti…

Hyperliquid:揭秘高性能區塊鏈共識引擎HyperBFT

大家好&#xff0c;今天我們一起探討Hyperliquid這個高性能區塊鏈項目以及它背后的共識引擎。Hyperliquid能在擁擠的去中心化交易賽道&#xff08;DEX&#xff09;中脫穎而出&#xff0c;很大程度上要歸功于其高效的共識機制——HyperBFT。 為了徹底搞懂HyperBFT&#xff0c;我…

大模型開發框架LangChain之構建知識庫

1.前言 為了避免 llm正確的廢話和幻覺&#xff0c;知識庫可以說是現在開發 agent的必備了。同時&#xff0c;作為 rag中的 r&#xff0c;知識庫召回的成功率會極大的影響 llm的最終回復效果。一般&#xff0c;會把知識庫召回的內容作為背景知識給到 llm&#xff0c;并在 prompt…

NPM打包時,報reason: getaddrinfo ENOTFOUND registry.nlark.com

先說解決方法&#xff1a;將 package-lock.json 文件中的 registry.nlark.com 改為 registry.npmmirror.com現象&#xff1a;npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.nlark.com/url-too…

python內置庫os與sys的區別是什么?分別能實現什么功能?

Python 的 os 和 sys 是兩個功能截然不同但都非常重要的內置庫&#xff0c;它們分別服務于不同的交互場景&#xff1a;前者專注于與操作系統交互&#xff0c;后者專注于與 Python 解釋器本身交互。以下是詳細解析&#xff1a; 一、os 庫&#xff1a;操作系統交互接口 os 庫&…

【云計算】云主機的親和性策略(一):快樂旅行團

《云主機的親和性策略》系列&#xff0c;共包含以下文章&#xff1a; 1?? 云主機的親和性策略&#xff08;一&#xff09;&#xff1a;快樂旅行團2?? 云主機的親和性策略&#xff08;二&#xff09;&#xff1a;集群節點組3?? 云主機的親和性策略&#xff08;三&#xf…

USRP捕獲手機/路由器數據傳輸信號波形(下)

目錄&#xff1a; USRP捕獲手機/路由器數據傳輸信號波形&#xff08;上&#xff09; USRP捕獲手機/路由器數據傳輸信號波形&#xff08;中&#xff09; USRP捕獲手機/路由器數據傳輸信號波形&#xff08;下&#xff09; 四、路由器MIMO-OFDM系統 本文深入分析采集手機與路由…

位運算在權限授權中的應用及Vue3實踐

在現代前端應用中&#xff0c;權限管理是一個至關重要的功能模塊。隨著應用復雜度的提示功能&#xff0c;權限細粒度越來越精細&#xff0c;如何高效地管理和判斷權限成為前端開發的一大挑戰。位運算作為一種高效的運算方式&#xff0c;在權限管理領域有著獨特的優勢。本文將詳…

面試實戰,問題二十二,Java JDK 17 有哪些新特性,怎么回答

Java JDK 17 新特性面試回答指南 作為一名Java開發者&#xff0c;了解JDK 17的新特性是面試中的關鍵點。JDK 17&#xff08;Java SE 17&#xff09;于2021年9月發布&#xff0c;是一個長期支持&#xff08;LTS&#xff09;版本&#xff0c;引入了多項改進以提升開發效率、安全性…

【MySQL安全】什么是SQL注入,怎么避免這種攻擊:前端防護、后端orm框架、數據庫白名單

基本概念SQL注入是OWASP Top 10安全風險之一&#xff0c;它利用了應用程序對用戶輸入數據的不當處理。當應用程序直接將用戶輸入拼接到SQL查詢中而沒有進行適當的過濾或轉義時&#xff0c;就可能發生SQL注入攻擊。攻擊原理假設有一個登錄表單的SQL查詢&#xff1a;SELECT * FRO…

pyqt5顯示任務欄菜單并隱藏主窗口,環境pyqt5+vscode

環境 pyqt5vscode 環境搭建見 https://blog.csdn.net/huiaifen/article/details/125175261 新建一個QMainWindow 1 在VSCode的資源管理器中&#xff0c;右鍵選擇 PYQT:New Form&#xff0c;打開Qt Designer2 在打開的窗口中選 “Main Window”&#xff0c;然后選“創建”3 直接…

SpringBoot項目數據脫敏(自定義注解)

文章目錄前言一.配置1.脫敏類型枚舉&#xff1a;DesensitizeType2.注解&#xff1a;Desensitize3.序列化類&#xff1a;DesensitizeJsonSerializer4.工具類&#xff1a;DesensitizeUtil二、測試&#xff1a;DesensitizeTest三、效果展示總結前言 在互聯網應用中&#xff0c;用戶…

PSO-TCN-BiLSTM-MATT粒子群優化算法優化時間卷積神經網絡-雙向長短期記憶神經網絡融合多頭注意力機制多特征分類預測/故障診斷Matlab實現

基本介紹 1.Matlab實現PSO-TCN-BiLSTM-MATT粒子群算法優化時間卷積神經網絡-雙向長短期記憶神經網絡融合多頭注意力機制多特征分類預測&#xff0c;PSO-TCN-BiLSTM-Multihead-Attention&#xff1b; 多頭自注意力層 (Multihead-Self-Attention)&#xff1a;Multihead-Self-Atte…

第一篇:Linux 運維入門:虛擬機部署與基礎環境配置

目錄 一、準備工作與環境規劃 二、虛擬機網絡配置 1、虛擬網絡編輯器設置 2、系統網絡配置 3、主機名配置 三、Hosts 文件與 SSH 免密配置 配置 hosts 文件編輯/etc/hosts文件實現主機名解析&#xff1a; 分發 hosts 文件到其他節點 SSH 免密登錄配置在 zhangsan101 上…

(一)全棧(react配置/https支持/useState多組件傳遞/表單提交/React Query/axois封裝/Router)

文章目錄 項目地址 一、基礎配置 1.1 支持https 1. 安裝所需要的包 2. 配置 1.2 常用 1. 字符串拼接 二、組件 2.1 useState組件傳遞 1. App里初始化useState 2. useState和方法的傳遞 3. 接收傳遞來的狀態和方法 2.2 表單提交 1. 表單組件處理用戶輸入數據 2. App傳來的submit…

【abc417】E - A Path in A Dictionary

Problem StatementYou are given a simple connected undirected graph G with N vertices and M edges. The vertices of G are numbered vertex 1, vertex 2, …, vertex N, and the i-th (1≤i≤M) edge connects vertices Ui? and Vi?.Find the lexicographically smalle…

linux火焰圖

火焰圖簡介火焰圖是一種性能分析的可視化工具&#xff0c;它將CPU的調用棧&#xff08;Call Stack&#xff09;信息以矩形火焰的形式展現出來。Y軸&#xff1a;代表調用棧的深度&#xff08;函數A調用了函數B&#xff0c;B就疊在A上面&#xff09;。X軸&#xff1a;代表CPU的抽…

解剖 .NET 經典:從 Component 到 BackgroundWorker

1?? 背景與定位在 .NET Framework 2.0 時代&#xff0c;微軟引入了 BackgroundWorker 來解決 WinForm/WPF 場景下“耗時操作阻塞 UI 線程”的問題&#xff1b;而 Component 早在 1.0 就已存在&#xff0c;是所有可視化/非可視化設計器的“基類”。理解這兩者的源碼與機制&…

桌面端界面設計 |貨物 TMS 系統 - SaaS UI UX 設計:審美積累之境

在物流數字化的浪潮中&#xff0c;貨物 TMS 系統的 SaaS 化與 UI/UX 設計正構建著獨特的審美坐標系。這不僅是技術與功能的融合&#xff0c;更是一場關于效率美學的深度探索&#xff0c;為行業審美積累注入了鮮活的實踐樣本。SaaS 模式賦予貨物 TMS 系統輕盈而強大的特質&#…

多架構鏡像整合全攻略:在Docker中實現單一鏡像支持同時支持amd64和arm64架構

多架構支持的挑戰 &#xff1a;隨著異構計算&#xff08;如 ARM、x86、RISC-V 等&#xff09;的普及&#xff0c;開發者需要為不同硬件平臺提供對應的鏡像&#xff0c;傳統方式需維護多個版本&#xff08;如 image:v1-amd64 和 image:v1-arm64 &#xff09;&#xff0c;導致版本…