wu-weather-mcp
wu-weather-mcp
Un servidor MCP que expone cualquier estación meteorológica personal (PWS) de Weather Underground como herramientas en Claude. Pregúntale a Claude sobre las condiciones actuales, resúmenes diarios, historial horario y metadatos de la estación, todo obtenido en tiempo real desde tu estación.
Requisitos previos
Node.js 18+
Una cuenta de Weather Underground con una PWS
Una clave de API de Weather Underground (gratuita)
Tu ID de estación (visible en tu panel de control de WU, p. ej.,
KCALAKEF92)
Related MCP server: weather-mcp-server
Configuración
1. Clonar e instalar
git clone https://github.com/your-username/wu-weather-mcp.git
cd wu-weather-mcp
npm install2. Configurar el entorno
cp .env.example .envEdita .env:
WU_API_KEY=your_api_key_here
WU_STATION_ID=your_station_id_here
WU_STATION_NAME=My Weather Station # optional — defaults to station ID3. Compilar
npm run build4. Probar
node build/index.jsEl servidor se inicia en stdio y espera mensajes MCP. Presiona Ctrl-C para salir.
Integración con Claude Desktop
Añade esto a tu claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wu-weather": {
"command": "node",
"args": ["/absolute/path/to/wu-weather-mcp/build/index.js"]
}
}
}Reemplaza
/absolute/path/to/wu-weather-mcpcon la ruta real donde clonaste el repositorio. En macOS puedes ejecutarpwddentro de la carpeta clonada para obtenerla.
Reinicia Claude Desktop después de guardar. Tus herramientas meteorológicas aparecerán automáticamente.
Alternativa: pasar credenciales mediante configuración en lugar de .env
{
"mcpServers": {
"wu-weather": {
"command": "node",
"args": ["/absolute/path/to/wu-weather-mcp/build/index.js"],
"env": {
"WU_API_KEY": "your_api_key_here",
"WU_STATION_ID": "your_station_id_here",
"WU_STATION_NAME": "My Weather Station"
}
}
}
}Herramientas disponibles
Herramienta | Parámetros | Descripción |
| — | Temperatura actual, humedad, viento, presión, UV, tasa de precipitación, punto de rocío, radiación solar |
|
| Temperatura diaria máx/mín/prom, ráfaga de viento máxima, precipitación total |
|
| Temperatura, humedad, viento y precipitación hora a hora |
| — | Nombre de la estación, ID, coordenadas, elevación, vecindario |
Ejemplos de prompts
"¿Qué tiempo hace ahora mismo?"
"Muéstrame los últimos 3 días de clima."
"¿Cuál fue el desglose horario de ayer por la tarde?"
"¿Cuál es la elevación de mi estación meteorológica?"
Desarrollo
npm run dev # watch mode — recompiles on save
npm run build # one-off buildEl código fuente está en src/index.ts. Recompila (npm run build) después de cualquier cambio.
Publicar en npm
npm publishUna vez publicado, los usuarios pueden ejecutarlo sin clonar:
{
"mcpServers": {
"wu-weather": {
"command": "npx",
"args": ["-y", "wu-weather-mcp"],
"env": {
"WU_API_KEY": "your_api_key_here",
"WU_STATION_ID": "your_station_id_here"
}
}
}
}Nota: Verifica primero en npmjs.com para confirmar que el nombre del paquete
wu-weather-mcpesté disponible antes de publicar.
Licencia
MIT
Available Tools
4 toolsget_current_conditionsA
Get current weather conditions from the KCALAKEF92 personal weather station (KCALAKEF92) in Lake Forest, CA. Returns temperature, humidity, wind, pressure, precipitation rate, UV index, dew point, and solar radiation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description clearly communicates this is a read-only operation (get current conditions). It lists the return fields, giving the agent a good understanding of what to expect. No contradictions.
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 two sentences, front-loading the purpose and then listing the return fields. Every word is useful and no filler.
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 zero parameters and no output schema, the description adequately explains what the tool returns. It could mention that data is from a specific station (KCALAKEF92) which it does. Without an output schema, listing fields is helpful. A minor gap: it doesn't note if data is live or cached, but overall complete enough.
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 zero parameters and 100% schema description coverage, so the description does not need to add parameter info. Baseline 3 is appropriate.
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 clearly states it returns current weather conditions from a specific personal weather station, listing exactly which metrics (temperature, humidity, etc.). It uniquely identifies the resource and action, distinguishing it from siblings like get_daily_summary.
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 this is for current, real-time conditions versus historical or summary data, which differentiates it from siblings. However, it does not explicitly state when not to use it or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryA
Get daily high/low/avg temperature, total precipitation, and max wind gust for up to the last 7 days from KCALAKEF92 (KCALAKEF92).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to retrieve (1–7, default 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It specifies the exact data returned (temperature, precipitation, wind gust) and the station identifier, which adds transparency. However, it does not mention data availability guarantees or any quirks.
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?
Single sentence that is concise and front-loaded with the key verb and resource. No extraneous 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?
Given the simple schema (1 optional param), no output schema, and no annotations, the description is reasonably complete. It covers what data is returned and the time range. Could mention that data is from a specific station, but it already does.
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 100%, so baseline is 3. The description adds context by stating 'up to the last 7 days' but does not elaborate on the default behavior (default 7 days) beyond what the schema says.
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?
Clearly states the verb 'Get' and specific resource: daily high/low/avg temperature, precipitation, and wind gust for a specific station. It includes the station ID and the time range (up to 7 days). This differentiates it from siblings like get_current_conditions (current) and get_hourly_history (hourly).
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 usage for historical daily summaries, but provides no explicit guidance on when to use this vs. alternatives like get_hourly_history. No mention of when not to use it or limitations beyond the 7-day max.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hourly_historyA
Get hour-by-hour weather history for up to the last 24 hours from KCALAKEF92 (KCALAKEF92). Includes temperature, humidity, wind, and precipitation.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Number of hours to retrieve (1–24, default 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the input schema by listing returned data fields (temperature, humidity, wind, precipitation). Since no annotations are provided, the description carries the burden. It does not disclose potential rate limits, data freshness, or whether historical data beyond 24 hours is unavailable. The behavior is largely inferred as a read-only query.
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 single sentence that conveys the purpose, scope, and key data fields. It is front-loaded and efficient, though it could be slightly more concise by removing the repeated station ID in parentheses.
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 (1 optional parameter, no output schema needed for a simple data list), the description covers the essential information. It lacks return format details but is sufficient for an agent to understand what data it will receive.
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 schema already provides 100% coverage with a clear description for the 'hours' parameter (range 1–24, default 24). The description adds no further parameter details, so the baseline of 3 applies. It does not explain what happens if hours is omitted or out of range.
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 ('Get'), resource ('hour-by-hour weather history'), scope ('up to the last 24 hours'), station ID, and data fields (temperature, humidity, wind, precipitation). This differentiates it from siblings like 'get_current_conditions' (single snapshot) and 'get_daily_summary' (daily aggregates).
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 this tool (to get detailed hourly history for the past 24 hours). It contrasts with siblings by mentioning hour-by-hour granularity and specific fields. However, it does not explicitly state when not to use it or mention alternatives for longer periods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_station_infoA
Get metadata for the KCALAKEF92 weather station: name, ID, neighborhood, country, GPS coordinates, and elevation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 returns metadata (name, ID, location, elevation) and is specific to one station, but does not mention any side effects, data freshness, or access requirements. Since there are no annotations to contradict, a 3 is appropriate for a read-only metadata 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 a single sentence with no wasted words, clearly stating the action and listing the returned fields. It is front-loaded and efficiently communicates the tool's purpose.
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 has zero parameters, no output schema, and no annotations, the description covers the essential information: what it does, which station, and what data it returns. It could optionally mention if the data is static or dynamic, but the current description is sufficient for an agent to use the tool correctly.
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 no parameters and schema description coverage is 100%, so the description need not add parameter info. The description's mention of the specific station and the fields returned provides useful context beyond the empty 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 clearly specifies the verb 'Get' and the resource 'metadata for the KCALAKEF92 weather station', listing exactly which fields are returned (name, ID, neighborhood, country, GPS coordinates, elevation). It distinguishes from siblings like get_current_conditions and get_daily_summary which focus on weather data rather than station metadata.
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 explicitly names the station (KCALAKEF92) and states it returns metadata, implying it's for station information rather than weather data. However, it doesn't explicitly say when not to use it or compare to siblings, though the station-specific nature and listed fields make the context clear.
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.
4 tool updates
v1.0.0- First observed
get_current_conditions - First observed
get_daily_summary - First observed
get_hourly_history - First observed
get_station_info
TDQS
Scored across 4 tools
Each tool targets a distinct aspect of weather data: current conditions, daily summary, hourly history, and station metadata. No overlap in purpose.
All tool names follow a consistent 'get_' prefix followed by a clear noun phrase, maintaining snake_case throughout.
4 tools is appropriate for a personal weather station MCP server, covering the core data retrieval needs without unnecessary bloat.
The set covers current conditions, daily summaries, hourly history, and station info. Missing features like alerts or forecast are reasonable gaps for a station-focused server.
Maintenance
Related MCP Connectors
Read-only airport delay, weather, and 24h forecast tools for AI assistants. Airport-level only.
Current weather and forecasts for any coordinates, backed b… — paid per call (x402/credits), 1 tools
Search NOAA climate stations and datasets, fetch historical weather observations.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that wraps the Ambient Weather REST API. Query your personal weather stations conversationally from Claude Code, Claude.ai, or any MCP-compatible client.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude Desktop to query real-time weather information, forecasts, and history via the OpenWeatherMap API.12 npm98MIT
- FlicenseNot gradedqualityDmaintenanceProvides 12 weather tools for conditions, forecasts, alerts, model imagery, radar, and 205 meteorological calculations, enabling weather data access and analysis through Claude Code.3-
- FlicenseAqualityDmaintenanceIntegrates the US National Weather Service API with Claude Desktop, enabling users to query current conditions and forecasts using natural language.2-