
- 引入依赖 :Spring 项目添加 MCP 客户端依赖(如
spring-ai-mcp-client-spring-boot-starter
)。
xml
<!-- Spring AI MCP 客户端 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
- 配置 Server 信息 :在
application.yml
和mcp-servers-config.json
中定义 Server 的启动命令、参数和环境变量。可选stdio/SSE两种模
yaml
spring:
ai:
mcp:
client:
# 1. STDIO本地配置:用于和一个本地MCP服务进程交互
stdio:
# 指定MCP服务器配置文件路径(推荐)
servers-configuration: classpath:/mcp-servers-config.json
# 2. SSE用于和远程的MCP服务器交互
sse:
connections:
# 需要配置远程服务器地址
server1:
# 在本机的另一个8127端口启动MCP Server代码模拟远程MCP服务
url: http://localhost:8127
json
{
"mcpServers": {
"amap-maps": {
"command": "npx.cmd",
"args": [
"-y",
"@amap/amap-maps-mcp-server"
],
"env": {
"AMAP_MAPS_API_KEY": "用户在高德开放平台申请的api-key"
}
}
}
}
- 启动时拉取并启动 Server :Spring 通过
npx
调用本地或远程的 MCP Server 包,npx
会自动下载并启动服务端进程。 - 客户端与 Server 交互 :通过
stdio
或SSE
建立连接,客户端请求工具列表并调用工具。比如McpSyncClient源码中有listTools()方法可以从Mcp Server中获取注册的工具列表
java
/**
* Retrieves the list of all tools provided by the server.
* @return The list of tools result containing: - tools: List of available tools, each
* with a name, description, and input schema
*/
public McpSchema.ListToolsResult listTools() {
return this.delegate.listTools().block();
}
- 工具注入与调用 :MCP的本质就是工具调用 , 通过
ToolCallbackProvider
将 Server 的工具注册为 Spring Bean。在代码中向AI发送请求时候在chatClient
绑定tools参数传入toolCallbackProvider实例即可使用。
java
@Resource
private ToolCallbackProvider toolCallbackProvider;
public String doChatWithMcp(String message, String chatId) {
ChatResponse response = chatClient.prompt().user(message).
// 使用方式和工具调用几乎一致,只需要修改tools传入参数即可
.tools(toolCallbackProvider).call().chatResponse();
String content = response.getResult().getOutput().getText();
return content;
}