This project demonstrates a Spring Boot + Spring AI MCP server that exposes a tool over the Model Context Protocol (MCP). It includes a Docker Compose setup for running the app and the MCP Inspector together.
- Docker Desktop or Docker Engine
- Optional: Java 17 and Maven if you want to run the app outside Docker
Start the backend and inspector together:
task allThe required Spring AI and MCP dependencies are declared in:
Relevant section:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>This is the dependency that enables the Spring MCP server support used by the application.
The sample tool is defined here:
Example implementation:
@Service
public class DataProductTool {
@Autowired
private DataProductService dataProductService;
@McpTool(description = "Get information about a data product by its ID")
public String getDataProductInfo(
@McpToolParam(description = "The ID of the data product") String dataProductId
) {
return String.format("Data Product Info: %s", dataProductService.getDataProduct(dataProductId));
}
}This is the core of the MCP server: the method is exposed as an MCP tool and can be discovered and invoked by an MCP client such as the inspector.
Open the Swagger UI here to explore the REST API:
http://localhost:8080/swagger-ui/index.html#
Open the MCP Inspector UI here:
http://localhost:6274
The Spring MCP server is exposed at:
http://localhost:8080/mcp
When you open the inspector, connect to that URL.
On macOS with Docker Desktop, the Compose default is set to use host.docker.internal, which resolves correctly from the container to the host machine.
If you are running Docker on Linux, use the internal Compose service name instead:
http://backend:8080/mcp
If you prefer to start the inspector outside Docker:
npx @modelcontextprotocol/inspector@latestThen point it to:
http://localhost:8080/mcp