Spring AI 实现 MCP 服务(SSE模式)
本文介绍了如何使用Spring AI实现MCP服务的开发。主要内容包括:1)添加MCP服务端和webmvc依赖;2)定义图片搜索MCP工具接口,实现Pexels API调用;3)配置ToolCallbackProvider注册工具;4)在Cherry Studio中测试两种传输类型(STDIO和SSE),并提供相应的yml配置示例。最后展示了搜索图片的测试结果,验证了MCP服务的可用性。
·
Spring AI 实现 MCP 服务
添加依赖
引入MCP服务端依赖,如果引入的服务端依赖为:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server</artifactId>
<version>1.0.3</version>
</dependency>
则只支持STDIO(标准传输)而不支持SSE(服务器发送事件)服务器传输。
因此引入以下依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
<version>1.0.3</version>
</dependency>
支持SSE(服务器发送事件)服务器传输和可选的STDIO传输(通过设置spring.ai.mcp.server.stdio=true启用)
创建 Spring Boot 项目并添加 Spring AI 依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-core</artifactId>
<version>1.0.3</version>
</dependency>
定义 MCP 服务接口
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wx
* @createTime 2025/11/10 11:54
*/
@Service
public class ImageSearchTool {
/**
*
* pexels网站搜索图片的key
*/
private static final String API_KEY = "your api key";
// Pexels 常规搜索接口(以文档为准)
private static final String API_URL = "https://api.pexels.com/v1/search";
@Tool(description = "search image by web")
public String searchImage(@ToolParam(description = "Search query keyword") String query) {
try {
// 调用第三方图片搜索API
return String.join(",", searchImageByPexels(query));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private List<String> searchImageByPexels(String query) throws JsonProcessingException {
Map<String, String> headers = Map.of("Authorization", API_KEY);
Map<String, Object> params = Map.of("query", query);
String response = HttpUtil.createGet(API_URL)
.addHeaders(headers)
.form(params)
.execute()
.body();
return JSONUtil.parseObj(response)
.getJSONArray("photos")
.stream()
.map(photoObj -> (JSONObject) photoObj)
.map(photoObj -> photoObj.getJSONObject("src"))
.map(photo -> photo.getStr("medium"))
.filter(StringUtils::isNotEmpty)
.collect(Collectors.toList());
}
自动配置将自动将工具回调注册为MCP工具。可以让多个spring beans生成ToolCallbacks,自动配置将合并它们。
@Bean
public ToolCallbackProvider searchImageTools(ImageSearchTool imageSearchTool) {
return MethodToolCallbackProvider.builder().toolObjects(imageSearchTool).build();
}
Cherry Studio 调用测试

配置为SSE类型
对应服务端配置
spring:
ai:
mcp:
server:
stdio: false
name: image-search-mcp-server
version: 1.0.0
type: SYNC
instructions: 'search images from pexels'
request-timeout: 30
capabilities:
tool: true
sse-endpoint: /sse
sse-message-endpoint: /mcp/message

结果

更多推荐
所有评论(0)