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.jar
The 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/message
endpoint 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.