aemet-mcp
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., "@aemet-mcp¿Qué tiempo hará mañana en Barcelona?"
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.
aemet-mcp
npm:
@rldona/aemet-mcp·npx -y @rldona/aemet-mcp
Servidor MCP (Model Context Protocol) para el tiempo oficial de España. Da a Claude Desktop, Cursor y cualquier cliente MCP acceso a la API pública OpenData de AEMET: predicción por municipio, observación de estaciones y avisos meteorológicos, con los datos ya resueltos y formateados en texto legible.
🧭 5 herramientas tipadas: buscar municipio, predicción diaria, predicción horaria, observación de estación y avisos por comunidad autónoma.
🇪🇸 8132 municipios del padrón del INE bundleados: resuelve nombres a código INE sin llamadas extra, tolerante a acentos y mayúsculas.
⚙️ Un solo
npx, sin backend propio. Caché en memoria y reintentos ante fallos transitorios de AEMET.🔒 Sin datos inventados: si un endpoint de AEMET falla, se propaga un error claro.
📚 También librería: importa el núcleo de AEMET (
AemetClient, resolvers, avisos, formateadores) en cualquier backend Node/TS — ver Uso como librería.
Por qué
AEMET trabaja con códigos INE de 5 dígitos, sirve los datos en dos pasos, con codificaciones inconsistentes (UTF-8/latin1 según el recurso, a veces con mojibake) y los avisos como un tar.gz de XML (CAP). Este servidor esconde toda esa fontanería: le pides el tiempo de "Málaga" y te devuelve texto legible, sin códigos ni JSON crudo.
Related MCP server: IPMA MCP Server
Requisitos
Node.js ≥ 18
Una API key gratuita de AEMET OpenData.
Obtener la API key
Ve a https://opendata.aemet.es/centrodedescargas/inicio → "Solicitar API Key".
Introduce tu email; recibirás la key por correo (es un token largo tipo JWT).
Guárdala; se pasa al servidor por la variable de entorno
AEMET_API_KEY.
Uso con Claude Desktop
Edita claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"aemet": {
"command": "npx",
"args": ["-y", "@rldona/aemet-mcp"],
"env": { "AEMET_API_KEY": "TU_KEY" }
}
}
}Reinicia Claude Desktop y pregúntale: "¿Qué tiempo hará mañana en Cádiz?" o "¿Hay avisos meteorológicos en Cataluña?".
Uso con Cursor
En ~/.cursor/mcp.json (o Settings → MCP → Add):
{
"mcpServers": {
"aemet": {
"command": "npx",
"args": ["-y", "@rldona/aemet-mcp"],
"env": { "AEMET_API_KEY": "TU_KEY" }
}
}
}Herramientas
Herramienta | Entrada | Devuelve |
|
| Municipios coincidentes + código INE. |
|
| Predicción diaria (1-7 días): máx/mín, cielo, prob. lluvia, viento. |
|
| Predicción hora a hora (hoy y mañana). |
|
| Última observación (por defecto Madrid-Retiro). |
|
| Avisos meteorológicos vigentes (nivel, zona, periodo). |
Los nombres se resuelven a código INE con tolerancia a acentos/mayúsculas; si un nombre es ambiguo (p. ej. "Villanueva"), la herramienta devuelve las opciones con su código para desambiguar.
Ejemplos de salida
prediccion_diaria — Madrid, 2 días
Predicción diaria — Madrid (Madrid)
Elaborada: 2026-07-19 07:23:09
domingo 19/07
Máx 36 °C / Mín 22 °C | Cielo: Poco nuboso | Prob. precip.: 0% | Viento: SO 15 km/h
lunes 20/07
Máx 35 °C / Mín 21 °C | Cielo: Despejado | Prob. precip.: 0% | Viento: SO 20 km/hobservacion_estacion — sin argumentos (Madrid-Retiro)
Última observación — MADRID RETIRO (estación 3195)
Hora (UTC): 2026-07-19T07:00:00+0000
Temperatura: 21.7 °C
Humedad: 41 %
Precip. (última hora): 0 mm
Viento: 1.4 m/s del 143°
Presión: 939.2 hPaavisos — Andalucía
Avisos meteorológicos vigentes — Andalucía
Elaborado: 2026-07-18 21:50:01
52 avisos (12 naranja, 40 amarillo). Nivel máximo: NARANJA.
🟠 NARANJA (12)
• Cuenca del Genil: Temperaturas máximas · 19/07 13:00 → 19/07 20:59 · Temperatura máxima: 40 ºC. · prob. 40%-70%
...Comunidades autónomas válidas para avisos
Andalucía, Aragón, Asturias, Islas Baleares, Canarias, Cantabria, Castilla y León, Castilla-La Mancha, Cataluña, Extremadura, Galicia, Comunidad de Madrid, Región de Murcia, Navarra, País Vasco, La Rioja, Comunidad Valenciana, Ceuta, Melilla. Se aceptan alias comunes (p. ej. "euskadi", "madrid", "valencia").
Uso como librería
Además del servidor MCP, el paquete exporta su núcleo de AEMET como librería, para consumirlo desde cualquier backend Node/TS (una web del tiempo, un cron de avisos, etc.) sin pasar por MCP. Toda la fontanería difícil ya está resuelta: patrón de dos pasos, codificación inconsistente + reparación de mojibake, caché con TTL, reintentos con backoff, dataset de municipios del INE, áreas CAP y parseo de avisos (tar + CAP XML).
⚠️ La API key va siempre en el servidor (variable de entorno), nunca en el navegador.
import {
AemetClient,
resolverMunicipio,
resolverArea,
obtenerAvisos,
formatDiaria,
type PrediccionDiariaMunicipio,
} from "@rldona/aemet-mcp";
const client = new AemetClient({ apiKey: process.env.AEMET_API_KEY! });
// 1) Nombre -> código INE (offline; dataset del INE bundleado, sin gastar cuota)
const madrid = resolverMunicipio("Madrid"); // { codigo: "28079", nombre: "Madrid" }
// 2) Predicción diaria TIPADA (dos pasos + encoding + caché ya resueltos)
const [pred] = await client.fetchJson<PrediccionDiariaMunicipio[]>(
`/prediccion/especifica/municipio/diaria/${madrid.codigo}`,
);
console.log(pred.prediccion.dia[0]?.temperatura); // { maxima, minima, dato, ... }
// (opcional) texto legible ya formateado
console.log(formatDiaria(pred, 3));
// 3) Avisos vigentes de una CCAA (descomprime el tar.gz y parsea el CAP por ti)
const andalucia = resolverArea("Andalucía"); // { codigo: "61", nombre: "Andalucía" }
const { avisos } = await obtenerAvisos(client, andalucia.codigo);Qué se exporta
Categoría | Exports |
Cliente |
|
Encoding |
|
Municipios |
|
Áreas / avisos |
|
Estaciones |
|
Formateadores |
|
Bajo nivel |
|
Tipos |
|
El AemetClient acepta opciones (maxRetries, backoffBaseMs, fetchImpl,
sleep) además de apiKey. Los tipos van incluidos (dist/lib.d.ts).
📖 Referencia completa (todas las funciones, tipos, rutas de endpoint y recetas para una web del tiempo): docs/library.md.
Cómo funciona (interno)
Patrón de dos pasos de AEMET: la primera respuesta trae
{ estado, datos: url }; el contenido real se descarga en un segundo GET. Encapsulado enAemetClient.Encoding: AEMET mezcla UTF-8 y latin1 según el recurso/nodo CDN (y a veces declara mal el
charset, produciendo mojibake). Se auto-detecta la codificación y se repara el mojibake; los sobres de error van en latin1. Ver ADR-0012.Estados
200/401/404/429mapeados a errores claros; reintentos con backoff ante429y fallos de red/5xx transitorios.Avisos:
tar.gzde CAP XML descomprimido y parseado sin dependencias.Caché en memoria con TTL: ~10 min predicción/avisos, ~5 min observación, 24 h inventario de estaciones.
Documentación
Documentación funcional — capacidades y casos de uso.
Arquitectura técnica — módulos, flujos y diagramas.
Referencia de herramientas — entradas, salidas, errores.
Notas de la API de AEMET — particularidades del upstream.
Desarrollo
npm install
npm test # unitarios (fetch mockeado; sin API key)
npm run typecheck
npm run build
# Test de integración real contra AEMET:
AEMET_API_KEY=xxx npx vitest run test/integration.aemet.test.ts
# Probar con el MCP Inspector:
AEMET_API_KEY=xxx npm run inspectorRegenerar el dataset de municipios
src/data/municipios.json se genera del diccionario oficial del INE:
node scripts/generate-municipios.mjs # descarga y parsea el padrón del INECréditos y licencia
Datos meteorológicos: © AEMET. Uso de la información autorizado citando a AEMET como autora. Dataset de municipios: INE.
Licencia del software: MIT.
Available Tools
5 toolsavisosAvisos meteorológicosA
Avisos meteorológicos vigentes (temperaturas, lluvia, viento, tormentas, costeros, etc.) de una comunidad autónoma española, con su nivel (amarillo/naranja/rojo), zona afectada y periodo. Fuente: avisos CAP de AEMET.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Comunidad autónoma: nombre (p. ej. 'Cataluña', 'Andalucía') o código de área de 2 dígitos. Válidas: Andalucía, Aragón, Asturias, Islas Baleares, Canarias, Cantabria, Castilla y León, Castilla-La Mancha, Cataluña, Extremadura, Galicia, Comunidad de Madrid, Región de Murcia, Navarra, País Vasco, La Rioja, Comunidad Valenciana, Ceuta, Melilla. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the data source (AEMET CAP), the types of warnings covered, and the return components, giving users a good sense of what to expect. It does not detail output shape or error behavior, but that is reasonable for a read-only query 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, information-dense sentence that elegantly conveys the purpose, scope, output fields, and data source without redundancy.
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 simplicity (one parameter, no output schema), the description is quite complete: it specifies what is returned and the geographic scope. It falls just short of explicitly stating the exact return format, but the mentioned attributes sufficiently convey the expected data structure.
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%, with the `area` parameter fully documented including examples and valid values. The tool description only adds that area refers to a Spanish autonomous community, which provides marginal additional context. 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 identifies the tool as providing current meteorological warnings for a Spanish autonomous community, including specific attributes like level, affected area, and period. This distinguishes it from sibling tools involving forecasts and observations.
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 the tool is used to retrieve active warnings for an autonomous community, making the usage context clear. However, it does not explicitly mention alternatives or when not to use this tool, but the distinction from siblings is apparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buscar_municipioBuscar municipioA
Busca municipios españoles por nombre y devuelve su código INE de 5 dígitos. Úsala PRIMERO cuando el usuario dé un nombre de pueblo/ciudad, porque las predicciones necesitan el código INE. El match tolera acentos y mayúsculas.
| Name | Required | Description | Default |
|---|---|---|---|
| nombre | Yes | Nombre del municipio a buscar, p. ej. 'Málaga' o 'San Sebastián'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral transparency. It discloses that the match 'tolera acentos y mayúsculas' and that the return is a 5-digit code. However, it does not specify behavior for ambiguous names (multiple municipios with the same name) or no-match cases, which are realistic with Spanish municipalities. This is a partial disclosure, not fully 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 description is three sentences, each with a distinct and essential piece of information: what it does, when to use it, and its matching tolerance. It is front-loaded with the core action and contains no filler or repetition. Every sentence earns its place, making it highly concise and well-structured.
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?
The tool is simple (one parameter, no output schema), so the description needs to cover purpose, usage, and return value. It does cover these, along with matching tolerance. However, it omits details about return format (e.g., plain string vs. structured object) and edge cases (duplicate names, not found). These gaps mean the description is not fully complete for an agent that may need to handle such situations.
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 covers the only parameter 'nombre' with a clear description and example, achieving 100% schema description coverage. The tool description adds the note about tolerance for accents/case, which is more about matching behavior than parameter format. Since the schema does the heavy lifting, a baseline score of 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 the tool's purpose: 'Busca municipios españoles por nombre y devuelve su código INE de 5 dígitos.' It uses a specific verb ('busca'), a resource ('municipios españoles'), and the expected output ('código INE de 5 dígitos'). This distinguishes it from the sibling weather tools (prediccion_diaria, observacion_estacion, etc.) as a lookup/geocoding utility.
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 provides explicit usage guidance: 'Úsala PRIMERO cuando el usuario dé un nombre de pueblo/ciudad, porque las predicciones necesitan el código INE.' This tells the agent when to invoke it (before any prediction tool) and why (the predictions depend on the INE code). It effectively implies the alternative tools but doesn't exclude when not to use it, which is acceptable given the clear priority context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observacion_estacionObservación de estaciónA
Última observación meteorológica convencional de una estación de AEMET: temperatura, humedad, viento, precipitación y presión. Acepta el nombre de la estación/ciudad o su identificador idema. Si se omite, usa Madrid-Retiro.
| Name | Required | Description | Default |
|---|---|---|---|
| estacion | No | Identificador idema (p. ej. '3195') o nombre de estación/ciudad (p. ej. 'Madrid, Retiro'). Si se omite, se usa Madrid-Retiro (3195). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It explains input options (station name or idema) and the default to Madrid-Retiro, which is useful. However, it does not disclose error behavior, data availability, or the response format.
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?
Two sentences that are both informative and efficiently worded; no filler words.
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 single-optional-parameter read tool, the description covers what the tool returns and how to specify input. The lack of an output schema is partly mitigated by listing the data fields returned, though error/edge-case behavior is not mentioned.
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 description fully covers the 'estacion' parameter (100% coverage), including examples and default. The tool description repeats the same information without adding new meaning, so 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?
States clearly that it returns the latest conventional meteorological observation from an AEMET station, listing measured variables (temperature, humidity, wind, precipitation, pressure). This distinguishes it from sibling forecast and warning 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?
Provides clear context: use for the latest observation. It does not explicitly mention alternatives like prediccion_diaria or prediccion_horaria, but the distinction is evident from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediccion_diariaPredicción diariaA
Predicción meteorológica diaria (hasta 7 días) de un municipio español: temperatura máx/mín, estado del cielo, probabilidad de precipitación y viento.
| Name | Required | Description | Default |
|---|---|---|---|
| dias | No | Número de días a incluir (1-7). Por defecto 7. | |
| municipio | Yes | Municipio: nombre (p. ej. 'Madrid') o código INE de 5 dígitos (p. ej. '28079'). Si el nombre es ambiguo, usa antes buscar_municipio para obtener el código. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It discloses the type of data returned (temperature, sky, precipitation, wind) and the scope (Spanish municipality, up to 7 days). It does not disclose error handling, data source, or update frequency, but for a read-only forecast tool this is acceptable, though not rich.
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, concise sentence that front-loads the core purpose and key output variables. It is appropriately sized and contains no waste.
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?
The description covers the main return values and the scope, while the schema provides detailed parameter semantics. Although there is no output schema, the description's enumeration of output variables (temperatura, estado del cielo, precipitación, viento) gives a clear picture of what to expect. It lacks explicit mention of response structure, but this is not critical for a straightforward forecast tool.
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 covers 100% of parameters with detailed descriptions, including examples and guidance for 'municipio' and the 1-7 range for 'dias'. The description's mention of 'hasta 7 días' and 'municipio español' adds no additional meaning beyond what the schema already provides.
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 the tool provides a daily weather forecast for a Spanish municipality, including specific variables (max/min temperature, sky condition, precipitation probability, and wind). The word 'diaria' (daily) and the listed variables distinguish it from siblings like prediccion_horaria and observacion_estacion.
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 daily forecasts up to 7 days, and the 'diaria' label makes the temporal scope clear. The parameter schema explicitly advises using buscar_municipio for ambiguous municipality names, which is a useful guideline. However, the description itself does not directly mention when to choose this tool over prediccion_horaria or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediccion_horariaPredicción horariaA
Predicción meteorológica hora a hora de un municipio español para el día en curso y los siguientes: temperatura, cielo, precipitación y viento por hora.
| Name | Required | Description | Default |
|---|---|---|---|
| dias | No | Días a incluir (1-2): hoy y mañana. Por defecto 2. | |
| municipio | Yes | Municipio: nombre (p. ej. 'Madrid') o código INE de 5 dígitos (p. ej. '28079'). Si el nombre es ambiguo, usa antes buscar_municipio para obtener el código. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the delivered information (temperature, sky, precipitation, wind per hour) and the temporal scope (current and following days), but does not mention potential errors, data source, or limitations (e.g., limited to Spain, max 2 days). It is neither misleading nor overly opaque, but lacks deeper behavioral detail.
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, concise phrase that front-loads the core purpose ('Predicción meteorológica hora a hora') and includes the key variables. Every word adds value, 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?
For a simple tool with 2 parameters and no output schema, the description covers the essential information: what it does, the geographical scope (Spanish municipality), and the forecast variables. It could be enhanced with a brief note on how it differs from 'prediccion_diaria' or that it covers up to 2 days (though that is in the schema). Overall, it is sufficiently complete for an agent to select and invoke 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 provides descriptions for both parameters ('municipio' and 'dias') with 100% coverage. The tool description adds no extra parameter semantics beyond what the schema already offers. Since coverage is high, the baseline score of 3 is appropriate; the description does not compensate or add value.
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 provides hourly (hora a hora) meteorological forecasts for a Spanish municipality, listing the specific variables (temperature, sky, precipitation, wind). This distinguishes it from sibling tools like 'prediccion_diaria', which would be daily, and 'observacion_estacion', which is observational. The resource and granularity are explicit.
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 hourly forecasts, but does not explicitly state when to use it over siblings such as 'prediccion_diaria' or 'observacion_estacion'. It provides no exclusions or alternative recommendations. The schema does hint at using 'buscar_municipio' for ambiguous municipality names, but this is not in the tool description itself.
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.
5 tool updates
v0.2.1- First observed
avisos - First observed
buscar_municipio - First observed
observacion_estacion - First observed
prediccion_diaria - First observed
prediccion_horaria
TDQS
Scored across 5 tools
Each tool targets a distinct weather data type: municipality lookup, daily forecast, hourly forecast, station observation, and weather warnings. There is no meaningful overlap between them, and the descriptions clarify the differences between daily and hourly forecasts.
All tool names use Spanish snake_case, but the patterns vary: verb_noun (buscar_municipio), noun_adjective (prediccion_diaria, prediccion_horaria), noun_noun (observacion_estacion), and a single noun (avisos). Despite the mix, the naming is readable and consistently in Spanish.
Five tools is well-scoped for a weather server covering search, forecasts (daily and hourly), current observations, and warnings. Each tool serves a distinct purpose without bloat.
The core AEMET API surface is covered: municipality search, both forecast granularities, station observations, and active warnings. Minor gap: no direct current-weather tool for a municipality (only station observations), but this is easily worked around using the search and observation tools.
Maintenance
Related MCP Connectors
Global weather via Open-Meteo: forecast, ERA5 archive, marine, air quality, geocoding, elevation.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Get current weather for any city and create images from your prompts. Streamline planning, reports…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables weather data retrieval and visualization with support for geocoding, multi-day forecasts, historical weather queries, and natural language processing through LangChain integration. Supports both current and historical weather data with interactive charts and multiple language support.MIT
- FlicenseAqualityDmaintenanceProvides access to Portuguese weather data from IPMA (Instituto Português do Mar e da Atmosfera), including weather forecasts, meteorological warnings, seismic data, UV index, and real-time observations from weather stations across Portugal.6-
- AlicenseAqualityAmaintenanceEnables AI models to access Swiss weather and climate data from MeteoSwiss, including current observations, forecasts, and warnings.6MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to get current weather, forecasts, rain predictions, compare weather between cities, and get activity recommendations using natural language prompts.2-