Skip to content

A lightweight weather service that provides live data and forecasts over REST and MCP, with built-in database caching to reduce API calls

Notifications You must be signed in to change notification settings

Philip-Walsh/weathernode

Repository files navigation

Weathernode

A production-ready weather service providing live weather data via REST API and MCP (Model Context Protocol) endpoints.

Features

  • Dual Protocol Support: REST API and MCP endpoints
  • Weather Data: Current weather and forecasts using WeatherAPI.com
  • Production Ready: Docker, Kubernetes, Helm charts
  • Security: Rate limiting, input validation, CORS
  • Monitoring: Health checks and metrics
  • TypeScript: Full type safety and modern development

Quick Start

Prerequisites

Installation

# Clone repository
git clone https://github.com/Philip-Walsh/weathernode.git
cd weathernode

# Install dependencies
npm install

# Set up environment
cp .env.example .env
# Add your WeatherAPI.com key to .env

# Start development server
npm run dev

Server runs on: http://localhost:3000

API Endpoints

REST API

# Current weather
GET /api/weather?city=London

# Weather forecast
GET /api/forecast?city=London&days=5

# Default location weather
GET /api/local

# Health check
GET /api/health

MCP Protocol

# List available tools
POST /mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

# Get weather data
POST /mcp
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {"city": "London"}
  }
}

Development

npm run dev          # Development server with hot reload
npm run build        # Build for production
npm run start        # Start production server
npm test             # Run test suite
npm run lint         # Lint code

Deployment

Docker

# Build image
docker build -t weathernode .

# Run container
docker run -p 3000:3000 \
  -e WEATHER_API_KEY=your_key_here \
  weathernode

Kubernetes

# Create secret
kubectl create secret generic weather-api-key \
  --from-literal=api-key=your_weatherapi_key_here

# Deploy with Helm
helm install weather-service ./helm/weather-service \
  --set env.WEATHER_API_KEY=your_key_here

Documentation

Environment Variables

WEATHER_API_KEY=your_weatherapi_key_here  # Required
DEFAULT_LOCATION=London                   # Optional
TEMP_UNIT=C                              # Optional
PORT=3000                                # Optional
NODE_ENV=development                     # Optional

License

MIT

About

A lightweight weather service that provides live data and forecasts over REST and MCP, with built-in database caching to reduce API calls

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published