Weather Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Weather Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A production-ready Model Context Protocol (MCP) server that provides real-time weather information to LLM clients using the Open-Meteo API. http://ec2-35-180-66-133.eu-west-3.compute.amazonaws.com:3000/weather-dashboard.html
pip install -r requirements.txtpython server.py --stdioEdit your Claude Desktop configuration file and add:
{
"mcpServers": {
"weather": {
"command": "python",
"args": [
"/absolute/path/to/weather_mcp_server/server.py",
"--stdio"
],
"env": {
"MCP_TRANSPORT": "stdio",
"PYTHONUNBUFFERED": "1"
}
}
}
}docker-compose up -dcurl http://localhost:3000/healthcurl http://localhost:3000/mcpget_current_weather(city: str)Get current weather conditions for a city.
Example:
{
"city": "london",
"temperature": {"value": 15.2, "unit": "°C", "feels_like": 13.8},
"conditions": "Partly cloudy",
"humidity": {"value": 72, "unit": "%"},
"wind": {"speed": 12.5, "speed_unit": "km/h", "direction": 245}
}get_forecast(city: str, days: int = 7)Get weather forecast for 1-16 days.
Parameters:
city: City name (e.g., "paris", "new_york")days: Number of days (1-16, default: 7)Example:
{
"city": "Paris",
"forecast_days": 7,
"forecast": [
{
"date": "2025-01-20",
"conditions": "Partly cloudy",
"temperature": {"max": 18.5, "min": 12.3, "unit": "°C"},
"precipitation": {"total": 2.5, "probability": 30, "unit": "mm"}
}
]
}get_weather_alerts(city: str)Get weather alerts and warnings for a city.
Example:
{
"city": "Miami",
"alert_count": 2,
"alerts": [
{
"type": "High Wind Warning",
"severity": "moderate",
"description": "Strong winds detected: 55 km/h"
}
]
}weather://cities/supportedReturns list of all supported cities with coordinates.
weather://api/infoReturns information about the Open-Meteo API and its capabilities.
health://statusHealth check endpoint for monitoring.
The server includes 26 major cities across 6 continents:
North America: New York, Los Angeles, Chicago, San Francisco, Toronto, Vancouver, Mexico City
Europe: London, Paris, Berlin, Madrid, Rome, Amsterdam
Asia: Tokyo, Beijing, Shanghai, Singapore, Seoul, Mumbai, Dubai
Oceania: Sydney, Melbourne, Auckland
South America: São Paulo, Buenos Aires, Rio de Janeiro
Africa: Cairo, Cape Town
# Server Configuration
MCP_TRANSPORT=http # stdio or http
MCP_HOST=0.0.0.0 # Bind address
MCP_PORT=3000 # Server port
MCP_PATH=/mcp # HTTP endpoint path
# Python Configuration
PYTHONUNBUFFERED=1
PYTHONDONTWRITEBYTECODE=1
# Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR, CRITICALThe docker-compose.yml includes:
weather_mcp_server/
├── weather_mcp/
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server with tools & resources
│ ├── api.py # Open-Meteo API client
│ └── cities.py # City database
├── tests/
│ └── test_weather.py # Comprehensive test suite
├── server.py # Main entry point
├── Dockerfile # Multi-stage production build
├── docker-compose.yml # Orchestration with health checks
├── requirements.txt # Python dependencies
├── nginx.conf # Optional reverse proxy config
└── README.md # This file# Install dev dependencies
pip install pytest pytest-asyncio
# Run tests
pytest tests/ -vEdit weather_mcp/cities.py:
SUPPORTED_CITIES = {
"your_city": {
"lat": 40.7128,
"lon": -74.0060,
"name": "Your City",
"country": "Country",
"timezone": "America/New_York"
}
}For STDIO transport, logs go to stderr. For HTTP transport, logs are JSON formatted to stdout.
Open-Meteo aggregates data from multiple weather services:
python server.py --stdiodocker build -t weather-mcp .
docker run -p 3000:3000 weather-mcpdocker-compose up -ddocker-compose --profile production up -dcurl http://localhost:3000/healthdocker ps
# Look for "(healthy)" status# Docker logs
docker logs weather-mcp-server
# Follow logs
docker logs -f weather-mcp-serverSolution: Check available cities with the weather://cities/supported resource or see the list above.
Solution: Check logs with docker logs weather-mcp-server and ensure port 3000 is available.
Solution: Check internet connectivity and Open-Meteo API status at https://open-meteo.com
Solution: Ensure absolute path is used in config and Python is in PATH.
MIT License - Feel free to use in your own projects
Contributions welcome! Areas for improvement:
For issues or questions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.