
- 引入依赖:Spring 项目添加 MCP 客户端依赖(如
spring-ai-mcp-client-spring-boot-starter)。
<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两种模式
spring:
ai:
mcp:
client:
stdio:
servers-configuration: classpath:/mcp-servers-config.json
sse:
connections:
server1:
url: http://localhost:8127
{
"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中获取注册的工具列表
public McpSchema.ListToolsResult listTools() {
return this.delegate.listTools().block();
}
- 工具注入与调用:MCP的本质就是工具调用, 通过
ToolCallbackProvider 将 Server 的工具注册为 Spring Bean。在代码中向AI发送请求时候在chatClient绑定tools参数传入toolCallbackProvider实例即可使用。
@Resource
private ToolCallbackProvider toolCallbackProvider;
public String doChatWithMcp(String message, String chatId) {
ChatResponse response = chatClient.prompt().user(message).
.tools(toolCallbackProvider).call().chatResponse();
String content = response.getResult().getOutput().getText();
return content;
}