mcpField
L
Luxembourg MCP

Luxembourg MCP

リモート
luxembourg-mcp.com法務・行政84 日前に更新
リポジトリ公式サイト

Luxembourg MCP について

Luxembourg MCPは、ルクセンブルクの公共データを一貫したツールとしてAIエージェントやMCPクライアントに提供します。法律や統計からモビリティまでを扱い、APIキーなしで結果に出典URLを付けます。

主な機能

  1. 01公共データを扱う44種類のツール
  2. 02法律・統計データの検索
  3. 03モビリティや最新状況の照会
  4. 04住所・地理空間データの検索
  5. 05各結果に出典URLを付与
  6. 06stdioとStreamable HTTPに対応

活用シーン

  1. 01法律や統計データの検索
  2. 02交通・駐車場・天気の確認
  3. 03住所や公共交通停留所の特定
  4. 04ルクセンブルクのオープンデータ検索

MCP 対応

MCPサーバーは、法律、統計、モビリティ、環境データなど28の公共データシステムを扱う44種類のツールを提供します。クライアントはホスト済みのStreamable HTTPエンドポイントに接続するか、stdioで実行できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.luxembourg-mcp.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
pypiluxembourg-mcp0.7.0

ツール

44
パラメーター型必須説明
pageintegerいいえ
querystringはい
page_sizeintegerいいえ

詳細

Luxembourg MCP

CI PyPI License: MIT

ルクセンブルクの公共データに、キー不要でアクセスできる Model Context Protocol です。

ホスト型エンドポイント — インストール不要: 任意の MCP クライアントから https://mcp.luxembourg-mcp.com/mcp(ストリーミング可能な HTTP)に接続してください。または、uvx luxembourg-mcp を使ってご自身で実行できます。ウェブサイト:luxembourg-mcp.com

Luxembourg MCP は、断片化された公共 API とオープンデータセットを、AI エージェントが直接呼び出せる一貫性のある 44 個のツールにまとめます。法律、公式統計、モビリティ、環境測定、議会、アクセシビリティ、住所、地理空間データ、国のオープンデータカタログを扱います。

  • 44 個の MCP ツール
  • 28 の公共データシステム
  • API キーやアカウントは不要
  • スクレイピングなし
  • すべての結果にソース URL を返します
  • Stdio と Streamable HTTP のトランスポート

起源と謝辞

このプロジェクトは、Thomas Heggelund が作成した Allemannsdata に直接着想を得ています。

Heggelund の当初のアイデアは、ノルウェーの allemannsretten(自然享受権)が示す開放性を公共データにもたらすことでした。公共情報には、簡単にアクセスし、組み合わせ、利用できることが求められます。Allemannsdata は、関連のない多数のデータソースを一貫性のあるキー不要の MCP ツールとして提供することで、エージェントとノルウェーの公共サービスとの間で繰り返される統合作業をなくします。

Luxembourg MCP は、このアイデアをルクセンブルク大公国に適用したものです。ルクセンブルク向けの独立した実装であり、フォーク、公式の地域版、または提携プロジェクトではありません。MCP を通じた公共データカタログという独自のコンセプトに対する謝辞は、Thomas Heggelund と Allemannsdata に帰属します。

利用可能なツール

ツール公開ソース目的
search_datasetsdata.public.lu全国オープンデータカタログを検索します
get_datasetdata.public.luメタデータと現在のリソースを確認します
geocode_addressGeoportail公式住所を特定します
reverse_geocodeGeoportail最寄りの公式住所を検索します
list_geo_collectionsGeoportail OGC APIクエリ可能な地理空間レイヤーを探します
get_geo_featuresGeoportail OGC API範囲を指定してGeoJSONフィーチャーを取得します
get_weather_alertsMeteoLux現在の気象警報を確認します
search_legislationLegilux法令と統合版法令を検索します
search_statisticsSTATEC LUSTAT統計データフローを探します
get_statisticsSTATEC LUSTATラベル付きSDMX観測値を取得します
get_city_parkingVille de Luxembourg市内駐車場のリアルタイム空き状況を確認します
list_cfl_parkingCFLパーク・アンド・ライド施設を一覧表示します
get_cfl_parkingCFLP+Rのリアルタイム利用状況と空き台数を確認します
get_trafficCITA高速道路のリアルタイム交通量を確認します
get_water_levelsWater Management Administration現在の水位観測所の水位を確認します
get_air_qualityEnvironment Administration全国の大気質測定値を確認します
search_chamber_bodiesChamber of Deputies組織、所属、役職を検索します
get_accessibility_figuresDigital Accessibility Observatory全国のアクセシビリティ統計を確認します
get_accessibility_auditsDigital Accessibility Observatory最近の公共部門の監査を一覧表示します
search_transit_stopsPublic Transport Administration全国のGTFS停留所を検索します
get_city_mobilityVille de Luxembourg Mapsモビリティ関連施設をGeoJSONとして取得します
get_weather_observationsMeteoLuxFindelの気温、風、気圧をリアルタイムで確認します
get_public_holidaysdata.public.lu4言語で法定祝日を確認します
search_parliamentary_questionsChamber of Deputies議会質問と回答を検索します
get_housing_pricesObservatoire de l'Habitatコミューン別の住宅売出価格を確認します
get_election_resultsCTIE2023年の国政選挙結果を確認します
get_ev_chargingChargy公共EV充電とリアルタイムの利用可能状況を確認します
get_waste_collectionsEnvironment Administrationコミューン別の今後のごみ収集日を確認します
get_weather_forecastMeteoLux公式予報、UV指数、日の出・日の入りを確認します
get_fuel_pricesMinistère de l'Économie燃料、水素、EV充電の月間価格を確認します
get_public_alertsLU-Alert食品リコールを含む全国警報を確認します
get_commune_leadersMinistère des Affaires intérieuresコミューンごとの現職市長と市会議員を確認します
get_commune_populationCTIEコミューン別、年齢層別、性別の居住人口を確認します
get_pharmacies_on_dutyPharmacie.lu当番薬局の住所と電話番号を確認します
get_electricity_pricesOpen Data Lëtzebuerg15分ごとの前日電力価格を確認します
get_carsharingCFL Mobility利用可能なFLEXカーシェア車両を確認します
get_bike_sharingVël'OK南部の自転車シェアリングのリアルタイム利用状況を確認します
search_tendersPortail des marchés publics公共調達の公募案件を検索します
get_plenary_votesChamber of Deputies会派別・議員別の集計を含む本会議の採決を確認します
get_deputiesChamber of Deputies現職議員の氏名、政党、選挙区、メールアドレスを確認します
lookup_luxembourgishLëtzebuerger Online Dictionnaire翻訳、発音、用例を確認します
get_traffic_eventsCITA道路工事、通行止め、事故をリアルタイムで確認します
get_electricity_gridOpen Data Lëtzebuerg日次の電力需要、電源構成、越境電力潮流を確認します
get_unemploymentADEM全国またはコミューン別の月間求職者数と求人件数を確認します

クイックスタート

Python 3.11 以降が必要です。

python -m venv .venv
. .venv/bin/activate
pip install -e .
luxembourg-mcp --transport http --port 8000

起動後:

インターフェースURL
ツールカタログhttp://127.0.0.1:8000/
MCP エンドポイントhttp://127.0.0.1:8000/mcp
ヘルスチェックhttp://127.0.0.1:8000/health
上流ステータスhttp://127.0.0.1:8000/status

/status は、各ツールの公式上流サービスに到達できるかどうかを報告します。カタログでは、各ツールカードにランプとして表示されます。各上流サービスに対して、ページを読み込む人数にかかわらず、少なくとも 10 分に 1 回、軽量チェックを 1 回実行します(最初の数キロバイトのみを読み取ります)。チェックに 1 回失敗すると上流サービスは 劣化、2 回連続で失敗すると 停止 として扱われます。

Stdio クライアント
{
  "mcpServers": {
    "luxembourg": {
      "command": "luxembourg-mcp"
    }
  }
}
Docker
docker build -t luxembourg-mcp .
docker run --rm -i luxembourg-mcp                                          # stdio (default)
docker run --rm -p 8000:8000 luxembourg-mcp --transport http --host 0.0.0.0  # HTTP

質問の例

MCP クライアントに接続すると、エージェントは次のような質問に回答できます。

  • ルクセンブルクで現在発令中の気象警報は何ですか?
  • CFL のパークアンドライドで空いている駐車スペースはいくつありますか?
  • Mersch の最新の水位はいくつですか?
  • 年金に関する法律を探してください。
  • 人口の数値を含む STATEC のデータセットはどれですか?
  • A6 の最新の交通量測定値は何ですか?
  • A4 で現在、道路工事や車線閉鎖は行われていますか?
  • 最新の路面電車法案について、各政党はどのように投票しましたか?
  • ルクセンブルク語の「Schiertech」はどういう意味ですか?
  • ルクセンブルク市の住所の公式座標を探してください。
  • Hamilius に該当するバス停または路面電車停留所はどれですか?

プロトコルの動作

サーバーは次の処理を行います。

  • 公開するすべてのツール入力スキーマに照らして、引数を検証します。
  • JSON-RPC バッチや、その他のオブジェクト以外の JSON を -32600 Invalid Request で拒否します。
  • 同じエンドポイントと stdio で、MCP 2026-07-28(ステートレス:リクエストごとの _meta、server/discover、キャッシュヒント)に加えて、initialize ハンドシェイク方式のリビジョン 2025-11-25、2025-06-18、2025-03-26 をサポートします。
  • HTTP リクエストでは、MCP-Protocol-Version、Mcp-Method、Mcp-Name ヘッダーの値をリクエスト本文と照合して検証します。
  • ツールの失敗は、サーバーを終了させずに MCP ツールの結果として返します。
  • 大きな上流レスポンスを、エージェントのコンテキストに入れる前に制限します。

組み込みの HTTP サーバーはステートレスで、SSE ストリームを提供しません。デフォルトでは、ブラウザーのオリジンはループバックアドレスからのもののみを受け入れます。ホスト型デプロイでは LUXEMBOURG_MCP_ALLOWED_ORIGINS(カンマ区切りのオリジン一覧、または *)で許可範囲を拡張できます。これにより、許可されたオリジン向けの CORS プリフライトとレスポンスヘッダーも有効になります。公開環境にデプロイする場合は、リバースプロキシまたはアプリケーションゲートウェイで TLS、レスポンスキャッシュ、可観測性を追加してください。

セキュリティとデプロイ

組み込みサーバーには基本的な制御が含まれていますが、本番環境向けの API ゲートウェイの代わりにはなりません。

  • HTTP リクエストボディの上限は 1 MiB です。
  • 上流レスポンスの上限は 25 MiB です。
  • メタデータ由来のダウンロードは、リダイレクト先を含め、信頼できる data.public.lu の HTTPS リソースホストに制限されます。固定された上流 URL では、同じホストへの HTTPS リダイレクトのみが許可されます。
  • DTD エンティティを宣言する上流 XML は解析前に拒否されます。また、ユーザー指定の識別子によって URL のパスセグメントに ./.. を含めることはできません。
  • GTFS ZIP 内の各ファイルは、展開前に展開後のサイズ、暗号化の有無、不審な圧縮率が確認されます。
  • HTTP クライアントの MCP リクエスト数は、デフォルトで 1 分あたり 60 件に制限されます。IPv6 クライアントは /64 プレフィックス単位でグループ化されます。
  • HTTP サーバーが処理する同時接続数はデフォルトで最大 32 件で、30 秒間アイドル状態の接続は閉じられます。
  • Docker イメージは、ダイジェストで固定されたベースイメージ上で、非特権の app ユーザーとして実行されます。

クライアントごとの 1 分あたりの上限を変更するには、LUXEMBOURG_MCP_RATE_LIMIT を設定します。値を 0 にすると、組み込みのレートリミッターは無効になります。レートリミッターは意図的に直接の TCP ピアアドレスを使用し、LUXEMBOURG_MCP_CLIENT_IP_HEADER で明示的に指定されない限り、転送ヘッダーを信頼しません(たとえば、Cloudflare の背後で CF-Connecting-IP を使用する場合)。クライアントがヘッダーを偽装して制限を回避できてしまうため、信頼できるプロキシがそのヘッダーを管理している場合にのみ設定してください。同時接続数の上限を変更するには、LUXEMBOURG_MCP_MAX_CONNECTIONS を設定します。上限を超えた接続は直ちに閉じられます。

ツールの出力は、信頼できない外部データです。データセットの説明、法律のタイトル、その他の公開テキストには、誤解を招く指示や敵対的な指示が含まれる場合があります。MCP クライアントとエージェントホストは、ツールの結果をシステム指示ではなくデータとして扱う必要があります。また、ここで返された内容に対して強力な兄弟ツールを実行する前に、確認やポリシーチェックを必須にしてください。

テスト

デフォルトのテストスイートは決定論的で、ネットワークを使用しません。JSON-RPC の動作、スキーマの検証、プロバイダーのパーサー、カタログのパッケージング、および 28 個すべてのツールの tools/call コントラクトを対象としています。

PYTHONPATH=src python -m unittest discover -s tests -v

オプトインのライブテストスイートでは、実際の上流サービスをすべて呼び出します。

LUXEMBOURG_MCP_LIVE=1 PYTHONPATH=src \
  python -m unittest tests.test_live_tools -v

ライブテストは、データソースが利用できない場合や公開データが変更された場合に失敗することがあります。また、STATEC、air-quality、Chamber、GTFS の大容量リソースもダウンロードします。

現在の制限事項

  • リアルタイムの出発情報と経路計画を提供する公式 ATP API の利用には、個人用アクセスキーが必要です。このプロジェクトでは代わりに、公式 GTFS フィードから取得した、キー不要の静的な停留所情報を公開しています。
  • キャッシュには上限がありますが、単一のプロセス内でのみ有効です。複数のワーカー間でキャッシュデータは共有されません。
  • 上流データの可用性、更新頻度、スキーマ、ライセンスは、各データ提供者の管理下にあります。
  • ツールの対応範囲は、まだ Allemannsdata と同等ではありません。候補には、議会での投票、裁判所の判決、過去の気象情報、EV 充電、道路工事、その他の環境測定データが含まれます。

独立性とデータの所有権

Luxembourg MCP はコミュニティプロジェクトです。Thomas Heggelund、Allemannsdata、ルクセンブルク政府、または公開するデータを所管する機関とは提携していません。

このプロジェクトは上流データを所有していません。各データ提供者のライセンスと利用規約は引き続き適用されます。ツールの結果には上流のソース URL が保持されるため、エージェントやユーザーは正式な記録を確認できます。

ライセンス

Luxembourg MCP のソースコードは MIT ライセンスで公開されています。上流の公開データには、それぞれのデータ提供者が定める別個のライセンスが適用されます。


mcp-name: io.github.amirdaraee/luxembourg-mcp

コメント

MCP は初めてですか?

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

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