random-number-server

nobelk/random-number-server

3.2

If you are the rightful owner of random-number-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The random-number-server is an MCP server designed to generate random numbers using national weather data as seeds.

random-number-server

CI codecov Python 3.13+

MCP server to generate random numbers using the national weather data as seeds.

Build Instructions

Local Development Build

# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone the repository
git clone https://github.com/nobelk/random-number-server.git
cd random-number-server

# Install dependencies and build the project
uv sync

# Install in editable mode for development
uv pip install -e .

Docker Build

# Build the Docker image
docker build -t random-number-server:latest .

# Or use Docker Compose to build
docker-compose build

Quick Start

Using Docker Compose (Recommended)

# Build and run the server
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the server
docker-compose down

Using uv directly

# Install dependencies
uv sync

# Run the server
uv run src/random_server.py

Unit Tests

The project includes comprehensive unit tests for both core modules with 86% code coverage.

Running Tests

# Install dependencies
uv sync

# Run all tests
uv run pytest

# Run tests with verbose output
uv run pytest -v

# Run tests with coverage report
uv run pytest --cov=src --cov-report=term-missing

# Run specific test files
uv run pytest tests/test_random_number_generator.py
uv run pytest tests/test_random_server.py

Test Coverage

  • src/RandomNumberGenerator.py: 83% coverage (13 tests)
  • src/random_server.py: 92% coverage (17 tests)
  • Total: 86% coverage (30 tests)

Tests cover:

  • Initialization and configuration
  • Random number generation algorithms
  • Weather API integration
  • Error handling and edge cases
  • FastMCP tool registration and execution
  • Concurrent request handling

Docker Setup

The project includes Docker and Docker Compose configurations for easy deployment.

Docker Image

  • Base: Python 3.13 Alpine (optimized for size)
  • Size: ~110MB
  • Security: Runs as non-root user
  • Build: Multi-stage build for optimization

Docker Compose

# Production
docker-compose up -d

# Development (with live reload)
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up

# Run tests in container
docker-compose run --rm --entrypoint /app/.venv/bin/python random-server -m pytest

See for detailed Docker instructions.

MCP Configuration

Run the MCP server locally

uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/random-number-server run src/random_server.py

Configure Claude Desktop

Edit ~/Library/Application\ Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "weather": {
      "command": "/Users/Nobel.Khandaker/.pyenv/shims/uv",
      "args": [
        "--directory",
        "/Users/Nobel.Khandaker/sources/random-number-server",
        "run",
        "src/random_server.py"
      ]
    }
  }
}