Skip to main content
Glama
LMWCoding

MCP Weather Service

by LMWCoding

MCP Weather Service

A FastMCP-based weather service for Singapore that provides current weather conditions and forecasts from the National Environment Agency (NEA) APIs.

Features

  • Current Weather Data: Temperature, rainfall, humidity, wind speed, and wind direction from all weather stations

  • Weather Forecasts: 2-hour, 24-hour, and 4-day forecasts for all areas in Singapore

  • Comprehensive API Integration: All data from official NEA weather APIs

  • Robust Error Handling: Retry logic, timeouts, and graceful degradation

  • Async Implementation: Efficient concurrent API calls

Related MCP server: Malaysian Weather MCP Server

Available Tools

The combined server (combinedserver.py) mounts two sub-servers, so tools are namespaced with weather_ and home_ prefixes.

Weather tools (namespace weather_)

weather_get_sg_weather_forecast

Fetches comprehensive weather forecasts including:

  • 2-hour weather forecast for all areas in Singapore

  • 24-hour weather forecast with detailed period breakdowns

  • 4-day weather outlook with temperature, humidity, and wind information

weather_get_sg_current_weather

Fetches current weather data from all weather stations:

  • Temperature readings (°C)

  • Rainfall measurements (mm)

  • Humidity levels (%)

  • Wind speed (m/s)

  • Wind direction (degrees)

weather_health_check

Simple health status check for the weather service.

Home automation tools (namespace home_)

home_control_home_device

Turn a home device on or off by room name (master, boy, girl, living, study) and device name (Lights, TV, Fan).

home_health_check

Simple health status check for the home automation service.

API Endpoints Used

  • 2-Hour Forecast: https://api-open.data.gov.sg/v2/real-time/api/two-hr-forecast

  • 24-Hour Forecast: https://api-open.data.gov.sg/v2/real-time/api/twenty-four-hr-forecast

  • 4-Day Outlook: https://api-open.data.gov.sg/v2/real-time/api/four-day-outlook

  • Temperature: https://api-open.data.gov.sg/v2/real-time/api/air-temperature

  • Rainfall: https://api-open.data.gov.sg/v2/real-time/api/rainfall

  • Humidity: https://api-open.data.gov.sg/v2/real-time/api/relative-humidity

  • Wind Speed: https://api-open.data.gov.sg/v2/real-time/api/wind-speed

  • Wind Direction: https://api-open.data.gov.sg/v2/real-time/api/wind-direction

Installation

# Install dependencies
pip install -e .

Usage

Start the server:

python combinedserver.py

The MCP endpoint is available at http://localhost:3002/mcp

If you are connecting from another machine or container, use http://<your-host-ip>:3002/mcp instead.

Robustness Features

  • Retry Logic: Automatic retries for failed API calls (3 attempts with 2s delay)

  • Timeout Handling: Configurable timeouts (20s) for all API requests

  • Error Recovery: Graceful degradation when data is unavailable

  • Logging: Comprehensive logging for debugging and monitoring

  • Health Check: Built-in health status endpoint

Requirements

  • Python 3.13+

  • FastMCP 3.4.7+

  • httpx 0.28.1+

Docker Build Instructions

This project is used in a dev container environment, so the container build must be handled carefully during both development and production.

Build only the production stage image

docker build --target production -t mcpweather:latest .

Run the production container with port mapping

docker run -d -p 3002:3002 --name my-product-app mcpweather:latest

Starting the server without dev container

This uses Docker Compose to build and launch the server:

docker compose up -d --build

Related MCP Connectors

Related MCP Servers