Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

springboot-MCPserver-JUnit

MCP.Pizza Chef: dreamcenter

springboot-MCPserver-JUnit is a Springboot-based MCP server template project that supports both stdio and SSE communication modes. It integrates JUnit for unit testing and is designed for Java 17+ environments. This project provides a quick start for building MCP servers with Springboot, including detailed setup instructions and testing configurations, making it ideal for developers looking to implement MCP servers with robust testing and modern Java frameworks.

Use This MCP server To

Build MCP servers using Springboot framework Run MCP server in stdio mode for local testing Run MCP server in SSE mode for real-time streaming Integrate JUnit tests for MCP server validation Quickly prototype MCP server projects with Java 17+ Configure environment variables for MCP server testing Deploy MCP server with Maven build system

README

Springboot + MCP + JUnit 模板项目


使用springboot快速构建一个mcp项目,项目支持 JUNIT单元测试。

模式支持: STDIOSSE

解说视频:

  • 全网首发:从零搭建 Springboot+MCP+JUnit 项目 【搭配CherryStudio】BV1qUXkYRE6C
  • 全网首发:Springboot+MCP(SSE)+JUnit 从搭建到上线 BV1rSXWYGEVz

开发环境

  • 开发IDE: IDEA
  • java版本: JAVA17 (Spring官方要求必须java17+)
  • maven版本: 3.8.1 (太高引入项目时可能报错,请选择适当版本)

参考文档资料

  1. MCP官网-协议 (必读文档)
  2. MCP官网-编码指南
  3. Spring官网

客户端测试方案

1. 对于STDIO客户端配置方式:
命令(Command):
    java
参数(Arguments):
    -jar
    -Dfile.encoding=UTF-8
    -Dspring.ai.mcp.server.stdio=true
    AbsolutePath/**/xxx.jar
环境(Environments):
    env1=xxx
    env2=yyy

指令是java(如果本地主环境不是17+,注意切换);

参数file.encoding指定System.in和System.out为UTF-8编码,避免编码问题;

参数spring.ai.mcp.server.stdio表示以stdio的方式启用该服务;

环境配置,是将配置写入当前系统环境,以供当前程序调取。


2. 对于SSE客户端配置方式:
SSE地址填写如下链接即可
http://主机地址:端口/sse

额外可选功能的探索

1. 修改消息端点

配置文件参见:McpServerProperties

spring.ai.mcp.server.sseMessageEndpoint=/mcp/message
2. 修改sse端点

原始的sse端点在/sse,而配置文件没有提供sse端点的配置方式,所以需要重新注入 ServerMcpTransport 来换掉原来的。

注意下面两个Bean配置都要加,因为自动注入文件 MpcWebMvcServerAutoConfiguration 中,对整个注册的注入条件是 @ConditionalOnMissingBean(ServerMcpTransport.class),导致下面两个bean都不会注入

private final String SSE_ENDPOINT = "/sse";

@Bean
@ConditionalOnMissingBean
public WebMvcSseServerTransport webMvcSseServerTransport(ObjectMapper objectMapper,
        McpServerProperties serverProperties) {
    return new WebMvcSseServerTransport(objectMapper, serverProperties.getSseMessageEndpoint(), SSE_ENDPOINT);
}

@Bean
public RouterFunction<ServerResponse> mvcMcpRouterFunction(WebMvcSseServerTransport transport) {
    return transport.getRouterFunction();
}
3. 一服务多端点?

需要重新注入多个 McpSyncServer ,详见类 MpcServerAutoConfiguration

因为多端点可能会涉及到的东西非常多,感兴趣的可以自己研究,我就只提供这样的指引啦!

4. SSE授权?

在2025.03.26 的MCP官方协议文档中,更新了鉴权方案, 期待Spring的更新。



Bye.ヾ(•ω•`)o

springboot-MCPserver-JUnit FAQ

How do I run the springboot-MCPserver-JUnit in stdio mode?
Use the java command with -Dspring.ai.mcp.server.stdio=true and specify the jar file path, ensuring Java 17+ is used.
What Java version is required for this MCP server?
Java 17 or higher is required, as mandated by Springboot official requirements.
Does this project support unit testing?
Yes, it integrates JUnit for comprehensive unit testing of the MCP server.
What communication modes does this MCP server support?
It supports both stdio and SSE (Server-Sent Events) modes for flexible client-server communication.
Which build tool is recommended for this project?
Maven is recommended, with version 3.8.1 suggested to avoid compatibility issues.
Where can I find official documentation for MCP and Springboot integration?
Refer to the MCP official protocol and coding guide, and Springboot MCP server starter docs linked in the project README.
Can I use this MCP server template for production?
This is a template and starting point; further customization and testing are recommended before production use.
Are there video tutorials available for setup?
Yes, there are detailed videos on Bilibili demonstrating setup and deployment steps for this project.