基于SpringBoot开发一个MCP Server

发布于:2025-05-29 ⋅ 阅读:(21) ⋅ 点赞:(0)

最近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大致可分为几下几步。

  1. 首先安装JDK和IDEA,JDK的版本必须在17及以上。
  2. 导入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协议
  1. .yml文件中配置MCP Server相关属性。
spring:
  ai:
    mcp:
      server:
        stdio: false # 禁用stdio协议
        name: mcp-server # mcp-server名称
        sse-endpoint: sse # 启动sse协议,并指定端点路径为/sse
        enabled: true # 组件启用
  1. 使用@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;
    }
}
  1. 注册Tool对象
@Configuration
public class McpConfig {

    @Bean
    public ToolCallbackProvider toolCallbackProvider(TurEmployeeService turEmployeeService) {
        // 创建一个ToolCallbackProvider实例
        return MethodToolCallbackProvider.builder()
                .toolObjects(EmployeeService) // 这里可以添加多个工具对象
                .build();
    }
}
  1. 启动springboot,检查tool是否已注册到mcp server中
    在这里插入图片描述
  2. 使用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两种语言。


网站公告

今日签到

点亮在社区的每一天
去签到