基于SpringBoot开发一个MCP Server
最近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协议,并指定端点路径为/sseenabled: true # 组件启用
- 使用@Tool注解标记具体的tool
该注解目前只支持方法维度。
@Service
public class EmployeeServiceImpl implements EmployeeService{@Autowiredprivate 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 {@Beanpublic 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两种语言。