java springboot实现MCP Server SSE

06-01 1097阅读

参考:

https://juejin.cn/post/7491881721278529570

SpringAI 实现 SSE MCP Server项目 - Auler - 博客园

springboot-MCPserver-JUnit: 使用springboot支持mcp项目搭建,同时有着便捷的单元测试来进行敏捷开发对话即服务:Spring Boot+MCP让你的CRUD系统秒变AI助手 - 雨梦山人 - 博客园

java的jdk使用17,可参考:Java 17 Windows 安装教程--保姆级安装_java17-CSDN博客

java的mcp-server依赖使用1.0.0-M8,可参考:

MCP Server Boot Starter :: Spring AI Reference

Spring AI版本1.0.0-M6和M8效果比较-CSDN博客

本文使用了两种mcp client:cherry studio和cursor

源代码参考:我的/springboot-mcpserver-demo

代码片段

pom.xml


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        3.4.3
         
    
    top.dreamcenter
    mcp
    1.0.0-SNAPSHOT
    mcp
    Template project for SpringBoot + MCP
    
        17
    
    
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter-web
            
        
        
            org.springframework.ai
            spring-ai-starter-mcp-server-webmvc
            1.0.0-M8
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    top.dreamcenter.mcp.McpApplication
                
                
                    
                        
                            repackage
                        
                    
                
            
        
    

McpApplication.java

package top.dreamcenter.mcp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class McpApplication {
    public static void main(String[] args) {
        SpringApplication.run(McpApplication.class, args);
    }
}

NumService.java

package top.dreamcenter.mcp.service;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
@Service
public class NumService {
    @Tool(description = "判断是否是双数")
    public String judgeIfOddJava(@ToolParam(description = "待判断的数") Integer num) {
        return num + (num%2 == 0 ? "是双数" : "不是双数");
    }
}

ToolCallbackProviderRegister.java

package top.dreamcenter.mcp.config;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import top.dreamcenter.mcp.service.NumService;
@Configuration
public class ToolCallbackProviderRegister {
    @Bean
    public ToolCallbackProvider numTools(NumService numService) {
        return MethodToolCallbackProvider.builder().toolObjects(numService).build();
    }
}

NumController.java

package top.dreamcenter.mcp.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.dreamcenter.mcp.service.NumService;
@RestController
@RequestMapping("/api/num")
public class NumController {
    @Autowired
    private NumService numService;
    @GetMapping("/judge/{num}")
    public String judgeIfOddJava(@PathVariable Integer num) {
        return numService.judgeIfOddJava(num);
    }
    
} 

cherry studio效果

java springboot实现MCP Server SSE

java springboot实现MCP Server SSE

java springboot实现MCP Server SSE

cursor效果

java springboot实现MCP Server SSE

单独通过url请求http://localhost:8000/sse端口的响应内容如下

java springboot实现MCP Server SSE

MCP工具接口和RESTful接口

我们可以在同一个应用程序中同时提供MCP工具接口和RESTful接口。

MCP工具接口 - 通过@Tool注解在Service层提供AI工具能力

RESTful API接口 - 通过Controller层提供常规Web API访问

java springboot实现MCP Server SSE

这样设计的优势:

对于AI应用(如Claude这样的大模型),可以通过MCP接口直接调用您的服务功能

对于传统Web应用,可以通过RESTful API接口访问相同的功能

共享相同的业务逻辑层(Service层),减少代码重复

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码