A Model Context Protocol (MCP) server implementation built with Spring Boot and Java 21. This project demonstrates how to create an MCP server that provides user management tools for AI assistants.
- Implements MCP server functionality using Spring AI
- Exposes user management tools via MCP
- Synchronous communication mode
- Support for Standard I/O and Server-Sent Events transports
- Integrates with DummyJSON external API for user data
- Java 21
- Spring Boot 3.4.3
- Spring AI (Model Context Protocol)
- Project Lombok
- Maven
- Java 21 or higher
- Maven
- Clone the repository
git clone https://github.com/yourusername/mcp-spring-java.git cd mcp-spring-java- Build the project
mvn clean package- Run the application
java -jar target/mcp-spring-java-0.0.1-SNAPSHOT.jarThe MCP server is configured in application.yml:
- Server runs on port 8090
- Server name: my-dummy-users-server
- Synchronous communication mode
- Supports STDIO transport for terminal-based communication
- Exposes
/mcp/messageendpoint for SSE communication
The server exposes the following user management tools:
getAllUsers- Get all users with paginationgetAllUsersDefault- Get all users with default paginationgetUserById- Get a single user by IDsearchUsers- Search for users by queryaddUser- Add a new userupdateUser- Update a userdeleteUser- Delete a user
You can use Postman to test the MCP server endpoints:
-
Start the MCP server
-
Open Postman and create a new request:
- Method: POST
- URL: http://localhost:8090/mcp/message
- Headers:
- Content-Type: application/json
- Accept: application/json
-
For the request body, use the following JSON format to invoke any of the available tools:
{ "message": { "toolCalls": [ { "id": "call-123", "name": "[TOOL_NAME]", "parameters": { "[PARAMETER_NAME]": "[PARAMETER_VALUE]" } } ] } }{ "message": { "toolCalls": [ { "id": "call-123", "name": "getAllUsersDefault", "parameters": {} } ] } }{ "message": { "toolCalls": [ { "id": "call-123", "name": "getUserById", "parameters": { "id": 1 } } ] } }{ "message": { "toolCalls": [ { "id": "call-123", "name": "searchUsers", "parameters": { "query": "John" } } ] } }The response will contain a JSON object with the results from the tool execution.
You can configure this server in MCP client applications using the following configuration:
{ "mcpServers": { "dummy-user-server": { "command": "java", "args": [ "-Dspring.ai.mcp.server.stdio=true", "-Dspring.main.web-application-type=none", "-Dlogging.pattern.console=", "-jar", "path/to/mcp-spring-java-0.0.1-SNAPSHOT.jar" ] } } }This project is licensed under the terms provided in the LICENSE file.