MCP Server 服务端
# 1. 如何配置?
① 在项目的 application.yaml 中,配置 spring.ai.mcp.server 配置项,开启 MCP Server ,如下所示:
spring:
ai:
mcp:
server:
enabled: true
name: yudao-mcp-server
version: 1.0.0
instructions: 一个 MCP 示例服务
sse-endpoint: /sse
友情提示:
具体每个配置项的作用,可见 《Spring AI 官方文档 —— MCP Server Boot Starter》 (opens new window) 文档。
② 编写 MCP Server 的工具,支持方法工具和 Function 工具两种方式。
方法工具:使用 @Tool 注解声明工具方法,例如说:cn.iocoder.yudao.module.ai.tool.method 包下的 Person、PersonService、PersonServiceImpl 类。
Function 工具:实现 Function 或 BiFunction 接口,例如说:cn.iocoder.yudao.module.ai.tool.function 包下的 WeatherQueryToolFunction 类。
③ 在 AiAutoConfiguration 中,显式注册 ToolCallback。MCP Server 会自动将这些回调转换为 MCP 工具。
方法工具:保留 #toolCallbacks(...) 方法,通过 ToolCallbacks.from(...) 注册 PersonService 的工具。
Function 工具:通过 FunctionToolCallback 注册,例如说:
import cn.iocoder.yudao.module.ai.tool.function.WeatherQueryToolFunction;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.function.FunctionToolCallback;
import org.springframework.context.annotation.Bean;
@Bean
public ToolCallback weatherQueryToolCallback(WeatherQueryToolFunction function) {
return FunctionToolCallback.builder("weather_query", function)
.description("查询指定城市的天气信息")
.inputType(WeatherQueryToolFunction.Request.class).build();
}
其中,weather_query 是对外的工具名称,inputType 是工具的请求类型。同一个工具注册一次即可。
友情提示:
- 显式注册
ToolCallback,可以供本地 AI 工具调用和 MCP Server 共用,也能避免 SDK 回调线程按 Bean 名字解析 Function 类型时的类加载器问题。Spring AI 2.x 的 Function 工具也需要显式注册。 BiFunction<Request, ToolContext, Response>同样可以使用FunctionToolCallback.builder(...)注册。但 MCP 请求不会自动携带AiUtils.buildCommonToolContext()中的登录用户、租户信息,需要在服务端根据请求的认证信息构建对应上下文。
接着启动后端项目,可以看到 INFO o.s.a.m.s.autoconfigure.McpServerAutoConfiguration 日志,表示 MCP Server 启动成功。
# 2. 如何测试?
① 找一个支持 MCP Server 的工具,例如说 Cursor 或者 Claude 等。这里使用 Cursor,例如说:
{
"mcpServers": {
"yudao-mcp-server": {
"url": "http://127.0.0.1:8089/sse"
}
}
}
② 在 Cursor 输入 “查下 1 这个 person” 消息,触发 MCP Server 的调用。如下图所示:

更多 MCP Server 案例,可见球友共创的 https://t.zsxq.com/Nb6b7 (opens new window) 案例。