A demonstration project showcasing the integration of Spring AI's Model Completion Provider (MCP) protocol for building AI-powered applications. This project consists of a server component that provides AI model completion services with function-calling capabilities, and a client component that consumes these services.
This project demonstrates how to use Spring AI's MCP protocol to create a server that exposes AI model completion services and a client that consumes these services. The server component provides mathematical tools (sum and multiply) that can be called by AI models, while the client component exposes a REST endpoint for users to submit questions.
- MCP Server: Provides AI model completion services with function-calling capabilities
- MCP Client: Consumes AI model completion services from the server
- Tool Integration: Demonstrates how to expose Java methods as callable tools for AI models
- REST API: Exposes a REST endpoint for users to submit questions
- Server-Sent Events (SSE): Uses SSE for communication between server and client
- Java 17 or higher
- Maven 3.6 or higher
- OpenAI API key (for the client component)
-
Clone the repository:
git clone https://github.com/stylepatrick/spring-ai-mcp-server-client.git cd spring-ai-mcp-server-client
-
Build the server component:
cd mcp-server mvn clean install
-
Build the client component:
cd ../mcp-client mvn clean install
-
Update the OpenAI API key in
mcp-client/src/main/resources/application.yml
with your own API key.
-
Start the server component:
cd mcp-server mvn spring-boot:run
-
Start the client component:
cd mcp-client mvn spring-boot:run
-
Send a question to the client component:
curl -X POST "http://localhost:8081/question?question=What%20is%202%20plus%203?"
The server component is configured in mcp-server/src/main/resources/application.yaml
:
spring:
application:
name: mcp-server
ai:
mcp:
server:
sse-endpoint: /api/v1/sse
sse-message-endpoint: /api/v1/mcp
type: sync
logging:
level:
io.modelcontextprotocol: TRACE
org.springframework.ai.mcp: TRACE
The client component is configured in mcp-client/src/main/resources/application.yml
:
spring:
application:
name: mcp-client
ai:
openai:
api-key: your-api-key
mcp:
client:
toolcallback:
enabled: true
sse:
connections:
server1:
url: http://localhost:8080
sse-endpoint: /api/v1/sse
server:
port: 8081
-
mcp-server: Server component that provides AI model completion services
McpServerApplication.java
: Main application classtools/MathTools.java
: Mathematical tools that can be called by AI modelstools/ToolConfig.java
: Configuration for tool callback provider
-
mcp-client: Client component that consumes AI model completion services
McpClientApplication.java
: Main application classresource/MyController.java
: REST controller for handling user questionsservice/MyService.java
: Service for processing questions using ChatClient
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 stylepatrick