mcpField
A
aemet-mcp

aemet-mcp

ローカル
github.com/jocarrd地図・旅行16 日前に更新

aemet-mcp について

aemet-mcpは、LLMクライアントにスペインの気象庁AEMETの公式気象・気候データを提供するローカルMCPサーバーです。予報や警報に加え、観測、ビーチ・山岳・海上予報、農村部の大気質データを扱います。

主な機能

  1. 01自治体ごとの日別・時間別予報
  2. 02地域および全国の気象警報
  3. 03リアルタイム観測と気候履歴
  4. 04ビーチ、山岳、海上予報
  5. 05農村部のバックグラウンド大気質

活用シーン

  1. 01スペインの自治体の天気予報確認
  2. 02旅行前の有効な警報の確認
  3. 03ビーチや山岳の状況確認
  4. 04過去の気候データの照会と比較

MCP 対応

ローカルstdio経由で、AEMETデータを扱う8つのツールをMCPクライアントに提供します。利用者は無料のAEMET APIキーを各自用意します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jocarrd-aemet": {
"command": "npx",
"args": [
"-y",
"aemet-mcp"
],
"env": {
"AEMET_API_KEY": "<AEMET_API_KEY>"
}
}
}
}
起動コマンドnpx -y aemet-mcp
設定が必要な環境変数
AEMET_API_KEYシークレットAEMET OpenData API key. Free at https://opendata.aemet.es/centrodedescargas/altaUsuario

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmaemet-mcp0.3.3

ツール

8

掲載時のツール一覧 · 6 日前に更新

パラメーター型必須説明
daysintegerいいえ日別予報:含める日数(1-7、既定値は 3)。granularity='hourly' の場合は無視されます。
locationstringはいスペインの自治体。名称(例:'Madrid'、'Logroño'、'A Coruña')または 5 桁の INE コード(例:'28079')で指定します。
granularityenumいいえ'daily'(既定値)は最大 7 日間の概要を返します。'hourly' は今後約 40 時間の時間ごとの値を返します。daily | hourly

詳細

aemet-mcp

npm version License: MIT

LLM クライアント(Claude Desktop、Cursor、Windsurf、Zed、カスタムエージェント)が、AEMET(スペイン国家気象庁)の実データを使ってスペインの天気に関する質問に回答できるようにする、Model Context Protocol サーバーです。

Versión en español · AEMET のオープンデータに対応する 8 つのツールを備えた MCP サーバーです。Node.js 20.19 以上が必要です。

aemet-client を基盤として構築されています。これは snowy.es を支えるものと同じ TypeScript SDK です。

stdio 経由でローカル実行されます。ホストされたインフラストラクチャも、共有 API キーも不要です。 各ユーザーが無料の AEMET キーを用意します。

AEMET API キーを取得する

無料で、約 1 分で取得できます。

  1. opendata.aemet.es/centrodedescargas/altaUsuario を開きます
  2. メールアドレスを入力します
  3. JWT 形式のキーが送られてくるので、コピーします

Claude Desktop から使用する

macOS では ~/Library/Application Support/Claude/claude_desktop_config.json、Windows では %APPDATA%\Claude\claude_desktop_config.json を編集し、次を追加します。

{
  "mcpServers": {
    "aemet": {
      "command": "npx",
      "args": ["-y", "aemet-mcp"],
      "env": {
        "AEMET_API_KEY": "paste-your-key-here"
      }
    }
  }
}

Claude Desktop を再起動して、「今週のマドリードの天気予報は?」、「現在、カタルーニャで発令中の気象警報はありますか?」、「昨年 8 月のログローニョの降水量はどれくらいでしたか?」、「ラ・コンチャの水温は何度ですか?」などと質問してみてください。

Cursor/Windsurf/Zed から使用する

同じ設定オブジェクトを使用します。MCP 対応クライアントはすべて { command, args, env } 形式を受け付けます。設定ファイルの場所については、それぞれのドキュメントを参照してください。

ツール

get_forecast

スペイン国内の 8000 以上の自治体を対象とした、AEMET の公式天気予報です。

ArgumentTypeNotes
locationstring名称("Madrid"、"Logroño"、"A Coruña")または 5 桁の INE コード
daysinteger 1-7 (optional)既定値は 3 です。granularity="hourly" の場合は無視されます
granularity"daily" | "hourly"1 日ごとの概要、または次の約 40 時間の 1 時間ごとの予報
get_warnings

自治州またはスペイン全土を対象とした、発令中の CAP(Common Alerting Protocol)警報です。

ArgumentTypeNotes
areastring"Cataluña"、"Madrid"、"73"(ラ・リオハ)、"esp" …
language"es" | "en" | "ca" | "gl" | "eu" | "any"警報の優先言語です。既定値は "es" です
minSeverity"Minor" | "Moderate" | "Severe" | "Extreme"このしきい値未満の警報を除外します
get_nearest_observation

AEMET の観測所のうち、指定した場所に最も近い地点から取得した最新のリアルタイム観測値(気温、湿度、風、降水量、気圧、視程)です。

ArgumentTypeNotes
locationstring自治体名、INE コード、または小数表記の座標ペア("40.4168,-3.7038")
get_climate_history

ある場所に最も近いAEMET観測所の過去の気候データです。期間内の日別記録、または観測所の長期的な月別平年値を取得できます。

引数型備考
locationstring自治体名、INEコード、または小数形式の座標ペア
mode"range" | "normals""range"(デフォルト)では日別記録を取得します。"normals"では月別平均値を取得します
fromstringYYYY-MM-DD。"range"では必須
tostring (optional)YYYY-MM-DD。デフォルトは今日

AEMETでは、日別の気候データの問い合わせは1回につき186日までに制限されています。そのため、それより長い期間は理由を説明するメッセージとともに拒否されます。1か月を超える期間では、1日ごとのデータではなく、月ごとに集計したデータ(平均最高・最低気温、極値、降水量合計、降雨日数)が返されます。

get_beach_forecast

海水浴シーズン中にAEMETが対象とする591か所のビーチの3日間予報です。午前と午後に分けた空模様、風、波に加え、最高気温、水温、体感温度、UV指数を取得できます。

引数型備考
locationstringビーチ名("La Concha"、"Es Trenc")、ビーチ一覧を表示する沿岸自治体名、または7桁のAEMETビーチコード
municipalitystring (optional)同名のビーチを区別するための自治体名または県名
daysinteger 1-3デフォルトは3

アクセント記号なしでも名前を解決でき、実際の入力でよくある表記の揺れにも対応します("la kontxa"、"playa de la concha, suances")。名前が複数のビーチに一致する場合、サーバーは候補とそのコードを返します。海水浴シーズン外はAEMETが情報の公開を停止するため、このツールはその旨を伝えます。

get_mountain_forecast

AEMET が対象とする 9 地域の山岳気象情報です。区域ごとの予報、凍結高度、自由大気中の風、名称と標高が記載された山小屋や峠の気温を提供します。過去 24 時間の情報も取得できます。

引数型備考
area文字列地域名またはコード:Picos de Europa(peu1)、Pirineo Navarro(nav1)、Pirineo Aragonés(arn1)、Pirineo Catalán(cat1)、Ibérica Riojana(rio1)、Ibérica Aragonesa(arn2)、Sierras de Guadarrama y Somosierra(mad2)、Sierra de Gredos(gre1)、Sierra Nevada(nev1)
mode"forecast" | "past"予報(デフォルト)または過去 24 時間の情報
day整数 0-3予報の何日先かを指定します。デフォルトは 0(今日)です

一般的な別名も使用できます:「Guadarrama」、「Moncayo」、「Urbión」、「Peñibética」、 「Val d'Aran」、「Gredos」。

get_maritime_forecast

AEMET の海上気象情報です。沿岸海域(8 地域)と外洋(3 地域)について、警報、総観状況、区域ごとの予報、翌日の傾向を提供します。

引数型備考
area文字列海域、沿岸の県または地域("Gipuzkoa"、"Girona"、"Mar Menor"、"Gran Sol"、"Alborán")、またはコード:沿岸は 40-47、外洋は 0-2
product"coastal" | "high_seas"名称が両方のプロダクトに存在する場合に、いずれか一方を指定します

AEMET では、風、海況、視程を区域ごとに 1 つのテキストとして記載しているため、このツールは推測で分割せず、そのテキストをそのまま返します。

get_air_quality

AEMET の地方 EMEP/VAG/CAMP 参照ネットワークが測定するバックグラウンド汚染です。対象は地域のバックグラウンド大気であり、都市の大気質ではありません。

引数型備考
station文字列(任意)測定局名または 2 桁のコード("Campisábalos"、"Doñana"、"09")
location文字列(任意)自治体、INE コード、または座標を指定します。最寄りの測定局を特定し、距離を報告します

測定値には AEMET の検証コードが付いています。無効のフラグが付いた値にはその旨が表示されるため、モデルが実際の測定値として引用することはありません。

キャッシュ

AEMET は API のレート制限を設けており、一部のレスポンスは大容量です。たとえば、観測所の一覧だけで926件あり、サーバーは気候に関するクエリのたびにこれを読み込みます。そのため、レスポンスはエンドポイントごとに、デフォルトで10分間メモリにキャッシュされます。

変更するには、API キーと同じ env ブロックに AEMET_CACHE_TTL を設定し、秒数を指定します。キャッシュを無効にするには 0 を指定します。

"env": {
  "AEMET_API_KEY": "paste-your-key-here",
  "AEMET_CACHE_TTL": "1800"
}

キャッシュはサーバープロセス内に保持されるため、MCP クライアントを閉じると消去されます。共有または永続化が必要な場合は、clientConfig を通じて独自の cache アダプターを渡してください。

プログラムからの使用

独自の MCP 統合を構築する場合、このサーバーはライブラリとしても公開されています。

import { createServer } from "aemet-mcp";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const { server } = createServer({ apiKey: process.env.AEMET_API_KEY });
await server.connect(new StdioServerTransport());

API キーの代わりに、既存の AemetClient(たとえば Redis キャッシュに接続されたもの)を渡すこともできます。

import { AemetClient } from "aemet-client";
import { createServer } from "aemet-mcp";

const client = new AemetClient({ apiKey, cache: { adapter: redisAdapter } });
const { server } = createServer({ client });

自治体の解決方法

location には自由形式の名前を指定できます。このパッケージには、aemet-client に同梱されている INE の全自治体データセット(8000件以上)が組み込まれているためです。"logrono"、"Logroño"、"26089" はすべて同じ場所として解決されます。小数形式の座標は、最も近い自治体として解決されます。

自治州については、一般的な別名も使用できます。"Cataluña"、"catalunya"、"Catalonia"、"Euskadi"、"País Vasco"、"Comunitat Valenciana" などです。

ライセンス

MIT © Jorge Carrera

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。