Content
# MCP Server using Spring Boot Java
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.
## Features
- 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
## Technologies
- Java 21
- Spring Boot 3.4.3
- Spring AI (Model Context Protocol)
- Project Lombok
- Maven
## Getting Started
### Prerequisites
- Java 21 or higher
- Maven
### Installation
1. Clone the repository
```bash
git clone https://github.com/yourusername/mcp-spring-java.git
cd mcp-spring-java
```
2. Build the project
```bash
mvn clean package
```
3. Run the application
```bash
java -jar target/mcp-spring-java-0.0.1-SNAPSHOT.jar
```
## Configuration
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
## Available Tools
The server exposes the following user management tools:
- `getAllUsers` - Get all users with pagination
- `getAllUsersDefault` - Get all users with default pagination
- `getUserById` - Get a single user by ID
- `searchUsers` - Search for users by query
- `addUser` - Add a new user
- `updateUser` - Update a user
- `deleteUser` - Delete a user
## Testing with Postman
You can use Postman to test the MCP server endpoints:
1. Start the MCP server
2. Open Postman and create a new request:
- Method: POST
- URL: http://localhost:8090/mcp/message
- Headers:
- Content-Type: application/json
- Accept: application/json
3. For the request body, use the following JSON format to invoke any of the available tools:
```json
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "[TOOL_NAME]",
"parameters": {
"[PARAMETER_NAME]": "[PARAMETER_VALUE]"
}
}
]
}
}
```
### Example Requests
#### Get All Users (Default Pagination)
```json
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "getAllUsersDefault",
"parameters": {}
}
]
}
}
```
#### Get User by ID
```json
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "getUserById",
"parameters": {
"id": 1
}
}
]
}
}
```
#### Search Users
```json
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "searchUsers",
"parameters": {
"query": "John"
}
}
]
}
}
```
The response will contain a JSON object with the results from the tool execution.
## Usage with MCP Clients
You can configure this server in MCP client applications using the following configuration:
```json
{
"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"
]
}
}
}
```
## License
This project is licensed under the terms provided in the LICENSE file.
Connection Info
You Might Also Like
MarkItDown MCP
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
Time
A Model Context Protocol server for time and timezone conversions.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
Sequential Thinking
A structured MCP server for dynamic problem-solving and reflective thinking.
Git
A Model Context Protocol server for Git automation and interaction.
Everything
Model Context Protocol Servers