⚡ Now with MCP Server support

Weather API
for the AI era

A free, open-source weather API and public MCP server. Get current conditions by coordinates or IP - no key, no sign up, no limits on the public instance.

Build Quality Gate Docker Pulls License
🤖 Use as MCP Tool Try the API → ★ GitHub
LIVE API weather-api.madadipouya.com
MCP weather-api.madadipouya.com/mcp
SWAGGER swagger-ui/index.html
DOCKER kasramp/eris
9+ Years maintained
100% Test coverage
0 Code smells
SB 1→3.5 Spring Boot history
Free Public instance

Use Eris as an AI Tool

Eris exposes a public MCP server. Connect it to Claude, Cursor, or any MCP-compatible agent and let your AI query live weather data, no key required.

MCP Server Endpoint

https://weather-api.madadipouya.com/mcp
get_current_weather_by_latitude_and_longitude
Fetch current weather for any coordinates on Earth
get_current_weather_by_ip_address
Get weather for the caller's IP address location

Add to claude_desktop_config.json:

claude_desktop_config.json
{
  "mcpServers": {
    "eris-weather": {
      "type": "http",
      "url": "https://weather-api.madadipouya.com/mcp"
    }
  }
}

Or test with curl:

bash
curl "https://weather-api.madadipouya.com/mcp"

Built to last. Built right.

The kind of quality you'd expect from a professional codebase, an open-source side project, maintained for 8 years and counting.

100% Test Coverage
Every line covered, enforced by SonarCloud on every pull request. Zero exceptions.
🔍
SonarCloud Quality Gate
Zero code smells, zero duplications, zero security hotspots. Always green.
🚀
Fully Automated CI/CD
GitHub Actions builds, tests, and releases. Docker Hub push and GitHub Release on every tag.
🔄
Auto-deployment
Merges to master trigger live redeployment via Adnanh Webhook and Docker Swarm. Zero manual steps.
🛡️
NVD Vulnerability Scanning
Dependency CVE checks run on every merge to develop, catching issues before they reach production.
🤖
Public MCP Server
Plug Eris directly into any MCP-compatible AI agent. Weather data as an AI tool, out of the box.
📖
Swagger / OpenAPI Docs
Interactive API documentation at /swagger-ui/index.html, try it live.
🐳
Docker Swarm Ready
Swarm configuration included. Scale horizontally with a single command.
📦
Auto Release Notes
Each release gets a GitHub Release with auto-generated notes and downloadable Jar artifacts.
# develop branch
Pull Request → develop
    ├── ✓ SonarCloud  (quality gate + 100% coverage check)
    └── ✓ NVD scan    (dependency vulnerability check)

# master branch
Merge to master
    ├── ✓ Build & Test
    ├── ↑ Docker Hub   kasramp/eris:latest
    ├── ↑ GitHub Release + auto release notes + Jar artifact
    └── ⟳ Live deploy  webhook → Docker Swarm → weather-api.madadipouya.com

Endpoints

Two endpoints, same response shape. Try them live in the Swagger UI →

GET /v1/weather/current
Weather by coordinates (latitude & longitude). Most accurate option.
ParameterTypeRequiredDescription
lat Decimal Yes Latitude
lon Decimal Yes Longitude
fahrenheit Boolean No Use Fahrenheit + miles (default: false = Celsius + km)
{
  "country": "Germany",
  "geoLocation": "Berlin, 10115, Germany",
  "temperature": 18.4,
  "feelsLike": 17.1,
  "main": {
    "temp": 18.4,
    "pressure": 1015,
    "humidity": 62,
    "temp_min": 16.0,
    "temp_max": 20.0
  },
  "weather": [{ "main": "Clouds", "description": "scattered clouds" }],
  "wind": { "speed": 3.2, "deg": 220 },
  "visibility": "10000",
  "errors": []
}
GET /v1/weather/currentbyip
Weather by caller's IP address. No coordinates needed, location is inferred automatically.
ParameterTypeRequiredDescription
fahrenheit Boolean No Use Fahrenheit + miles (default: false)
/* Same response shape as /current */
{
  "country": "...",
  "geoLocation": "...",
  "temperature": 0.0,
  "errors": []
}
bash — by coordinates (Berlin)
curl "https://weather-api.madadipouya.com/v1/weather/current?lat=52.52&lon=13.405"
bash — by IP
curl "https://weather-api.madadipouya.com/v1/weather/currentbyip"

Run your own instance

Self-host with a single Docker command, scale with Swarm, or deploy to Heroku in one click.

🐳 Docker

Recommended. Images are auto-published to Docker Hub on every release.

docker run -p 8080:8080 \
  -e OPENWEATHERMAP_API_KEY=key \
  -e ACTUATOR_USERNAME=user \
  -e ACTUATOR_PASSWORD=pass \
  kasramp/eris:latest

🐙 Docker Swarm

Multi-node clustering with the included Swarm compose template.

export OPENWEATHERMAP_API_KEY=key
docker stack deploy \
  -c docker-compose-swarm.yml \
  eris_stack

☕ JAR File

Requires JDK 25. Download from the GitHub Releases page.

java -jar eris*.jar
Releases →

🚀 Heroku

One-click deployment to Heroku. No setup needed.

Deploy to Heroku