🙄

MLIT DATA PLATFORM MCP Server を触ってみた:国交省データをLLMから簡単に扱えるようにするMCPサーバー

に公開

国土交通省が公開している 国土交通データプラットフォーム の API を、
もっと手軽に使えるようにしたオープンソース「mlit-dpf-mcp」を試してみました。

→ GitHub: https://github.com/MLIT-DATA-PLATFORM/mlit-dpf-mcp
→ 公式ページ: https://www.mlit-data.jp/#/Page?id=apps_mcp

🛠 セットアップ

リポジトリを clone します。

git clone https://github.com/MLIT-DATA-PLATFORM/mlit-dpf-mcp
cd mlit-dpf-mcp

仮想環境を作成&有効化。

python -m venv .venv
.venv\Scripts\activate      # Windows
source .venv/bin/activate   # macOS/Linux

依存ライブラリをインストール

pip install -e .
pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

次に、国土交通データPFの API キーを .env に設定します。
APIキーの取得方法はこちらを参照。

MLIT_API_KEY=あなたのAPIキー

サーバー起動:

python -m src.server

これだけでローカルで MCP Server が走ります。

💻 Claude Desktop につなぐ

Claude Desktop はローカルの MCP サーバーを「ツール」として認識できます。
設定ファイルの mcpServers に MLIT サーバーを登録しましょう。

例:claude_desktop_settings.json(抜粋)

{
  "mcpServers": {
    "mlit-dpf-mcp": {
      "command": "......./mlit-dpf-mcp/.venv/Scripts/python.exe",
      "args": [
        "....../mlit-dpf-mcp/src/server.py"
      ],
      "env": {
        "MLIT_API_KEY": "your_api_key_here",
        "MLIT_BASE_URL": "https://www.mlit-data.jp/api/v1/",
        "PYTHONUNBUFFERED": "1",
        "LOG_LEVEL": "WARNING"
      }
    }
  }
}

commandとargsは必ず、実際のパスに変更してください。
your_api_key_hereは必ず、手順1で取得したAPIキーに置き換えてください。

※ 設定後にClaude Desktopを再起動


🔍 Claude Desktopで使用してみる

都庁付近で最も交通量の多い道路は。

もう少し難しいケースを想定し、分析レポートを作成させてみた。

渋谷駅、新宿駅、池袋駅について、
各駅を中心に半径1000mの範囲でデータを検索。
カテゴリ別の件数表を作成し、
3地点の相違点を「多いカテゴリ・少ないカテゴリ」の観点で比較。
さらに、その違いから推測できる街の特徴や課題を5つ箇条書きでまとめて。
渋谷駅、新宿駅、池袋駅の周辺データを分析して、各エリアの特徴を比較しますね。

まず各駅周辺のデータを検索します。3駅周辺のデータ分析が完了しました。カテゴリ別の件数表と、そこから見える各エリアの特徴をまとめます。

## 📊 カテゴリ別データ件数比較表

| カテゴリ | 渋谷駅 | 新宿駅 | 池袋駅 | 説明 |
|---------|--------|--------|--------|------|
| **総データ数** | **1,083** | **3,347** | **1,557** | - |
| 国土数値情報 (nlni_ksj) | 840 | 996 | 920 | 公共施設・学校等 |
| 人流データ (lpfs) | 72 | **1,284** | 336 | 人の流れ・混雑度 |
| 洪水浸水データ (ffd) | 40 | **848** | 224 | 災害リスク情報 |
| 混雑データ (rtc) | 48 | **137** | 22 | リアルタイム混雑 |
| 道路施設 (rsdb) | 47 | 26 | 38 | 橋梁・歩道橋等 |
| 工事データ (cals) | 15 | 22 | 5 | 建設・設計情報 |
| 道路計測 (mms) | 0 | **20** | 0 | モバイル計測 |
| 地理情報 (ngi) | 8 | 2 | 0 | 地名・地理情報 |

## 🔍 3地点の相違点分析

### **新宿駅の特徴(圧倒的にデータ量が多い)**
- **多いカテゴリ**: 人流データ(1,284件)、洪水データ(848件)、混雑データ(137件)
- **特異点**: モバイルマッピングデータが新宿のみ存在(20件)

### **渋谷駅の特徴(バランス型)**
- **多いカテゴリ**: 道路施設データ(47件)、混雑データ(48件)
- **特徴**: 工事データが比較的多め(15件)、地理情報が最多(8件)

### **池袋駅の特徴(中間規模)**
- **多いカテゴリ**: 人流データ(336件)、洪水データ(224件)
- **少ないカテゴリ**: 混雑データ(22件)、工事データ(5件)、地理情報(0件)

## 💡 3駅の違いから推測される街の特徴と課題

1. **新宿は「防災・人流管理」が最重要課題のエリア**
   - 洪水浸水想定データが848件と突出しており、低地や河川近接による浸水リスクへの備えが重視されている。人流データも1,284件と圧倒的に多く、日本最大のターミナル駅として膨大な人の流れを管理・分析する必要性が高い。

2. **渋谷は「再開発と交通インフラ整備」が進行中**
   - 工事データが15件と3駅で最多で、継続的な再開発プロジェクトが進行中。道路施設データも47件と多く、複雑な立体交差や歩道橋などの交通インフラが高密度に整備されている渋谷スクランブル交差点周辺の特性を反映。

3. **池袋は「災害対策の必要性が高い一方、デジタル化が遅れている可能性**
   - 洪水データが224件と多く、豊島区の低地部分や谷端川流域の水害リスクに対応。一方で混雑データ(22件)や工事データ(5件)が少なく、リアルタイムモニタリングや都市更新のデジタル対応が新宿・渋谷に比べて遅れている可能性。

4. **新宿のみモバイルマッピングデータが存在し、最先端の都市管理を実施**
   - MMS(モバイルマッピングシステム)による道路空間の詳細な3D計測が新宿でのみ実施されており、自動運転やスマートシティ化に向けた先行的な取り組みが進んでいる。渋谷・池袋では未実施で、都市インフラのデジタルツイン化に格差。

5. **渋谷は地理情報が最も充実し、詳細な空間管理が行われている**
   - 地理情報データが8件と最多で、複雑な地形や再開発エリアの境界管理、エリアマネジメントに活用。池袋では地理情報がゼロで、空間データの整備・活用に大きな差があり、これがエリア開発の質や効率性に影響している可能性。

Claude が内部で MLIT MCP の検索ツールを呼び出し、
結果をカテゴリ別に整えて自然文で返してくれます。
API仕様を覚えなくてOK――これが MCP 連携の強み。

🔧主な機能

Category MCP Tool What it does Key params (examples) Notes
Search search キーワードで検索。並べ替え・件数指定可。 keyword, limit, offset, sort (例:updated_at:desc) まずはこれで当たりをつける
Search (Geo) search_by_location_rectangle 矩形(BBox)に交差するデータを検索。 min_lat,min_lng,max_lat,max_lng 地図UIと相性◎
Search (Geo) search_by_location_point_distance 中心点+半径(m)の円内で検索。 lat,lng,distance 駅周辺検索に便利
Search (Attr) search_by_attribute カタログ名/データセット/都道府県/市区町村など属性で検索。 catalog,dataset,prefecture,municipality 絞り込み用途
Search (Mesh) get_mesh 指定メッシュに含まれるデータを取得。 mesh_code 格子単位の集計・比較に
Detail get_data データの詳細情報を取得。 id 本文・メタ一式
Detail (Lite) get_data_summary データの要約(ID・タイトル等)。 id 一覧向け軽量版
Catalog get_data_catalog データカタログ/データセットの詳細。 id 収録範囲や構造を確認
Catalog (Lite) get_data_catalog_summary カタログ/データセットの要約。 id タイトル・説明など
Download get_file_download_urls ファイルの一時DL URLを取得。 file_ids 有効期限60秒
Download get_zipfile_download_url 複数ファイルをZIPで一時DL。 file_ids 有効期限60秒/一括DL
Media get_thumbnail_urls サムネイル画像の一時URL。 file_ids 有効期限60秒
Bulk get_all_data 条件一致データを一括取得(大量)。 検索条件一式 バッチ/エクスポート向け
Count get_count_data 条件一致件数のみ取得。 検索条件一式 先に規模感を掴む
Suggest get_suggest キーワード候補を取得。 keyword UI補助・入力支援
Ref get_prefecture_data 都道府県名・コード一覧。 なし マスタ参照
Ref get_municipality_data 市区町村名・コード一覧。 pref_code マスタ参照
Normalize normalize_codes 都道府県/市区町村名の正規化。 prefecture,municipality 表記ゆれ吸収

📝 まとめ

  • mlit-dpf-mcp は国交省データPFを “LLMから直感的に使えるAPI” に変える MCP サーバー。
  • Claude Desktop に登録すれば、自然言語 → 検索 → 整形 → 要約 がワンショット。

Discussion