Amtsblick について
Amtsblickは、オーストリアの自治体位置情報と天気予報、河川水位データを組み合わせる個人運営のオープンソースMCPサーバーです。出典、取得時刻、単位を含む地域情報を求めるAIアシスタント向けですが、公式の警報サービスではありません。
主な機能
- 01名称、コード、座標で自治体を検索
- 02天気予報と短時間降水の表示
- 03近隣の水位観測所と河川観測所の検索
- 04州別に高水位の状況を分類
- 05出典、ライセンス、時刻、単位を掲載
活用シーン
- 01オーストリアの自治体の天気を確認
- 02近隣の水位観測所と現在水位を検索
- 03州ごとの高水位状況を確認
MCP 対応
地点検索、天気、降水量、水位のツールをMCPクライアントに公開します。応答には出典とデータ処理の説明が含まれ、公式警報サービスではないことも明記されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://amtsblick.aicodelabs.dev/mcpclaude mcp add --transport http haraldrohan-amtsblick https://amtsblick.aicodelabs.dev/mcp{"mcpServers":{"haraldrohan-amtsblick":{"type":"http","url":"https://amtsblick.aicodelabs.dev/mcp"}}}Cursor で開く{"servers":{"haraldrohan-amtsblick":{"type":"http","url":"https://amtsblick.aicodelabs.dev/mcp"}}}VS Code で開く{"mcpServers":{"haraldrohan-amtsblick":{"type":"http","url":"https://amtsblick.aicodelabs.dev/mcp"}}}{"mcpServers":{"haraldrohan-amtsblick":{"serverUrl":"https://amtsblick.aicodelabs.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
8| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| ort | string | はい | Gemeindename, optional "Name, Bundesland"; oder fünfstellige GKZ; oder Koordinate "Breite, Länge", z. B. "48.04, 14.42". Bei einem Namen gilt die Prognose für den Gemeindemittelpunkt. |
| stunden | integer | いいえ | Vorhersagezeitraum in Stunden ab jetzt, 1 bis 61. Standard 48. |
詳細
Amtsblick
Amtsblick は、オーストリアの公的データを場所ごとに結び付ける MCP サーバーです。AI アシスタントが自治体を尋ねると、出典表記、データ時点、単位とともに、天気や水位を取得します。
Amtsblick は個人によるオープンソースプロジェクトであり、行政機関による公式サービスではありません。
フェーズ 1 では、共通の基盤(場所一覧、出典表記、キャッシュ、利用枠)、天気モジュール(GeoSphere Austria)、水位モジュール(eHYD の水位計)を提供します。以降のモジュールも同じ方式で追加します。
免責事項。 Amtsblick は公式サービスでも警報サービスでもありません。回答には第三者のデータが使われており、遅延、不完全、または誤りを含む場合があります。また、公式の悪天候警報や洪水警報に代わるものではありません。GeoSphere Austria および各州の警報サービスが優先されます。このソフトウェアは保証なしで提供されます(LICENSE を参照)。運用者は、各データソースの利用規約を自ら遵守する責任を負います。 Amtsblick は個人プロジェクトです。Statistik Austria、GeoSphere Austria、BMLUK、および各州の水文サービスは本プロジェクトに関与しておらず、本プロジェクトやデータの加工を承認していません。
ツール
| ツール | 用途 |
|---|---|
ort_finden(text) | 名前、GKZ、または座標で自治体を検索 |
quellen() | データソース、ライセンス、表記、最終取得時刻、残りのリクエスト枠 |
wetter_prognose(ort, stunden = 48) | 6 時間単位の予報と日別の値 |
niederschlag_jetzt(ort) | 今後 3 時間の降水量を 15 分間隔で表示 |
lage_am_ort(ort) | 天気、ナウキャスト、最寄りの水位計を 1 回の呼び出しで取得 |
pegel_in_der_naehe(ort, radius_km = 15) | 周辺の水位観測所を距離順に表示(最大 20 件) |
pegel_an_gewaesser(gewaesser) | 対象の水域にあるすべての観測所 |
hochwasserlage(bundesland?) | 水位が上昇している観測所を段階別に表示 |
ort には自治体名(入力ミスを含む。「St.」と「Sankt」は同じものとして扱われます)を指定します。必要に応じて補足情報 "Name, Bundesland"、5 桁の GKZ、または座標 "Breite, Länge" を付けられます。名前が複数の場所に該当する場合、データの代わりに候補一覧が返されます。
各回答は簡潔な JSON オブジェクトです。zusammenfassung の行で始まり、quellen と hinweise で終わります。quellen の各項目には、出典、ライセンス本文へのリンク付きライセンス情報、指定された表記、リンク、データセット、該当する場合は DOI、データ時点、Amtsblick によるデータ加工方法が含まれます。
導入方法
方法は 4 通りあります。ホスト型サーバーは https://amtsblick.aicodelabs.dev で稼働しています。パッケージは NuGet.org と MCP Registry に io.github.haraldrohan/amtsblick として登録されています。
| 方法 | 対象 | 前提条件 | 状態 |
|---|---|---|---|
| URL コネクター | claude.ai、Claude Desktop、Claude モバイル | なし | 利用可能 |
MCP Bundle(.mcpb) | Claude Desktop、ローカル環境 | なし。 .NET も不要 | 利用可能(プレビュー版) |
dnx による NuGet パッケージ | Claude Code、VS Code、Visual Studio | .NET 10 SDK | 利用可能(プレビュー版) |
| ソースコードから | 開発 | .NET 10 SDK | 利用可能 |
連絡先
User-Agent は Amtsblick/<version> (+<Repo-URL>; <Kontaktadresse>) です。連絡先は各インスタンスの運用者のものであるため、リポジトリには記載されていません。Amtsblick をローカルで運用する場合は、環境変数 Amtsblick__Kontakt で設定してください。
連絡先が設定されていない場合、水位モジュールはデータを取得しません。 天気と場所の検索は、連絡先がなくても動作します。ホスト型サーバーでは運用者が設定しています。
claude.ai、Claude Desktop、Claude モバイル:URL コネクター
設定 → コネクター → 独自のコネクターを追加し、URL として
https://amtsblick.aicodelabs.dev/mcp を指定してください。ログインは不要です。
Claude Desktop ローカル:MCP Bundle
GitHub リリースからamtsblick-<version>-<plattform>.mcpbをダウンロードし、ダブルクリックします。Claude
Desktop はインストール時に連絡先のメールアドレスを尋ねます。インストール済みの .NET は不要です。
プラットフォーム:win-x64、osx-arm64(Apple Silicon)、osx-x64(Intel Mac)、linux-x64。サイズはそれぞれ約45 MBです。
初回起動時に、Amtsblick は Statistik Austria の自治体境界データを一度だけダウンロードします(ダウンロード約90 MB、ディスク上で60 MB、所要時間は1~2分)。
その間、ツールは自治体データの読み込み中であることを知らせる応答を返します。読み込み後、データは%LOCALAPPDATA%\Amtsblickまたは
~/.local/share/Amtsblickに保存されます。
Claude Code
# gehosteter Server
claude mcp add --transport http amtsblick https://amtsblick.aicodelabs.dev/mcp
# lokal über NuGet
claude mcp add amtsblick --env [email protected] -- dnx [email protected] --yes
VS Code および Visual Studio
.vscode/mcp.jsonまたは.mcp.jsonに記述します。
{
"servers": {
"amtsblick": {
"type": "stdio",
"command": "dnx",
"args": ["[email protected]", "--yes"],
"env": { "Amtsblick__Kontakt": "[email protected]" }
}
}
}
ホスト型サーバーを使う場合は、代わりに{ "type": "http", "url": "https://amtsblick.aicodelabs.dev/mcp" }を指定します。
現在のパッケージバージョンはNuGet.orgに記載されています。
ソースコードから
前提条件:.NET 10 SDK。
dotnet build -c Release
dotnet test
サーバーは引数なしでstdio経由で起動します。Claude Code で使うには、ルートフォルダーに.mcp.jsonファイルを作成します(連絡先のメールアドレスが含まれるため、Gitの対象外です)。
{
"mcpServers": {
"amtsblick": {
"type": "stdio",
"command": "dotnet",
"args": ["C:\Pfad\zu\Amtsblick\src\Amtsblick.Server\bin\Release\net10.0\Amtsblick.Server.dll"],
"env": { "Amtsblick__Kontakt": "[email protected]" }
}
}
}
Claude Desktop の場合は、同じエントリをclaude_desktop_config.jsonに記述します。クライアントがサーバーを読み込んでいる間はDLLがロックされます。新しくビルドする前にクライアントを閉じるか、コピーからサーバーを起動してください(dotnet publish -o <Ordner>)。
自治体データはサーバーが初回起動時に自動でダウンロードします。手動で行う場合はscripts/import-gemeinden.shを実行します(Windowsではscripts\import-gemeinden.ps1)。データはリポジトリ内のdata/に保存されます。
セルフホスト
# direkt
[email protected] dotnet run --project src/Amtsblick.Server -c Release -- --http
# als Container
docker build -t amtsblick .
docker run --rm -p 8080:8080 -e [email protected] amtsblick
MCP エンドポイントは/mcp(ステートレスな Streamable HTTP)、状態確認用のエンドポイントは/healthです。
/では簡単なスタートページを、/datenschutzではプライバシー通知を返します。
直接起動した場合、サーバーはhttp://localhost:5210でリッスンし、コンテナー内ではポート8080でリッスンします。
- **HTTPS:**ホスティングプロバイダーまたは前段のリバースプロキシで提供します。サーバー自体が対応するのはHTTPのみです。
- **認証なし:**サーバーが読み取るのは公開データのみです。クライアントIPごとにレート制限が適用されます(
Http:AnfragenProMinute、既定値60)。超過すると429を返します。 - **Originの確認:**ブラウザーからのリクエストは
Http:ErlaubteUrspruenge(既定値はhttps://claude.ai、https://claude.com)およびlocalhostからのみ受け付けます。それ以外には403を返します。Originヘッダーのないリクエスト(サーバー間通信)は許可されます。 - ホスト名:
AllowedHostsには*ではなく公開ホスト名を指定してください(DNSリバインディング対策)。プロキシの背後で運用する場合はHttp:HinterProxyを有効にし、レート制限がX-Forwarded-ForからクライアントIPを取得するようにします。 - **ログ:**記録するのはメソッド、パス、ステータスコード、所要時間のみです。IPアドレス、リクエスト内容、場所は記録しません。
- **水位データの事前読み込み:**コンテナーでは
Module:Wasser:Vorladenが有効です。データは1時間ごとに取得され、取得頻度は1時間に1回のままです。 - **独自インスタンス:**Amtsblickを自分でホストする場合は、ご自身が運営者となります。
Http:Betreiberにご自身の情報を設定し、ビルド前にDATENSCHUTZ.mdを独自のプライバシー通知に置き換えてください。リポジトリ内のファイルはプロジェクト所有者のインスタンスに適用されます。
設定
src/Amtsblick.Server/appsettings.json の Amtsblick セクション。各設定は環境変数としても指定できます(: は __ に置き換えます)。
| 設定 | デフォルト | 説明 |
|---|---|---|
Kontakt | 空 | User-Agent 用の連絡先アドレス。Wasser モジュールでは必須です |
RepoUrl | https://github.com/haraldrohan/Amtsblick | User-Agent に記載するプロジェクト URL |
DatenVerzeichnis | 空 | 自治体データと最新の水位の保存場所。空の場合はリポジトリ内の data/、それ以外の場合はユーザーのローカルアプリケーションデータフォルダー内の Amtsblick です |
AutoImport | true | 自治体データがない場合、起動時に自動で読み込みます |
Module:Wetter:Aktiv | true | Wetter モジュールと lage_am_ort |
Module:Wasser:Aktiv | true | Wasser モジュール |
Module:Wasser:Vorladen | false | ホスト環境のみ:バックグラウンドで毎時水位データを事前読み込みします |
Http:AnfragenProMinute | 60 | HTTP トランスポートにおけるクライアント IP ごとのレート制限 |
Http:ErlaubteUrspruenge | https://claude.ai, https://claude.com | ブラウザーからのリクエストを受け付けるオリジン |
Http:HinterProxy | false | 前段のプロキシからの X-Forwarded-For を使ってクライアント IP を取得します |
Http:Betreiber | 空 | ホームページでの開示に使用する運営者の名前、住所、連絡先 |
起動時に無効になっているモジュールは登録されません。そのツールは表示されず、データの取得も行いません。Module:Wasser:Aktiv は即座にも反映されます。実行中にプログラムファイルと同じ場所にある appsettings.json の値を false にすると、再起動しなくても eHYD からの以降の取得がすべて停止します。
データソースとライセンス表示
使用しているのは、以下の利用許諾済みデータソースのみです。すべて CC BY 4.0 のもとで提供されており、クレジットを表示すれば商用利用も自由です。データにはデータソースのライセンスが適用されます(NOTICE を参照)。コードは MIT ライセンスです。
| データソース | データセット | 表示(原文どおりに記載) | 根拠 |
|---|---|---|---|
| Statistik Austria | OGDEXT_GEM_1、OGDEXT_POLBEZ_1 | データソース:Statistik Austria — data.statistik.gv.at | 利用規約 |
| GeoSphere Austria | nwp-v2-1h-1km (DOI)、nowcast-v1-15min-1km (DOI) | データソース:GeoSphere Austria - https://data.hub.geosphere.at | 利用規約、データセットごとのライセンス |
| eHYD(権利者:BMLUK および各州) | i000501:pegel_aktuell | データソース:ehyd.gv.at | INSPIRE メタデータ |
CC BY 4.0 の要件は、各回答で 2 つの方法により満たしています。要約の末尾には、ライセンスとライセンス文へのリンク、およびデータを換算・要約または加工した旨を表示します。詳細は quellen フィールドに記載します。そこには指定された文言でのクレジット、ライセンスとライセンス文へのリンク、データソースへのリンク、および Amtsblick が変更した内容を記載します。
- Statistik Austria:境界データから自治体の中心点を算出し、行政区名の表記を統一し、ウィーンを全体として追加しました。
- GeoSphere Austria:単位を換算しました。予報ではさらに、u/v から風を算出し、値を時間帯ごとおよび日ごとにまとめました。
- eHYD:ステータスコードを状況、傾向、最新性に置き換え、自治体と距離を追加し、場所、水域、または水位に基づいて選択しました。
回答を共有または公開する場合は、これらの情報を引き継いでください。また、すべての天気の回答には「公式の荒天警報ではありません。」、すべての水位の回答には「公式の警報ではありません。各州の警報サービスが優先されます。」という注意書きが含まれます。
制限と取得パターン
GeoSphere Austria(天気)
- Dataset API の制限は、インスタンス全体で共有される毎秒 5 件、毎時 240 件のリクエストです。超過すると、API は 429 を返します。
- Amtsblick は毎秒最大 4 件のリクエストを送信し、
x-ratelimit-remaining-hourとx-ratelimit-remaining-secondを評価します。現在の状況はquellen()で確認できます。 - 残りのリクエスト数が 20 件未満になると、キャッシュからのみ応答します。その旨は応答に記載されます。
- キャッシュキーは、データセットと小数点以下 2 桁に丸めた座標です。地名の場合は自治体の中心点を使用します。予報は 3 時間、またはメタデータから新しい実行が確認されるまで有効です。Nowcast は 15 分間有効です。同じ地点への同時リクエストは、1 回の取得を共有します。
- メタデータ(
last_forecast_reftime)は、データセットごとに 15 分間に 1 回まで確認します。Nowcast の実行時刻が 1 時間以上前の場合、niederschlag_jetztは「Nowcast は現在最新ではありません」という注記を付けて応答し、時間予報に切り替えます。 - 取得に失敗した場合、同じ地点へのリクエストは 1 分間再試行しません。
- GeoSphere の応答が遅い場合、ツール呼び出しはデータを最大 8 秒(メタデータは 3 秒)待ち、その時点で得られたデータを返します。たとえば、
niederschlag_jetztは予報の時間値で応答します。取得処理はバックグラウンドで続行され、次の問い合わせに備えてキャッシュを更新します。このために 2 回目の取得は行いません。 - 取得するパラメーター:予報は
2t, tp, rain, sf, snowlmt, 10u, 10v, 10fg, tcc, sund、Nowcast はrr, pt, t2m, ff, fxです。kg/m² → mm(1:1)、m/s → km/h、10u/10v→ 風速と風向、秒 → 分に変換します。気象記号syは出力せず、降水タイプptは生の値のまま返します。GeoSphere が公式のコード表を公開していないためです。
eHYD(Pegel)
gis.lfrz.gv.at の robots.txt は User-agent: * / Disallow: / です。これはウェブサイトのクローリングを規定するものであり、API の利用はこのサービス向けに公開されているライセンス(CC BY 4.0)によって規定されます。Amtsblick はクローリングを行わず、オープンデータサービスとして公開されているエンドポイントのみを、次のように控えめに呼び出します。
- 全データの取得は 60 分あたり最大 1 回です。 ホスティング環境では、すべてのユーザーでこの取得を共有します。最新のデータと最後に試行した時刻は
data/pegel_aktuell.jsonに保存されるため、再起動後も制限が適用されます。これは、クライアントがプログラムの起動ごとにサーバーを再起動する stdio では特に重要です。独自のデータディレクトリを持つ複数のインストールは、それぞれ別に数えられます。 - 最初のツール呼び出しで取得を行い、その後 60 分間は保存データのみを読み込みます。同時に行われる呼び出しは、同じ取得が完了するまで待機します。
- ツール呼び出しがない場合、インスタンスが稼働中でも取得は行いません。バックグラウンドタイマー(
Module:Wasser:Vorladen)はホスティング環境での運用を想定しており、デフォルトでは無効です。 - 失敗した試行もその時間帯の取得として数え、再試行は行いません。次の試行まで、最後に取得したデータを返し、
veraltet: trueとして示します。 - 呼び出すのは 3 つの固定アドレスのみです。
/collections(Collection ID の特定のため 1 回だけ呼び出し、その後は ID を保存します)、/collections/{id}/items、および OGC API が利用できない場合に限り WFS レイヤーi000501:pegel_aktuellです。応答内のリンクはたどりません。ホストが 403 または 429 を返した場合、2 つ目の方法で再取得することはありません。 - すべてのリクエストには連絡先を含む User-Agent を付けます。連絡先がない場合、取得は行いません。
- このモジュールは設定ですぐに無効にできます(上記を参照)。
各 Pegel の応答には、最後に取得したデータの時点が示されます。値は Hydrographischer Dienst の値より最大 1 時間古い場合があります。水位状況(低水位/中水位、増水、洪水レベル 1~3)、傾向、データの新しさは、ソースの gesamtcode に基づきます。Amtsblick は独自の警戒レベルを算出しません。文書化されていないコードは「不明」と表示されます。
両サービスの事前確認記録は、docs/vorab-pruefung.md にあります。
Statistik Austria(自治体)
インポートスクリプトからのみ取得し、稼働中には取得しません。地理データではウィーンは 23 の区として登録されています。Amtsblick は市全体を検索できるよう、旧市街の中心地点を使って「Wien」(GKZ 90001)を集約データとして追加します。
データ保護(プライバシーポリシー)
Amtsblick はリクエストやユーザーデータを保存せず、テレメトリーも送信しません。メモリには取得済みソースデータのみが保存され、ディスクには自治体データと最後に取得した Pegel データのみが保存されます。ソースに送信されるのは、座標(0.01° 単位に丸めたもの)または全データの取得リクエストのみです。ホスティングサーバーが記録するのは、IP アドレスを除くメソッド、パス、ステータスコード、所要時間のみです。詳細な説明は DATENSCHUTZ.md にドイツ語と英語で記載されています。ホスティングサーバーでは /datenschutz から閲覧できます。
構成
src/Amtsblick.Core Ortsmodell, Quellenvermerk, Cache, HTTP-Basis, Kontingent, Kern-Tools
src/Amtsblick.Modules.Wetter GeoSphere-Adapter und Tools
src/Amtsblick.Modules.Wasser eHYD-Adapter und Tools
src/Amtsblick.Server MCP-Host (stdio und Streamable HTTP), lage_am_ort, Import, NuGet-Paket
tests/ Tests je Projekt; Fixtures sind gespeicherte Antworten der echten Dienste
scripts/ Import der Referenzdaten, Bau der Programmdateien und MCP Bundles
packaging/ Manifest für das MCP Bundle
docs/ Prüfprotokoll, Stand der Auslieferung
infra/ Einrichtung und Beschreibung des Hostings in Azure
data/ importierte Referenzdaten (nicht eingecheckt)
テストはすべてネットワーク接続なしで実行できます。
ライセンス
コード:MIT。データ:各ソースのライセンスについては NOTICE を参照してください。
貢献に関するガイドライン:CONTRIBUTING.md。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。