Skip to main content
Glama
Rankintosh

wu-weather-mcp

by Rankintosh

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 install

2. Configurar el entorno

cp .env.example .env

Edita .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 ID

3. Compilar

npm run build

4. Probar

node build/index.js

El 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.json

  • Windows: %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-mcp con la ruta real donde clonaste el repositorio. En macOS puedes ejecutar pwd dentro 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

get_current_conditions

—

Temperatura actual, humedad, viento, presión, UV, tasa de precipitación, punto de rocío, radiación solar

get_daily_summary

days (1–7, predeterminado 7)

Temperatura diaria máx/mín/prom, ráfaga de viento máxima, precipitación total

get_hourly_history

hours (1–24, predeterminado 24)

Temperatura, humedad, viento y precipitación hora a hora

get_station_info

—

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 build

El código fuente está en src/index.ts. Recompila (npm run build) después de cualquier cambio.

Publicar en npm

npm publish

Una 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-mcp esté disponible antes de publicar.

Licencia

MIT

Available Tools

4 tools
get_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (1–7, default 7)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoNumber of hours to retrieve (1–24, default 24)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 4 tool updatesv1.0.0
    • First observedget_current_conditions
    • First observedget_daily_summary
    • First observedget_hourly_history
    • First observedget_station_info

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct aspect of weather data: current conditions, daily summary, hourly history, and station metadata. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent 'get_' prefix followed by a clear noun phrase, maintaining snake_case throughout.

Tool Count5/5

4 tools is appropriate for a personal weather station MCP server, covering the core data retrieval needs without unnecessary bloat.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers