MCP Weather Aggregator
Provides AI-powered weather deduction using OpenAI's GPT-5-mini model to analyze differences between weather sources and deduce the most accurate values.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Weather Aggregatorwhat's the weather in Tokyo?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Weather Aggregator
AI-powered weather aggregation from 6 sources with intelligent deduction using GPT-5-mini. Works as both a REST API for web apps and an MCP Server for AI assistants (Claude, Cursor, etc.).
โจ Features
๐ค๏ธ Multi-source aggregation - Open-Meteo, OpenWeatherMap, WeatherAPI, Visual Crossing, MET Norway (Yr.no), DWD (Bright Sky)
๐ค AI-powered deduction - GPT-5-mini analyzes differences and deduces most accurate values
๐ Dual Mode - Runs as REST API (FastAPI) or MCP Server (FastMCP)
๐จ Ambient theming - Dynamic gradients based on weather/time (sunny, rainy, storm, night, fog, sandstorm, blizzard, aurora...)
๐ง Advanced Data Processing - Uses EWMA (Exponential Smoothing) for forecast curves and Kalman Filter for sensor fusion
๐ Confidence scores - Based on source agreement (0-1)
๐ Forecasts - Daily (up to 16 days) + Hourly (24 hours)
๐ Astronomy - Sunrise/sunset, moon phases
๐ Multi-language - EN, CZ
๐ Geolocation - Automatic location detection with reverse geocoding (shows city name, not coordinates)
๐ Smart Caching - Redis-backed caching for geocoding (24h), weather data (30m), and aurora (1h)
๐ก๏ธ Security - Rate limiting, security headers, and input sanitization
๐ Aurora forecast - Real-time aurora borealis visibility prediction from NOAA data
Related MCP server: mcp-weather
๐ Quick Start
1. Configure API Keys
cp .env.example .envEdit .env:
# Required for AI deduction
OPENAI_API_KEY=sk-...
# Weather providers (add keys to enable more sources)
OPENWEATHERMAP_API_KEY=your_key # openweathermap.org
WEATHERAPI_KEY=your_key # weatherapi.com
VISUALCROSSING_KEY=your_key # visualcrossing.com2. Install Dependencies
This project uses uv for dependency management.
# Windows
curl -LsSf https://astral.sh/uv/install.ps1 | powershell -c -
# Install project dependencies
uv sync3. Run Application
Option A: Run as MCP Server (for AI Assistants)
Connect this server to your MCP client (Cursor, Claude Desktop, etc.).
# Run directly
uv run mcp-weather
# OR via python module
uv run python -m src.server
#### Option C: Run with Docker (Recommended)
Full stack (Backend + Frontend + Redis) in one command:
```bash
docker-compose up --buildFrontend: http://localhost:3000
Redis: localhost:6379
### 5. Configure Claude Desktop
To use this server with Claude Desktop, edit your config file:
- **Windows**: `C:\Users\USERNAME\AppData\Roaming\Claude\claude_desktop_config.json`
- **Mac/Linux**: `~/Library/Application Support/Claude/claude_desktop_config.json`
Add the following configuration (adjust path to your project):
```json
{
"mcpServers": {
"weather": {
"command": "C:\\Path\\To\\mcp-weather\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"src.server"
],
"cwd": "C:\\Path\\To\\mcp-weather",
"env": {
"PYTHONPATH": "C:\\Path\\To\\mcp-weather"
}
}
}
}Note: The
PYTHONPATHenvironment variable is crucial for the server to find thesrcmodule correctly.
Available MCP Tools:
search_location(query)- Find coordinates for a cityget_current_weather(location_name)- Get current weather + AI summaryget_weather_forecast(location_name, days)- Full forecast + AI deductionget_weather_by_coordinates(lat, lon)- Weather for exact locationget_ambient_theme(location_name)- Get UI theme colors for current weatherget_aurora_forecast(location_name)- Aurora Borealis forecast & visibility
Option B: Run as REST API (for Frontend)
Starts the FastAPI server on http://localhost:8000.
# Run directly
uv run mcp-weather-api
# OR via python module
uv run python -m src.api4. Run Frontend
cd frontend
npm install
npm run devOpen http://localhost:3000 ๐
๐ก API Endpoints (REST Mode)
Endpoint | Method | Description |
| POST | Search locations by name |
| POST | Current weather + AI summary |
| POST | Full forecast + AI analysis |
| POST | Weather by lat/lon (auto-resolves city name) |
| POST | Aurora borealis forecast from NOAA |
| POST | Get ambient theme colors |
Example Request
curl -X POST http://localhost:8000/weather/forecast \
-H "Content-Type: application/json" \
-d '{"location_name": "Prague"}'Response includes:
current- Aggregated current weatherdaily_forecast- 7-day forecasthourly_forecast- 24-hour forecastai_summary- AI reasoning about the weatherconfidence- 0-1 score based on source agreementsources- List of providers usedambient_theme- Theme name + gradient colors
๐๏ธ Tech Stack
Component | Technology |
Backend | Python 3.14+, |
API Framework | FastAPI (REST) |
MCP Framework | FastMCP (MCP Server) |
Frontend | Next.js 16.1.4, Tailwind v4, shadcn/ui |
AI | OpenAI GPT-5-mini |
Weather | Open-Meteo (free), OpenWeatherMap, WeatherAPI, Visual Crossing |
๐ Project Structure
mcp-weather/
โโโ src/
โ โโโ api.py # FastAPI REST server
โ โโโ server.py # MCP Server (FastMCP)
โ โโโ aggregator.py # AI weather aggregation logic
โ โโโ models.py # Pydantic data models
โ โโโ providers/ # Weather API providers
โโโ frontend/ # Next.js app
โ โโโ src/
โ โโโ app/
โ โโโ components/weather/
โ โโโ lib/
โโโ .env # API keys
โโโ pyproject.toml # Python dependencies
โโโ uv.lock # Lock file๐ฎ Future Plans
NOAA Aviation Weather - METARs, TAFs, aviation advisories
NOAA Marine Weather - Ocean/coastal forecasts
NOAA Solar/Space - Enhanced UV index and solar radiation data
License
Copyright (c) 2026 Tomรกลก Stark
All rights reserved.
This code is provided for viewing purposes only. You may not copy, modify, distribute, or use this code, in whole or in part, without explicit written permission from the author.
Available Tools
6 toolsget_ambient_themeA
Get the ambient theme (colors/mood) for current weather conditions.
Args: location_name: Name of the city/location
Returns: JSON with theme name, gradient colors, and special effects
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does state the output shape (JSON with theme name, gradient colors, special effects) and implies a read-only operation via 'Get', but it does not address error behavior, location resolution, or any dependencies on sibling tools like search_location.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the first sentence states the exact purpose, followed by concise Args and Returns sections. No fluff or redundant clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with an output schema available, the description gives the essential information: what it returns, what the parameter is, and its relationship to current weather. It doesn't mention failure modes or prerequisites, but these are minor given the tool's simplicity. The existence of the output schema covers the return format in more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only place parameter meaning is defined. The Args section says location_name is the 'Name of the city/location,' which adds only slightly to the schema's title 'Location Name' and does not specify format, matching rules, or whether the name must come from search_location.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' with the resource 'ambient theme' and clarifies it as 'colors/mood' for 'current weather conditions' with a location. This differentiates it from siblings like get_current_weather and get_weather_forecast, which return raw weather data rather than a derived visual theme.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. The description implies the tool is appropriate when a visual theme for current weather is needed, but it does not name alternatives or exclusions, so an agent must infer the choice from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aurora_forecastA
Get Aurora Borealis (Northern Lights) forecast and visibility probability.
Args: location_name: Name of the city/location (e.g. "Tromso", "Prague")
Returns: JSON with current Kp index, visibility probability, and 3-day forecast
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does state the return shape ('current Kp index, visibility probability, and 3-day forecast'), which is useful, but it says nothing about behavior for unknown locations, whether the location name must be pre-resolved through search_location, or what the visibility probability actually means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a tight docstring: purpose first, then Args, then Returns, with no filler or repetition. The standard formatting adds a little white-space padding, but every content line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a single-parameter forecast tool, especially since an output schema exists to document return values. However, it omits the relationship with search_location (should the agent validate the name first?), failure behavior for unrecognized locations, and any differentiation from the weather-forecast siblings โ gaps that matter given the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates with 'Name of the city/location (e.g. "Tromso", "Prague")', adding a concrete semantic and realistic examples the bare string schema lacks. It stops short of clarifying whether non-city locations or unlisted names are accepted, so the compensation is good but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence, 'Get Aurora Borealis (Northern Lights) forecast and visibility probability,' names a specific verb, a distinct resource, and the output the caller gets. The resource ('Aurora Borealis') clearly separates it from the weather, location, and theme siblings, so an agent can pick it without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over get_current_weather or get_weather_forecast, and no prerequisites are stated โ such as resolving the location via search_location before calling. The only usage signal is implied by the tool name and purpose line, which does not meet the bar for explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_weatherA
Get current weather conditions with AI-powered summary.
Args: location_name: Name of the city/location (e.g., "Prague", "London") language: Language for AI summary (en, cs)
Returns: JSON with current weather, AI summary, and ambient theme
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | en | |
| location_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It clearly identifies the operation as 'Get' (read-only), states that results are returned as JSON, and discloses the AI summary and ambient theme components. It does not discuss data provenance, units, or failure modes, but none are critical for this simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one clear summary sentence, then concise Args and Returns sections. No filler or redundant explanation is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, the presence of an output schema, and full parameter documentation in the description, this is nearly complete. The main missing piece is explicit sibling routing guidance, but that is already accounted for in usage_guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates: it defines location_name as a city name with examples and lists the language options en/cs. This adds real meaning beyond the raw schema, which only provides property names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get current weather conditions with AI-powered summary.' This clearly distinguishes the tool from siblings like get_weather_forecast and get_weather_by_coordinates by emphasizing 'current' and location-name-based lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args section implies the intended use case: current weather for a named city/location, with an optional language for the summary. However, it does not explicitly tell the agent when to prefer get_weather_forecast or get_weather_by_coordinates instead, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weather_by_coordinatesA
Get weather forecast using exact coordinates with AI analysis.
Args:
latitude: Latitude of the location
longitude: Longitude of the location
days: Number of forecast days (1-16, default 7)
language: Language for AI summary (en, cs)
Returns: JSON with complete weather data, AI analysis, and ambient theme
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| language | No | en | |
| latitude | Yes | ||
| longitude | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does explain that the output includes complete weather data, AI analysis, and ambient theme, but it does not mention limitations, coordinate format expectations, or any operational characteristics beyond the return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a front-loaded summary followed by compact Args and Returns sections. Every line adds useful information and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to fully explain return values, but it does anyway. All parameters are covered, required fields are stated, and the response composition is summarized. The main missing piece is explicit sibling routing guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It documents all four parameters, including the acceptable range for days (1-16), defaults, and language options (en, cs), adding significant meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get weather forecast using exact coordinates with AI analysis.' It is clear and distinguishable from siblings by emphasizing 'exact coordinates' and 'AI analysis', though it does not explicitly name a sibling or state what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this tool should be used when exact coordinates are available. However, there is no explicit guidance about when to prefer get_weather_forecast, get_current_weather, or search_location instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weather_forecastA
Get weather forecast with AI-powered analysis.
Args: location_name: Name of the city/location (e.g., "Prague", "London") days: Number of forecast days (1-16, default 7) language: Language for AI summary (en, cs)
Returns: JSON with forecast, AI analysis, and ambient theme
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| language | No | en | |
| location_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden; it is transparent about the output shape, stating 'JSON with forecast, AI analysis, and ambient theme', and the read-only nature is implied by 'Get'. However, it does not disclose external API dependencies, possible latency from AI analysis, failure modes, or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compactly organized into three scannable sections: summary, Args, and Returns. Every sentence or line contributes either parameter semantics or output expectations, with no filler or repeated schema trivia.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only forecast tool, the description covers the full calling contract: input parameters, defaults, allowed values, and returned content. The only meaningful gap is the lack of routeing context against the sibling tools and no explanation of what 'ambient theme' means, though an output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the Args block compensates fully: location_name gets concrete examples ('Prague', 'London'), days gets a range and default (1-16, default 7), and language gets allowed values (en, cs). This is exactly the semantic detail an agent needs beyond the schema's bare types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get weather forecast', and adds a clear differentiator with 'AI-powered analysis' and the return of an 'ambient theme'. This separates it from siblings like get_current_weather, get_weather_by_coordinates, and get_ambient_theme, even without naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to prefer this tool over the five sibling tools. It does not mention alternatives for current conditions, coordinate-based lookup, or dedicated ambient-theme retrieval, so an agent must infer the intended use case from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationA
Search for a location by name to get coordinates.
Args: query: City or location name to search for (e.g., "Prague", "New York")
Returns: JSON list of matching locations with name, country, latitude, longitude
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool performs a search and returns a JSON list with name, country, latitude, and longitude. It does not cover edge cases like empty results or ambiguous matches, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one clear sentence, followed by compact Args and Returns sections. There is no filler, and every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter geocoding tool, the description provides enough to invoke it correctly: query semantics, expected returns, and output structure. It lacks a note on when not to use it or what happens when no matching location is found, but these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines 'query' as a required string with no description. The tool description compensates fully by explaining the query is a city or location name and providing concrete examples like 'Prague' and 'New York'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb ('Search'), a distinct resource ('location by name'), and an explicit outcome ('get coordinates'). This cleanly separates it from the weather-focused sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when an agent has a location name and needs coordinates. However, it does not explicitly mention alternatives such as get_weather_by_coordinates when coordinates are already available, so routing guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
get_ambient_theme - First observed
get_aurora_forecast - First observed
get_current_weather - First observed
get_weather_by_coordinates - First observed
get_weather_forecast - First observed
search_location
TDQS
Scored across 6 tools
Most tools target distinct resources, but get_weather_forecast and get_weather_by_coordinates are essentially the same forecast operation differentiated only by input, and get_ambient_theme duplicates a field already returned by the weather tools. Descriptions help clarify the intended usage, but the boundaries are not fully clean.
All tools use snake_case verb-first names, predominantly get_* plus search_location. The naming pattern is consistent and predictable across the entire set.
Six tools is an appropriate size for a weather aggregator, covering location lookup, current weather, forecasts, coordinate-based retrieval, ambient themes, and aurora forecasts. Each tool has a recognizable place in the overall workflow.
The core weather workflow is covered well: search locations, get current conditions, get forecasts, and use coordinates. Minor gaps like historical weather, weather alerts, or a dedicated current-weather-by-coordinates endpoint can be worked around but are not fatal.
Maintenance
Related MCP Connectors
MCP server for weather with reasoning โ umbrella advice, outdoor checks, city comparisons.
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Weather, code search, currency & Solana trust scoring as MCP tools. Free, no API key needed.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Docker-based MCP server that provides current weather information for cities worldwide. Enables AI assistants like Claude to fetch temperature, weather conditions, and humidity data through a standardized interface.-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server built with the mcp-framework to provide weather-related tools and data to AI clients. It enables integration of weather capabilities and custom tools into the MCP ecosystem for use with platforms like Claude Desktop.9 npm-

WeatherAI MCPofficial
AlicenseNot gradedqualityDmaintenanceWeatherAI MCP server โ 11 live weather tools for Claude Desktop, Cursor, Windsurf, and any MCP-compatible AI assistant35 npmMIT- AlicenseNot gradedqualityDmaintenanceA MCP server for querying real-time weather information for any city worldwide using the free Open-Meteo API, supporting CLI and integration with AI clients like Claude and Cursor.8 npmMIT