ModelContextProtocolClient
by InnoBridge
A Spring Boot client application demonstrating different transport methods (WebFlux SSE, Stdio) for communicating with a ModelContextProtocol server. It showcases how to interact with the server using various protocols.
View on GitHub
Last updated: N/A
ModelContextProtocolClient
A Spring Boot client application that demonstrates different transport methods (WebFlux SSE, Stdio) for communicating with the MCP server.
Setup
- Create a
.env
file in the root directory with your API keys:
BRAVE_SEARCH_API_KEY=your_brave_search_api_key_here
WEATHER_API_KEY=your_weather_api_key_here
-
Clone https://github.com/InnoBridge/ModelContextProtocolServer
-
Docker Setup
- Update volume mappings in docker-compose.yml:
modelcontextprotocolclient_application ... volumes: - .:/app - /var/run/docker.sock:/var/run/docker.sock - ./local/root:/root - ../{path to ModelContextProtocolServer repo}:/ModelContextProtocolServer
- Start the Docker containers:
sudo docker compose up
- Build and run the mcp server:
# In a new terminal sudo docker exec -it modelcontextprotocolserver-application sh cd /app ./mvnw clean install ./mvnw spring-boot:run
- Build and run the client:
# In another new terminal docker exec -it modelcontextprotocolclient-application sh ./mvnw spring-boot:run
Available Endpoints
WebFlux Transport
GET /webflux/tools
- List all available toolsPOST /webflux/calculate
- Calculate using the calculator toolcurl -X POST "http://localhost:8080/webflux/calculate?operation=add&a=5&b=3"
POST /webflux/weather
- Get weather informationcurl -X POST "http://localhost:8080/webflux/weather?location=San%20Francisco&format=celsius"
Stdio Transport
GET /stdio/tools
- List all available toolsPOST /stdio/calculate
- Calculate using the calculator toolcurl -X POST "http://localhost:8080/stdio/calculate?operation=add&a=5&b=3"
POST /stdio/weather
- Get weather informationcurl -X POST "http://localhost:8080/stdio/weather?location=San%20Francisco&format=celsius"
BraveSearch Transport
GET /tools/bravesearch
- List available toolsPOST /bravesearch
- Perform a web searchcurl -X POST "http://localhost:8080/bravesearch?query=spring%20boot"
Configuration
The application supports multiple transport configurations:
-
WebFlux SSE Transport (default)
- Communicates with the server using Server-Sent Events
- Server must be running in WebFlux mode
-
Stdio Transport
- Communicates with the server using standard input/output
- Automatically launches the server jar in stdio mode
-
BraveSearch Transport
- Communicates with the BraveSearch API
- Requires
BRAVE_SEARCH_API_KEY
in.env
file - Get your API key from Brave Search API
-
Weather API
- Used by both WebFlux and Stdio transports for weather information
- Requires
WEATHER_API_KEY
in.env
file - Get your API key from WeatherAPI