告別 API 接口:用 MCP 協(xié)議讓 AI 直接" 對話" 你的 Spring 應(yīng)用
曾經(jīng)想過如何讓強大的 AI 模型(如 Claude 或 Cursor)安全地與應(yīng)用程序直接對話嗎?SpringBoot MCP 服務(wù)就是答案。它充當(dāng)一座橋梁,允許將應(yīng)用程序的功能作為一套 AI 可以調(diào)用的工具暴露出來,這一切都通過模型上下文協(xié)議(MCP)的魔力實現(xiàn)。
在本指南中,我們將構(gòu)建一個輕量級的 Spring Boot 應(yīng)用程序,允許 AI 直接調(diào)用應(yīng)用程序的業(yè)務(wù)邏輯來查詢 CRM 系統(tǒng)中的用戶信息。讓我們一起釋放 AI 驅(qū)動應(yīng)用程序的潛力吧!
什么是 Spring AI MCP ?
Spring AI MCP 框架旨在將數(shù)據(jù)和服務(wù)作為標(biāo)準(zhǔn)化工具暴露給 AI 模型。與傳統(tǒng)的 Web API 不同,它通過 STDIO(標(biāo)準(zhǔn)輸入/ 輸出)進行通信,使其成為本地 AI 客戶端與代碼交互的安全高效方式。
對于我們的項目,我們將創(chuàng)建一個具有兩個主要功能的服務(wù)器:
? 獲取所有用戶:獲取完整的 CRM 用戶列表。
? 按姓名搜索用戶:按姓名查找特定用戶。
這是構(gòu)建自定義 MCP 服務(wù)并將您獨特的數(shù)據(jù)源與下一代 AI 集成的完美起點。
圖片
步驟 1:創(chuàng)建的 Spring Boot 項目
訪問 start.spring.io 以使用以下設(shè)置引導(dǎo)項目:
? Spring AI MCP Server - 用于 STDIO 傳輸
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server</artifactId>
</dependency>? Spring AI MCP Server WebMVC - 用于 SSE 傳輸(Spring MVC)
點擊 Generate,下載 zip 文件,并在 IntelliJ IDEA 中打開它。
第二部分:構(gòu)建您的 MCP 服務(wù)
現(xiàn)在是有趣的部分——讓我們來構(gòu)建服務(wù)器本身。
步驟 2:了解項目結(jié)構(gòu)
項目將有幾個關(guān)鍵文件:
? Customer.java:我們客戶記錄的數(shù)據(jù)模型。
? CustomerService.java:我們將定義 AI 工具的服務(wù)類。
? TestMcpServerApplication.java:主應(yīng)用程序入口點。
? application.properties:用于服務(wù)器配置。
首先,配置 application.properties 以作為使用 STDIO 傳輸?shù)姆?Web 應(yīng)用程序運行:
spring:
application:
name: crm-mcp-server
ai:
mcp:
server:
name: ${spring.application.name}
version: 1.0.0步驟 3:定義數(shù)據(jù)模型
創(chuàng)建一個簡單的 Customer.java 記錄。這個不可變類非常適合保存客戶數(shù)據(jù)。
package com.example.testmcpserver;
public record Customer(String id, String name, String email, String phone, String company) {}步驟 4:實現(xiàn) MCP 工具
在 CustomerService.java 中,我們將定義 AI 可以調(diào)用的方法。@Tool 注解將這些方法暴露給 MCP 框架。
@Service
publicclassCustomerService {
privatestaticfinalLoggerlog= LoggerFactory.getLogger(CustomerService.class);
private List<Customer> customers = newArrayList<>();
@Tool(name = "get_customers", description = "Get a list of customers from the CRM system")
public List<Customer> getCustomers() {
return customers;
}
@Tool(name = "get_customer_by_name", description = "Get a single customer from the CRM system by name")
public Customer getCustomerByName(String name) {
return customers.stream()
.filter(customer -> customer.name().equals(name))
.findFirst()
.orElse(null);
}
@PostConstruct
publicvoidinit() {
customers.addAll(List.of(
newCustomer("1", "張三", "zhangsan@example.com", "13800138001", "阿里巴巴"),
newCustomer("2", "李四", "lisi@example.com", "13800138002", "騰訊科技"),
newCustomer("3", "王五", "wangwu@example.com", "13800138003", "字節(jié)跳動"),
newCustomer("4", "趙六", "zhaoliu@example.com", "13800138004", "華為技術(shù)"),
newCustomer("5", "錢七", "qianqi@example.com", "13800138005", "百度在線")
));
}
}步驟 5:注冊工具
最后,在 TestMcpServerApplication.java 中將 CustomerService 注冊到 MCP 框架。
@SpringBootApplication
publicclassTestMcpServerApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(TestMcpServerApplication.class, args);
}
@Bean
public List<ToolCallback> crmTools(CustomerService customerService) {
return List.of(ToolCallbacks.from(customerService));
}
}ToolCallbacks.from() 方法會自動查找并注冊服務(wù)中所有帶有 @Tool 注解的方法。
第三部分:啟動 MCP 客戶端并連接 CRM AI
服務(wù)器構(gòu)建完成后,是時候運行它并連接 AI 了。
服務(wù)器現(xiàn)在正在運行并通過 STDIO 監(jiān)聽命令。
方式一:使用 Cursor IDE 來鏈接 CRM AI
首先,構(gòu)建可執(zhí)行的 JAR:
mvn clean package在 target/ 目錄中找到 JAR 文件。
配置 Cursor
qeoipU
1. 在 Cursor 中打開命令面板(Cmd/Ctrl + Shift + P)。
2. 搜索并選擇 "MCP: Configure Server"。
3. 添加新的 MCP 服務(wù)器配置:
{
"name": "crm-demo-mcp",
"command": "java",
"args": ["-jar", "path/to/crm-mcp-server-0.0.1-SNAPSHOT.jar"]
}測試 CRM AI
打開 Cursor 或 Claude Desktop 并發(fā)出命令:
使用 MCP 服務(wù)器,獲取所有 CRM 客戶信息。
jecxSC
現(xiàn)在,嘗試一個更具體的查詢:
使用 MCP 服務(wù)器,查找姓名為" 張三" 的客戶信息。
CbmqlN
成功!AI 現(xiàn)在正在直接與 Spring Boot 應(yīng)用程序通信。
方式二:使用 SSE 來鏈接 CRM AI
除了傳統(tǒng)的 STDIO 傳輸方式,Spring AI MCP 還提供了基于 HTTP 的 SSE(Server-Sent Events)傳輸支持。這種方式讓您可以構(gòu)建更加靈活的 Web 可訪問 MCP 服務(wù)器,為用戶帶來更便捷的部署和使用體驗。
使用 SSE 傳輸?shù)淖畲髢?yōu)勢在于客戶端用戶無需在本地安裝和配置 MCP 服務(wù)器(如上文提到的 crm-mcp-server jar 文件),而是可以直接通過網(wǎng)絡(luò)連接到遠(yuǎn)程的 MCP 服務(wù)。
WebMVC SSE 配置
對于 Spring Web MVC 應(yīng)用,使用以下依賴:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>然后運行當(dāng)前 SpringBoot ,會自動發(fā)布一個 /sse 的 MCP 端點。
Cursor 客戶端配置
{
"mcpServers": {
"crm-demo-mcp": {
"url": "http://localhost:8080/sse"
}
}
}結(jié)論
現(xiàn)在已成功構(gòu)建了一個 SpringBoot MCP 服務(wù),允許 AI 安全高效地訪問應(yīng)用程序數(shù)據(jù)。這種強大的范例為創(chuàng)建更智能、更集成的 AI 驅(qū)動應(yīng)用程序開辟了一個充滿可能性的世界。通過利用 Spring Boot 的簡單性和 Spring AI 的強大功能,可以構(gòu)建復(fù)雜的 AI 工具。





































