
mcp server play
Project to learn and play with MCP in Rust
Repository Info
About This Server
Project to learn and play with MCP in Rust
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
MCP Server: Weather and Time Information Service
Project Overview
This Model Context Protocol (MCP) server is a learning project that leverages the RMCP (Rust Model Context Protocol) library to demonstrate:
- Async Rust programming with tokio
- Implementing a flexible microservice architecture
- Using the RMCP SDK for building extensible tools
The server provides two primary tools:
- Weather Information: Retrieve weather data for a specific city and country
- Local Time: Get the current local time for a given city and country
About RMCP
RMCP is a modern Rust SDK for the Model Context Protocol, offering:
- Clean and efficient async runtime with tokio
- Flexible and extensible tool implementation
- Improved data type handling compared to official SDKs
- Support for various transport mechanisms
- Server-Sent Events (SSE) for real-time communication
- Lightweight and efficient one-way server-to-client data streaming
- Built-in reconnection support and event tracking
Purpose
The primary goal of this project is to:
- Learn Rust programming
- Explore RMCP library capabilities
Features
- Weather data retrieval
- Local time information
- Stdio-based communication
- Structured logging with tracing
Prerequisites
- Rust (latest stable version)
- Cargo package manager
- just command runner
- Install with Homebrew:
brew install just - Install with Cargo:
cargo install just
- Install with Homebrew:
- API keys for:
- WeatherAPI for weather data
- IP Geolocation API for time data
Configuration
The server can be configured using the following environment variables:
BIND_ADDRESS: The IP address to bind the server to (default:0.0.0.0)PORT: The port number to listen on (default:8000)
Example usage:
# Bind to localhost on port 3000
BIND_ADDRESS=127.0.0.1 PORT=3000 cargo run
# Use default bind address but change port
PORT=8080 cargo run
Environment Setup
-
Copy the example environment file:
cp .env.example .env -
Edit the
.envfile and replace the placeholder values with your actual API keys:WEATHER_API_KEY: Get it from WeatherAPIIP_GEOLOCATION_API_KEY: Get it from IP Geolocation API
-
Optionally, you can also configure:
BIND_ADDRESS: The IP address to bind the server to (default:0.0.0.0)PORT: The port number to listen on (default:8000)
Installation
-
Clone the repository:
git clone https://github.com/sergei-grigorev/mcp-server-play.git cd mcp-server-play -
Build the project:
cargo build
Development Commands
The project uses just as a command runner. Available commands:
just # List available commands
just build # Build release artifact
just check # Run checks (clippy, fmt, etc.)
just clean # Clean build artifacts
just format # Format code using rustfmt
just serve # Run the server in development mode
just test # Run tests
Running the Server
Run the server using just:
just serve
Project Structure
src/main.rs: Entry point and server initializationsrc/api/mod.rs: Main server implementationweather.rs: Weather data retrieval logicweather/response.rs: Weather API response modelstime.rs: Time data retrieval logictime/response.rs: Time API response models
src/models/mod.rs: Models module definitionsweather.rs: Weather request/response modelstime.rs: Time request/response models
Tools and Endpoints
Weather Information
- Endpoint:
get_weather - Parameters:
city: Name of the citycountry: Country codeunit: Temperature unit (optional)- Values:
C(Celsius) orF(Fahrenheit) - Default:
C
- Values:
Local Time
- Endpoint:
get_local_time - Parameters:
city: Name of the citycountry: Country code
License
MIT
Quick Start
Clone the repository
git clone https://github.com/sergei-grigorev/mcp-server-playInstall dependencies
cd mcp-server-play
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.