Skip to main content
Glama
Rankintosh

wu-weather-mcp

by Rankintosh
README.md
# wu-weather-mcp

An MCP server that exposes any [Weather Underground](https://www.wunderground.com/) personal weather station (PWS) as tools in Claude. Ask Claude about current conditions, daily summaries, hourly history, and station metadata — all pulled live from your station.

## Prerequisites

- Node.js 18+
- A Weather Underground account with a PWS
- A [Weather Underground API key](https://www.wunderground.com/member/api-keys) (free)
- Your station ID (visible in your WU dashboard, e.g. `KCALAKEF92`)

## Setup

### 1. Clone and install

```bash
git clone https://github.com/your-username/wu-weather-mcp.git
cd wu-weather-mcp
npm install
```

### 2. Configure environment

```bash
cp .env.example .env
```

Edit `.env`:

```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. Build

```bash
npm run build
```

### 4. Test it

```bash
node build/index.js
```

The server starts on stdio and waits for MCP messages. Press Ctrl-C to exit.

---

## Claude Desktop Integration

Add this to your `claude_desktop_config.json`:

- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "wu-weather": {
      "command": "node",
      "args": ["/absolute/path/to/wu-weather-mcp/build/index.js"]
    }
  }
}
```

> Replace `/absolute/path/to/wu-weather-mcp` with the actual path where you cloned the repo.
> On macOS you can run `pwd` inside the cloned folder to get it.

Restart Claude Desktop after saving. Your weather tools will appear automatically.

### Alternative: pass credentials via config instead of .env

```json
{
  "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"
      }
    }
  }
}
```

---

## Available Tools

| Tool | Parameters | Description |
|------|-----------|-------------|
| `get_current_conditions` | — | Current temp, humidity, wind, pressure, UV, precip rate, dew point, solar radiation |
| `get_daily_summary` | `days` (1–7, default 7) | Daily high/low/avg temp, max wind gust, total precip |
| `get_hourly_history` | `hours` (1–24, default 24) | Hour-by-hour temp, humidity, wind, and precip |
| `get_station_info` | — | Station name, ID, coordinates, elevation, neighborhood |

### Example prompts

- *"What's the weather like right now?"*
- *"Show me the last 3 days of weather."*
- *"What was the hourly breakdown yesterday afternoon?"*
- *"What's the elevation of my weather station?"*

---

## Development

```bash
npm run dev      # watch mode — recompiles on save
npm run build    # one-off build
```

Source is in `src/index.ts`. Rebuild (`npm run build`) after any changes.

## Publishing to npm

```bash
npm publish
```

Once published, users can run it without cloning:

```json
{
  "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"
      }
    }
  }
}
```

> **Note:** Check [npmjs.com](https://www.npmjs.com/) first to confirm the package name `wu-weather-mcp` is available before publishing.

## License

MIT

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