# AEMET [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/mmillan76/aemet-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/aemet

## Description
MCP server exposing AEMET (Spanish weather agency) forecasts, station data and warnings.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "aemet": {
    "command": "npx",
    "args": ["-y","@mmillan76/aemet-mcp"]
  }
}
```

## Documentation & README

# aemet-mcp

MCP server that exposes public weather data from [AEMET](https://www.aemet.es)
(Agencia Estatal de Meteorología, Spain) to AI agents and MCP-compatible
clients.

Three tools, well-typed, backed by AEMET's official OpenData API:

- **`get_municipality_forecast`** — daily forecast (up to 7 days) for a
  Spanish municipality, by INE code.
- **`get_station_observation`** — last ~12h of hourly observation data
  (temperature, wind, precipitation…) from a weather station.
- **`get_weather_warnings`** — active weather warnings (CAP alerts) for a
  region or all of Spain.

## Prerequisites

- Node.js 20+
- A free AEMET OpenData API key: request one at
  https://opendata.aemet.es/centrodedescargas/altaUsuario

## Installation

No install needed — run it directly with `npx`:

```bash
npx -y @mmillan76/aemet-mcp
```

The server communicates over stdio, so it's meant to be launched by an MCP
client rather than run standalone in a terminal.

## Configuration

The server reads the API key from the `AEMET_API_KEY` environment variable.
It exits with an error at startup if it's missing.

### Claude Desktop / Claude Code

Add to your MCP client config (e.g. `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "aemet": {
      "command": "npx",
      "args": ["-y", "@mmillan76/aemet-mcp"],
      "env": {
        "AEMET_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

Any other MCP client that supports stdio servers works the same way — point
it at `npx -y @mmillan76/aemet-mcp` with `AEMET_API_KEY` set in the environment.

## Local development

```bash
git clone https://github.com/mmillan76/aemet-mcp.git
cd aemet-mcp
npm install
cp .env.example .env   # fill in AEMET_API_KEY
npm run build
```

Test tool calls interactively with the
[MCP Inspector](https://github.com/modelcontextprotocol/inspector):

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

(the Inspector reads `AEMET_API_KEY` from your shell environment, so export
it — or source `.env` — before running the command above)

## Notes on the AEMET API

AEMET OpenData uses a two-step pattern on every endpoint: the first request
returns a JSON envelope with a `datos` URL, not the actual data; a second
request to that URL returns the real payload. This server hides that detail
— tools just return the final data. Rate limits apply per API key; if you
hit them, the tool returns a clear error instead of retrying silently.

## License

MIT — see [LICENSE](https://github.com/mmillan76/aemet-mcp/blob/HEAD/LICENSE).

