最近MCP特别火,互联网上也出现了很多基于MCP开发出来的MCP Server。
本文将以SpringBoot项目为例,分享如何基于SpringBoot项目开发一个MCP Server,帮助大家提高日常开发效率。
一、 MCP是什么?
MCP(Model Coordination Protocol)是一种协议,用来支持大模型调用外部的工具和服务,最初由 Anthropic 公司倡导和开发,你可能没听过这家公司,但是Claude模型你一定用过,它就是出自Anthropic之手。
MCP支持两种传输方式:
stdio (标准输入输出)
适用于本地进程间通信。sse(Server-Sent Events)
使用http作为传输层
适用于远程通信和 Web 环境
二、mcp server是什么?
除大模型本身的能力之外的其他工具和服务统称为mcp server。
可处理来自AI 客户端,如Claude, Cursor的请求和响应。
三、如何基于SpringBoot开发一个MCP Server?
基于SpringBoot开发一个MCP Server大致可分为几下几步。
- 首先安装JDK和IDEA,JDK的版本必须在17及以上。
- 导入maven依赖
注意,spring-ai提供了三个包,用来实现MCP Server。
每个包支持的协议不一样。
我们需要的是webmvc。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
<version>1.0.0</version>
</dependency>
- spring-ai-starter-mcp-server
支持stdio协议。 - spring-ai-starter-mcp-server-webmvc/
支持sse协议 - spring-ai-starter-mcp-server-webflux
支持sse协议
- .yml文件中配置MCP Server相关属性。
spring:
ai:
mcp:
server:
stdio: false # 禁用stdio协议
name: mcp-server # mcp-server名称
sse-endpoint: sse # 启动sse协议,并指定端点路径为/sse
enabled: true # 组件启用
- 使用@Tool注解标记具体的tool
该注解目前只支持方法维度。
@Service
public class EmployeeServiceImpl implements EmployeeService{
@Autowired
private EmployeeMapper employeeMapper;
@Override
@Tool(name = "getEmployeeInfo", description = "获取员工信息")
public Employee getEmployeeInfo(String employeeId) {
return employeeMapper.selectById(employeeId);
}
@Override
@Tool(name = "getEmployeeList", description = "获取员工列表")
public List<Employee> getEmployeeList() {
return employeeMapper.selectList(null);
}
@Override
@Tool(name = "addEmployee", description = "添加新员工")
public boolean addEmployee(TurEmployee employee) {
return employeeMapper.insert(employee) > 0;
}
@Override
@Tool(name = "updateEmployee", description = "更新员工信息")
public boolean updateEmployee(TurEmployee employee) {
return employeeMapper.updateById(employee) > 0;
}
}
- 注册Tool对象
@Configuration
public class McpConfig {
@Bean
public ToolCallbackProvider toolCallbackProvider(TurEmployeeService turEmployeeService) {
// 创建一个ToolCallbackProvider实例
return MethodToolCallbackProvider.builder()
.toolObjects(EmployeeService) // 这里可以添加多个工具对象
.build();
}
}
- 启动springboot,检查tool是否已注册到mcp server中
- 使用MCP Client调用MCP Server
本文使用的cursor。
需要配置下刚写好的MCP Server。
{
"mcpServers": {
"mcp-server": {
"url": "http://127.0.0.1:18888/sse",
"type": "sse" // 协议类型
}
}
}
然后刷新下,即可看到已经注册到MCP Server 的4个tools。
9. 测试
如果觉得文章对您有帮助,欢迎点赞、关注并收藏。
后续会出系列文章来玩转mcp server,支持Java和Python两种语言。