Skip to main content
Glama
MLIT Data Platform MCP Server

MLIT Data Platform MCP Server

by kkawailab

MLIT DATA PLATFORM MCP Server

⚠️ 重要な免責事項 本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp を利用して作成された非公式のアプリケーションです。 国土交通省の認可や承認を受けたものではありません。 本リポジトリの利用により生じたいかなる損失及び障害等について、作成者は責任を負わないものとします。

目次

Related MCP server: MLIT Data Platform MCP Server

1. 概要

本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp をベースに作成された非公式のMCP (Model Context Protocol) サーバーです。

国土交通省が保有するデータと民間等のデータを連携し、一元的に検索・表示・ダウンロードを可能にする国土交通データプラットフォームが提供する利用者向けAPIと接続します。

本MCPサーバーを利用することで、大規模言語モデル(LLM)と直接連携し、対話形式で直感的にデータを検索・取得することが可能になります。APIに関する専門的な知識がなくても、誰でも簡単に国土交通データプラットフォームから曖昧な指示や複雑な条件設定でデータを検索・取得が可能な、新しいデータ活用のかたちを提供します。

⚠️ 本リポジトリは国土交通省の認可や承認を受けたものではありません。個人が作成した非公式のアプリケーションです。

2. 主な機能

国土交通データプラットフォームの利用者向けAPIを活用し、以下の機能を提供します:

  • search(キーワードの指定によりデータを検索します。並べ替えや件数の指定も可能です。)

  • search_by_location_rectangle(指定した矩形範囲と交差するデータを検索します。)

  • search_by_location_point_distance(指定した地点と半径からなる円形範囲と交差するデータを検索します。)

  • search_by_attribute(カタログ名、データセット名、都道府県、市区町村などの属性を指定してデータを検索します。)

  • get_data(データの詳細情報を取得します。)

  • get_data_summary(データIDとタイトルなどのデータの基本情報を取得します。)

  • get_data_catalog(データカタログやデータセットの詳細情報を取得します。)

  • get_data_catalog_summary(IDやタイトルなどのデータカタログやデータセットの基本情報を取得します。)

  • get_file_download_urls(ファイルのダウンロード用URLを取得します(有効期限:60秒)。)

  • get_zipfile_download_url(複数ファイルをZIP形式でまとめたダウンロードURLを取得します(有効期限:60秒)。)

  • get_thumbnail_urls(サムネイル画像のURLを取得します(有効期限:60秒)。)

  • get_all_data(条件に一致する大量のデータを一括取得します。)

  • get_count_data(条件に一致するデータ件数を取得します。)

  • get_suggest(キーワード検索時の候補を取得します。)

  • get_prefecture_data(都道府県名・コードの一覧を取得します。)

  • get_municipality_data(市区町村名・コードの一覧を取得します。)

  • get_mesh(指定したメッシュに含まれるデータを取得します。)

  • normalize_codes(入力された都道府県名・市区町村名を正規化します。)

3. 動作環境

  • OS:Windows 10 / 11 または macOS 13以降

  • MCPホスト:Claude Desktopなど

  • MCPサーバー実行環境:Python 3.10+

  • メモリ:8GB以上推奨

  • ストレージ:空き容量 1GB以上(キャッシュやログを含む)

4. インストールとセットアップ

本MCPサーバーは、Claude Desktop と Claude Code の両方で使用できます。それぞれの設定方法を以下に説明します。

共通の準備手順

どちらの環境でも、まず以下の準備が必要です。

1. APIキーの取得

国土交通データプラットフォームでアカウントを作成し、APIキーを取得してください。

詳しい手順は、こちらをご覧ください。

2. リポジトリのクローン

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

4.1. Claude Desktopでの使用方法

Claude Desktop(デスクトップアプリ)で使用する場合の設定方法です。

前提条件

  • Claude Desktopアプリがインストールされている

  • Python 3.10以上がインストールされている

手順

1. 仮想環境を作成 & 有効化

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

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

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

3. 環境変数を設定

.env.exampleをコピーし、 .env ファイルを作成します:

MLIT_API_KEY=your_api_key_here
MLIT_BASE_URL=https://www.mlit-data.jp/api/v1/

your_api_key_hereは必ず、手順1で取得したAPIキーに置き換えてください。

4. Claude Desktopの設定ファイルを開く

  • Windows: C:\Users\<ユーザー名>\AppData\Roaming\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Desktopアプリの設定画面にある「開発者」メニューの「設定を編集」ボタンをクリックしてclaude_desktop_config.jsonを開くことも可能です。

5. MCPサーバーの構成を追加

{
  "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キーに置き換えてください。

6. Claude Desktop を再起動


4.2. Claude Codeでの使用方法

Claude Code(VS Code拡張機能)で使用する場合の設定方法です。

前提条件

  • Visual Studio Code がインストールされている

  • Claude Code 拡張機能がインストールされている

  • Python 3.10以上がインストールされている

  • uv または pip がインストールされている

手順

1. プロジェクトディレクトリに移動

cd mlit-dpf-mcp

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

uvを使用する場合(推奨):

uv pip install -e .

または通常のpipを使用:

pip install -e .

3. MCP設定ファイルを作成

プロジェクトのルートディレクトリに .mcp.json ファイルを作成します:

4. MCP設定を記述

.mcp.json に以下の内容を記述します:

{
  "mcpServers": {
    "mlit-dpf-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/絶対パス/mlit-dpf-mcp",
        "run",
        "python",
        "-m",
        "src.server"
      ],
      "env": {
        "MLIT_API_KEY": "your_api_key_here",
        "MLIT_BASE_URL": "https://www.mlit-data.jp/api/v1/"
      }
    }
  }
}

重要な設定項目:

  • "/絶対パス/mlit-dpf-mcp": このリポジトリの絶対パスに置き換えてください

    • Linux/macOS例: "/home/username/mlit-dpf-mcp"

    • Windows例: "C:/Users/username/mlit-dpf-mcp" (スラッシュを使用)

  • "your_api_key_here": 取得したAPIキーに置き換えてください

注意: .mcp.json はプロジェクトのルートディレクトリに配置してください(.claude/ ディレクトリ内ではありません)

5. VS Codeでプロジェクトを開く

code .

6. Claude Codeを起動

VS Codeのコマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)から「Claude Code: Start」を選択します。

7. MCPサーバーの接続を確認

Claude Codeのチャット画面で、MCPツールが利用可能になっていることを確認します。ツールアイコン(🔧)をクリックすると、mcp__mlit-dpf-mcp__で始まる各種ツールが表示されます。

トラブルシューティング(Claude Code)

MCPサーバーが起動しない場合:

  1. .mcp.json のパスが正しいか確認(プロジェクトルートに配置されているか)

  2. APIキーが正しく設定されているか確認

  3. VS Codeの出力パネル(Output Panel)で「Claude Code」を選択し、エラーログを確認

依存関係のエラーが出る場合:

uv pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

5. 使用例

5.1. 基本的な検索

MCPサーバーが正しく設定されていれば、Claude DesktopまたはClaude Codeで自然言語による対話形式でデータを検索できます。

例:キーワード検索

「東京都のダムを教えて」

Claudeは自動的にMCPツールを使用して、以下のような処理を実行します:

  1. 都道府県名「東京都」を正規化してコード「13」を取得

  2. データセット「ダム便覧(dhb)」を検索

  3. 該当するダムのリストを表示

例:位置情報による検索

「東京駅から半径5km以内にある公共施設を検索して」

例:データの可視化

「岐阜県のダムを地図にプロットして」

5.2. ダム地図の作成(サンプルプロジェクト)

このリポジトリには、東海地方のダムを地図にプロットするサンプルプロジェクトが含まれています。

含まれるファイル

  • plot_tokai_dams.py - 地図生成のメインスクリプト

  • tokai_dams.json - 東海地方のダムデータ(12件のサンプル)

  • tokai_dams_map.html - 生成されたインタラクティブ地図

  • fetch_tokai_dams.py, get_tokai_dams.py - データ取得用スクリプト

実行方法

1. 必要なライブラリをインストール

uv pip install folium

または:

pip install folium

2. 地図を生成

python plot_tokai_dams.py

3. ブラウザで地図を開く

# Linux/macOS
xdg-open tokai_dams_map.html

# Windows
start tokai_dams_map.html

地図の特徴

  • 都道府県ごとに色分けされたマーカー

    • 🔴 赤:愛知県

    • 🔵 青:岐阜県

    • 🟢 緑:静岡県

    • 🟣 紫:三重県

  • マーカーをクリックするとダムの詳細情報を表示

  • MarkerCluster機能で見やすく表示

  • インタラクティブなズーム・パン操作

カスタマイズ

全216件のダムデータを取得して完全な地図を作成する場合は、Claude CodeまたはClaude Desktopで以下のように依頼してください:

「東海地方の全てのダムデータを取得してtokai_dams.jsonを更新して」

6. トラブルシューティング

よくある問題と解決方法

1. MCPサーバーが起動しない

症状: Claude DesktopまたはClaude CodeでMCPツールが表示されない

解決方法:

  • 設定ファイルのパスが正しいか確認

  • APIキーが正しく設定されているか確認

  • Python環境が正しくアクティベートされているか確認

Claude Desktopの場合:

# パスの確認
which python  # macOS/Linux
where python  # Windows

Claude Codeの場合: VS Codeの出力パネル(Output)で「Claude Code」を選択し、エラーログを確認してください。

2. APIキーのエラー

症状: MLIT_API_KEY is not set などのエラーメッセージ

解決方法:

  • .mcp.json(Claude Code)またはclaude_desktop_config.json(Claude Desktop)で、MLIT_API_KEYが正しく設定されているか確認

  • APIキーに余分なスペースや引用符が含まれていないか確認

  • 国土交通データプラットフォームでAPIキーが有効か確認

3. 依存関係のエラー

症状: ModuleNotFoundError: No module named 'aiohttp' などのエラー

解決方法:

# 必要なパッケージを再インストール
uv pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

# または
pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

4. 地図生成のエラー

症状: ModuleNotFoundError: No module named 'folium'

解決方法:

uv pip install folium
# または
pip install folium

5. データが取得できない

症状: 検索しても結果が返ってこない

解決方法:

  • APIキーの有効性を確認

  • 検索条件を変更してみる(キーワードを簡略化、範囲を広げるなど)

  • ネットワーク接続を確認

  • APIのレート制限に達していないか確認

デバッグ方法

ログレベルの変更

より詳細なログを確認したい場合は、設定ファイルでLOG_LEVELを変更してください:

Claude Desktop(claude_desktop_config.json):

"env": {
  "LOG_LEVEL": "DEBUG"
}

Claude Code(.mcp.json):

"env": {
  "LOG_LEVEL": "DEBUG"
}

手動でのサーバー起動テスト

MCPサーバーが正しく動作するか、手動で起動してテストできます:

cd mlit-dpf-mcp
export MLIT_API_KEY=your_api_key_here
export MLIT_BASE_URL=https://www.mlit-data.jp/api/v1/
python -m src.server

エラーが表示される場合は、そのメッセージに従って問題を解決してください。


7. ディレクトリ構成

mlit-dpf-mcp/
├─ .mcp.json                     # MCP設定ファイル(Claude Code用)
├─ .claude/                      # Claude Code設定ディレクトリ(権限設定など)
│  └─ settings.local.json        # ツール権限設定ファイル
├─ src/
│  ├─ server.py                  # MCP サーバー & ツール定義
│  ├─ client.py                  # MLIT GraphQL API クライアント
│  ├─ schemas.py                 # Pydantic モデル(入力バリデーション)
│  ├─ config.py                  # 環境変数ロード & 設定検証
│  └─ utils.py                   # ロギング、タイマー、レート制限
├─ plot_tokai_dams.py            # 地図プロット用スクリプト(サンプル)
├─ fetch_tokai_dams.py           # ダムデータ取得スクリプト(サンプル)
├─ get_tokai_dams.py             # データ取得ヘルパースクリプト(サンプル)
├─ tokai_dams.json               # 東海地方のダムデータ(サンプル)
├─ tokai_dams_map.html           # 生成された地図HTMLファイル(サンプル)
├─ pyproject.toml                # プロジェクト設定ファイル
├─ uv.lock                       # 依存関係ロックファイル
├─ README.md                     # このファイル
├─ LICENSE                       # ライセンスファイル
└─ .env.example                  # 環境変数のサンプル

8. ライセンス

本リポジトリはMITライセンスで提供されています。詳細はLICENSEを参照してください。


9. 注意事項

非公式リポジトリについて

  • 本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp をベースに作成された非公式のアプリケーションです。

  • 国土交通省の認可、承認、推奨を受けたものではありません。

  • 本リポジトリは個人が作成したものであり、国土交通省および国土交通データプラットフォームとは一切関係ありません。

データ利用について

免責事項

  • 本リポジトリは非公式のアプリケーションとして提供しているものです。動作保証は行っておりません。

  • 本リポジトリの内容は予告なく変更・削除する可能性があります。

  • 本リポジトリの利用により生じた損失及び障害等について、作成者は一切の責任を負わないものとします。

  • 本リポジトリに関する問い合わせを国土交通省または国土交通データプラットフォームに行わないでください。

Available Tools

18 tools
get_all_dataA

条件に当てはまる大量のデータを取得する。

            使い方:
            - 大量件数をバッチで取得します。内部的に GraphQL `getAllData` を使用し、返却された `nextDataRequestToken` を用いて次バッチを自動で取得します。
            - 絞り込みは `term` / `phrase_match` と、属性(`catalog_id`, `dataset_id`, `prefecture_code`, `municipality_code`, `address`)や矩形範囲を組み合わせて指定できます。
            - 1回のバッチ件数は `size`(API上限は1000)。本ツールの既定は `size=1000`(最大値)で、`max_batches` または `max_items` で総取得量を制御します。
            - メタデータが不要な場合は `include_metadata=False` で転送量を削減できます。

            例:
            - データセット単位で全件取得(メタデータ付き):
            term="", dataset_id="mlit-001", size=1000, max_batches=10, include_metadata=True

            - カタログIDと矩形で範囲取得(東京都心部の例):
            term="", catalog_id="dimaps",
            location_rectangle_top_left_lat=35.80,  location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60, location_rectangle_bottom_right_lon=139.85,
            size=1000, max_batches=5

            - 都道府県コードのみで全件走査:
            term="", prefecture_code="13", size=1000, max_items=5000

            注意:
            - API仕様上、`locationFilter`(矩形など)**単独では検索不可**です。必ず `term` または `attributeFilter`(本ツールでは `catalog_id` / `dataset_id` / `prefecture_code` / `municipality_code` / `address` に相当)を併用してください。
            - 次バッチ取得時は `nextDataRequestToken` を使用し、**他の条件は無視**されます(ツール側で自動処理)。データが空になった時点で取得を停止します。
            - `size` のAPI上限は1000です(本ツールの既定値は1000)。大量取得時は `max_batches` / `max_items` を併用して制御してください。
            - 座標は WGS84。矩形は「北西(top_left)→南東(bottom_right)」の順で指定してください。
            - `include_metadata=False` にすると `id`/`title` 中心の軽量レスポンスになります。

Inputs: size, term, phrase_match, prefecture_code, +11 more.

get_count_dataA

特定のデータセットに含まれるデータや、指定した範囲、日付など、指定した検索条件に一致するデータの件数を取得する。分類ごとの集計も可能。

            使い方:
            - キーワード / メタデータ / 空間条件を組み合わせて、件数のみを高速に把握できます。
            - 集計の切り口は `slice_type` で指定:
            - "dataset": カタログ→データセットの2段階で件数を返す(全カタログ/全データセットの分布を俯瞰)
            - "attribute": 任意属性ごとの上位出現値を `slice_size` 件まで取得(最大50)。必要なら `slice_sub_attribute_name` で下位分類も可能。
            - 空間条件(矩形/円)は `location_*` 引数により内部で `locationFilter` に変換。
            - 属性条件は `catalog_id` / `dataset_id` / `prefecture_code` / `municipality_code` / `address` などを内部で `attributeFilter` に変換。

            例:
            - キーワード「橋梁」をデータセット別に件数集計:
            term="橋梁", slice_type="dataset"

            - 都道府県別トップ10 + その下でデータセット別内訳:
            term="", slice_type="attribute",
            slice_attribute_name="DPF:prefecture_code", slice_size=10,
            slice_sub_attribute_name="DPF:dataset_id", slice_sub_size=10

            - 矩形範囲(東京都心部)× カタログIDで件数:
            term="", catalog_id="dimaps",
            location_rectangle_top_left_lat=35.80,  location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60, location_rectangle_bottom_right_lon=139.85,
            slice_type="attribute", slice_attribute_name="DPF:dataset_id", slice_size=20

            - 円範囲(東京駅 半径500m)× データセット内件数:
            term="", dataset_id="cals_construction",
            location_lat=35.681236, location_lon=139.767125, location_distance=500,
            slice_type="attribute", slice_attribute_name="DPF:title", slice_size=10

            注意:
            - 公式仕様上、`locationFilter`(空間条件)**のみでは検索不可**。必ず `term` か `attributeFilter`(本ツールでは catalog_id / dataset_id / prefecture_code / municipality_code / address 等)を併用してください。
            - `slice_size` の最大は **50**。上位出現値のみが返却され、それ以外は省略されます。上位分類の `dataCount` には下位分類で表示されない分も含まれます。
            - `attributeFilter` は `is/similar/gte/gt/lte/lt` に対応し、`AND` / `OR` でネスト結合が可能(本ツールでは単純条件を主にサポート)。
            - `locationFilter` は `rectangle` / `geoDistance` のほか `union` / `intersection` に対応。ただし **同クラス内の他メンバーと同時利用不可**、かつ **入れ子(ネスト)不可**。
            - 座標は WGS84。矩形は「北西(top_left)→南東(bottom_right)」の順で指定。
            - パフォーマンス観点から、まず `get_count_data` でボリューム見積り → 必要に応じて `get_all_data` で実データ取得が推奨。

Inputs: term, phrase_match, prefecture_code, municipality_code, +15 more.

get_dataA

データセットIDとデータIDを用いて、データの詳細情報を取得する。

            使い方:
            - 検索API(search)で拾った id を使って、対象データの詳細(title 以外の各種メタ情報や関連フィールド)を取得。
            - すでに対象が確定している場合、検索よりも効率的に必要情報へアクセスできます。

            例:
            - 既知IDで詳細取得:
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            - データセット内の特定データを直接参照:
            dataset_id="mlit-001", data_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

            注意:
            - 引数は GraphQL の data(dataSetID:, dataID:) に対応しています。
            - data_id は search の結果(DataClass.id)を使用してください。
            - 存在しないIDを指定した場合、totalNumber=0 となり結果は返りません。
            - 詳細項目は MLIT DPF のスキーマに依存します(必要な項目はクライアント側でフィールド選択推奨)。

Inputs: dataset_id (required), data_id (required).

get_data_catalogA

データカタログ・データセットの詳細情報を取得する。

            使い方:
            - すべてのカタログの詳細を取得(重い): ids を指定しない(内部的に IDs=null 相当)、include_datasets=True
            - 特定カタログだけ取得(推奨): ids=["cals","rsdb"] のように配列で指定
            - 軽量にID/タイトル等だけ取得: minimal=True
            - データセット一覧や件数も取得: include_datasets=True(データセットのメタデータ定義・件数が取得可能)

            例:
            - 全カタログのID/タイトルのみ(軽量):
            minimal=True, include_datasets=False

            - 特定カタログ(cals, rsdb)の詳細 + データセット一覧:
            ids=["cals","rsdb"], minimal=False, include_datasets=True

            - 単一カタログのメタ情報だけ(datasets不要):
            ids=["mlit_plateau"], minimal=False, include_datasets=False

            注意:
            - 公式仕様では `dataCatalog(IDs: [String])` で、IDs に null を渡すと全カタログが返ります。IDを指定すると対象のみ取得されます。
            - `include_datasets=True` の場合、各カタログ配下の `datasets` 情報(メタデータ定義、データ件数など)も取得します。大量になるため必要に応じてオフにしてください。
            - `minimal=True` は主要フィールド中心の軽量レスポンスです。詳細が必要な場合は False にしてください。
            - 返るフィールドは `DataCatalogClass` に準拠します(title, description, publisher, modified など多数を含み、datasets も持ちます)。

Inputs: ids, minimal, include_datasets.

get_data_catalog_summaryA

データカタログ・データセットの基本情報(ID、タイトル)を取得する。

            使い方:
            - すべてのカタログのIDとタイトル一覧を取得: 引数なし(内部的に IDs=null 相当)
            - 特定カタログだけの基本情報を取得: 「get_data_catalog」を minimal=True で使うか、こちらのサマリーを利用

            例:
            - 全カタログのID/タイトル:
            (引数なしで呼び出し)

            - 特定ID群のみの概要を見たい(軽量):
            get_data_catalog を minimal=True, ids=["cals","rsdb"] で代用

            注意:
            - 返却内容はID/タイトル中心の軽量情報です。詳細なメタデータやデータセット一覧が必要な場合は「get_data_catalog」を使用してください。
            - 公式APIでは IDs=null を指定すると全件取得になります(本ツールは内部でこの挙動に合わせています)。

Inputs: no named parameters.

get_data_summaryA

データセットIDとデータIDを用いて、基本情報(データID、タイトル)を取得する。

            使い方:
            - すでに dataSetID / dataID を把握している場合に、軽量にタイトル等の基本情報だけ取得します。
            - 検索結果から拾った id を入れて確認・プレビュー用途に最適。

            例:
            - タイトルだけ確認したい:
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            - 詳細取得前の事前チェック:
            dataset_id="mlit-001", data_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

            注意:
            - data_id は検索API(search)の結果で得られる DataClass.id を使用してください。
            - 指定したIDに一致しない場合、totalNumber=0 となります(結果なし)。
            - サマリ用途のため、詳細な付帯情報が必要な場合は get_data を使用してください。

Inputs: dataset_id (required), data_id (required).

get_file_download_urlsA

ファイルのダウンロード用URLを取得する。取得したURLがhttps://www.mlit-data.jp/download/で始まる場合、URLの有効期限は60秒。

            使い方:
            - 事前に search / data API で対象データの `files`(id, original_path)を取得してから、本APIでダウンロードURLを生成します。
            - 本ツールは2通りに対応:
            (A) `files=[{id, original_path}, ...]` を直接渡す
            (B) `dataset_id` と `data_id` を渡す(ツール側で対象データの `files` を読み取り、一括でURL化)

            例:
            - 単一ファイルのURLを取得(直接指定):
            files=[{ id:"<filesのid>", original_path:"INDEX_C.XML" }]

            - データIDから付属ファイルのURL一覧を取得(簡易):
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            注意:
            - `id` と `original_path` は、まず search / data のレスポンスに含まれる `DataClass.files` から取得してください。
            - 取得したURLが `https://www.mlit-data.jp/download/` で始まる場合、**60秒以内にダウンロード開始**が必要です(期限切れに注意)。
            - 連携元サイトで直接ダウンロードできる場合は、メタデータ `DPF:downloadURLs` / `DPF:dataURLs` も併用してください。
            - `original_path` を省略すると、付属ファイルの元ファイル名・パスが用いられます(files.original_pathを参照)。

Inputs: files, dataset_id, data_id.

get_meshA

メッシュに含まれるデータを取得する。

            使い方:
            - 事前に `search` API で対象データを特定し、レスポンスの `dataset_id`(=dataSetID)、`id`(=dataID)、
            および `meshes[].id`(=meshID)を取得します。その上で、本APIに `meshCode`(メッシュコード)を指定して該当メッシュのオブジェクトを取得します。
            - `meshCode` は任意の次元(例: 250m など)のメッシュコードを指定可能。該当がなければ `null` が返ります。

            例:
            - 人口5次メッシュ(250m)の一枚を取得:
            dataset_id="dpf_population_data",
            data_id="8fb65cb6-a7e3-4b15-bf17-1c71be572a9f",
            mesh_id="national_sensus_250m_r2",
            mesh_code="5339452932"

            - 事前に `search` で必要パラメータを取得:
            term="人口及び世帯" → 結果の `dataset_id`, `id`, `meshes[].id` を本APIに転用

            注意:
            - GraphQL定義は `mesh(dataSetID:String!, dataID:String!, meshID:String!, meshCode:String!): JSONObject`。
            返却はJSONオブジェクトで、メッシュコードや指標(例: 総人口 等)が含まれます。該当しない場合は `null`。:contentReference[oaicite:1]{index=1}
            - `meshCode` の粒度は自由ですが、データ側に該当レコードが存在しないと取得できません(空振り時は `null`)。:contentReference[oaicite:2]{index=2}
            - 必要な `meshID` は `search` レスポンスの `meshes` 配列から選びます(例: "national_sensus_250m_r2")。:contentReference[oaicite:3]{index=3}
            - 利用にはMLIT DPFのGraphQLエンドポイントとAPIキーが必要です。:contentReference[oaicite:4]{index=4}

Inputs: dataset_id (required), data_id (required), mesh_id (required), mesh_code (required).

get_municipality_dataA

市区町村名・市区町村コード一覧を取得する。

            使い方:
            - フィルタなし(既定): 全国すべての市区町村を返します(大量件数)。
            - 都道府県で絞り込み: pref_codes=["13"] のように都道府県コードを指定(複数可)。
            - 市区町村コードで絞り込み: muni_codes=["13101","13102"] のように6桁コードを指定(複数可)。
            - 取得フィールドを最小化: fields=["code_as_string","name"] のように必要フィールドだけ指定(クライアント最適化)。

            例:
            - 全国の市区町村(コード/名称のみ):
            pref_codes=[], muni_codes=[], fields=["code_as_string","name"]

            - 東京都の市区町村一覧:
            pref_codes=["13"], fields=["code_as_string","prefecture_code","name","katakana"]

            - 特定の市区町村コードを直接取得:
            muni_codes=["13101","13102"], fields=["code_as_string","name","romaji"]

            注意:
            - GraphQL仕様: `municipalities(muniCodes:[Any], prefCodes:[Any]): [MunicipalityClass]`。
            パラメータ未指定時は**全件**を返します(大量になるため fields での軽量化推奨)。:contentReference[oaicite:1]{index=1}
            - コードは数値/文字列どちらでも指定可能ですが、アプリ側で扱いやすいのは **6桁の文字列** `code_as_string` です(例: "13101")。:contentReference[oaicite:2]{index=2}
            - 返却クラス `MunicipalityClass` には、`name`(郡名/市区町村名/政令市区名を組み合わせた正式名称)、`katakana`、`romaji`、`prefecture_code`、および有効期間(`used_from`/`used_until`)等が含まれます。:contentReference[oaicite:3]{index=3}
            - 政令指定都市の区は**独立したエントリ**として返ります(例: 札幌市中央区 など)。:contentReference[oaicite:4]{index=4}

Inputs: pref_codes, muni_codes, fields, pref_code.

get_prefecture_dataA

都道府県名・都道府県コード一覧を取得する。

            使い方:
            - 引数なしで47都道府県の一覧を取得(コード/名称)。
            - 軽量にコードと正式名称のみ取得、または必要に応じて name_short / hiragana / romaji などをクライアント側でフィールド選択。

            例:
            - コードと名称だけ取得:
            (引数なしで呼び出し)

            - かな・ローマ字も含めて取得(クライアントのフィールド指定例):
            prefecture { code_as_string name hiragana romaji }

            注意:
            - GraphQL定義: `prefecture: [PrefectureClass]`。パラメータはありません(常に全都道府県を返します)。
            - 主なフィールド: code(数値), code_as_string(2桁文字列), name(正式名), name_short, hiragana, romaji, used_from / used_until。
            - 公式コードは2桁(先頭ゼロ付き)。アプリで文字列コードが必要な場合は `code_as_string` を利用してください。

Inputs: no named parameters.

get_suggestA

キーワード検索の候補を表示する。

            使い方:
            - 入力中の文字列(term)から、上位のキーワード候補を返します。候補は `name`(候補語)と `cnt`(該当件数)を含みます。
            - 完全一致寄りにしたい場合は phrase_match=True を指定します。
            - カタログ/データセット等で範囲を絞って候補を出すことも可能です(search と同様に attributeFilter 相当を利用)。

            例:
            - 単純サジェスト(全データ対象):
            term="川", phrase_match=True
            → 上位候補(例: "川河川", "河川", ...)が name/cnt で返る。

            - 特定データセット内でのサジェスト:
            term="川", phrase_match=True, dataset_id="cals_construction"

            - カタログ単位でのサジェスト:
            term="橋", catalog_id="dimaps"

            注意:
            - term は必須です(空文字は不可)。
            - 本APIは GraphQL `suggest(term, phraseMatch, attributeFilter?)` を使用します。属性での絞り込みは
            本ツールの引数(catalog_id / dataset_id / prefecture_code / municipality_code / address)を
            内部で attributeFilter にマッピングして行います。
            - 返却される候補は name と cnt を含む配列です(例は公式サンプル参照)。

Inputs: term (required), phrase_match, prefecture_code, municipality_code, +7 more.

get_thumbnail_urlsA

データのサムネイル画像URLを取得する。取得したURLがhttps://www.mlit-data.jp/download/で始まる場合、URLの有効期限は60秒。

            使い方:
            - 基本: dataset_id と data_id を指定して、そのデータに紐づくサムネイルURL一覧を取得します。
            - ファイル個別のサムネイルが欲しい場合は、search/data 結果から取得した file の id を使って絞り込みます(GraphQLの fileID に相当)。
            - 本ツールは2通りに対応:
            (A) thumbnails=[{id, original_path}, ...] を直接渡す(既にファイル情報を持っている場合に高速)
            (B) dataset_id と data_id を渡す(ツール側で対象データのサムネイルを探索)

            例:
            - データIDからサムネイルのURL一覧を取得:
            dataset_id="ndm", data_id="<searchで取得したid>"

            - 特定ファイルのサムネイルを取得(直接指定):
            thumbnails=[{ id:"<fileのid>", original_path:"<元ファイルの相対パス>" }]

            注意:
            - 取得したURLが download ドメインで始まる場合は **60秒以内にダウンロード開始**が必要です(期限切れに注意)。
            - サムネイルが存在しないデータは **空配列** が返ります。
            - fileID を指定しない場合はデータに紐づく代表サムネイル等が返ります。必要に応じてファイルIDで絞り込んでください。
            - レスポンスは配列で、各要素は fileName / URL を含みます(GraphQL: thumbnailURLs)。

Inputs: thumbnails, dataset_id, data_id.

get_zipfile_download_urlA

複数の付属ファイルをZIP形式で圧縮し、圧縮ファイルのダウンロードURLを取得する。URLの有効期限は60秒。

            使い方:
            - まとめて取得したい複数ファイルの `id` と、ZIP内に格納する `original_path`(パス)を指定します。
            - search / data で取得した `files` から必要な id / original_path を選択して投入してください。
            - 本ツールは2通りに対応:
            (A) `files=[{id, original_path}, ...]` を直接渡す
            (B) `dataset_id` と `data_id` を渡す(ツール側で `files` を参照しZIP作成)

            例:
            - IFCを3本まとめてZIPで取得:
            files=[
                { id:"<id1>", original_path:"ICON/.../モデルA.ifc" },
                { id:"<id2>", original_path:"ICON/.../モデルB.ifc" },
                { id:"<id3>", original_path:"ICON/.../モデルC.ifc" },
            ]

            - データIDから付属ファイルをZIP化(簡易):
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            注意:
            - ZIPのダウンロードURLは **60秒間のみ有効** です。取得後すぐにダウンロード処理を開始してください。
            - GraphQLは `zipfileDownloadURL(files:[FileInputClass]): String`。`files` の `id` / `original_path` は `DataClass.files` を用います。
            - 大容量ZIPはクライアント側のタイムアウト設定にも注意してください。

Inputs: files, dataset_id, data_id.

normalize_codesA

入力された都道府県名・市区町村名を正規化し、正式なコードと名称を取得する。

            使用ケース:
            1. ユーザー入力('東京', 'Tokyo', '13')を正規化 → '13' + '東京都'
            2. 市区町村名から5桁コードを取得
            3. 曖昧な入力の候補一覧取得

            このツールを他の検索ツールの前に実行することで、正確なprefecture_code/municipality_codeを取得できます

Inputs: prefecture, municipality.

search_by_attributeA

メタデータ項目を用いて検索する。例えば、カタログ名、データセット名、都道府県、市区町村等を設定して検索することが可能。 属性フィルタで検索(GraphQL公式形のみ): attributeFilter { attributeName: "DPF:...", is: }。operatorは常に is。

            使い方:
            - 属性(attribute_name)と値(attribute_value)を指定してメタデータ検索を行う。
            - キーワード(term)を併用して、より細かい条件指定も可能。

            例:
            - 特定データセット内の検索:
            attribute_name="DPF:dataset_id", attribute_value="mlit-001", term="橋梁"

            - 東京都に属するデータ:
            attribute_name="DPF:prefecture_code", attribute_value="13"

            - データカタログ単位で検索:
            attribute_name="DPF:catalog_id", attribute_value="mlit-cat-001", term=""

            注意:
            - attribute_name には DPF:prefix を含む正式属性名を指定してください(例: "DPF:dataset_id")。
            - attribute_value の型は文字列または数値。operator は常に "is" 固定。
            - term="" の場合でも属性条件のみで検索可能。
            - minimal=True を指定すると軽量レスポンスになります。

Inputs: attribute_name (required), attribute_value (required), term, first, +3 more.

search_by_location_point_distanceA

指定した地点と半径によって作成される円形範囲と交差するデータを検索する。

            使い方:
            - 緯度(lat)、経度(lon)、距離(メートル単位)を指定して円形範囲を作成。
            - term(キーワード)を組み合わせることで空間+テキスト検索も可能。

            例:
            - 東京駅から半径500m以内のバス停を検索:
            term="バス停", location_lat=35.681236, location_lon=139.767125, location_distance=500

            - 半径5km以内の道路関連データ:
            term="道路", location_lat=35.68, location_lon=139.75, location_distance=5000

            - term="" で位置情報のみ検索:
            term="", location_lat=35.68, location_lon=139.75, location_distance=1000

            注意:
            - location_lat / location_lon / location_distance の3つは必須。
            - location_distance の単位はメートル。
            - WGS84座標系を使用。
            - phrase_match=Trueで完全一致検索。
            - 大きな半径を指定すると結果件数が増加するため、sizeで制御してください。

Inputs: location_lat (required), location_lon (required), location_distance (required), term, +4 more.

search_by_location_rectangleA

矩形範囲と交差するデータを検索する。

            使い方:
            - 指定した矩形範囲(北西緯度経度と南東緯度経度)に含まれるデータを検索します。
            - 検索語(term)を組み合わせて空間+キーワード検索も可能です。

            例:
            - 東京都内の橋梁を検索:
            term="橋梁",
            location_rectangle_top_left_lat=35.80,
            location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60,
            location_rectangle_bottom_right_lon=139.85

            - キーワードなしで矩形範囲のデータを取得:
            term="",
            location_rectangle_top_left_lat=35.7,
            location_rectangle_top_left_lon=139.6,
            location_rectangle_bottom_right_lat=35.6,
            location_rectangle_bottom_right_lon=139.7

            注意:
            - `location_rectangle_top_left_lat/lon` と `location_rectangle_bottom_right_lat/lon` の4点は必須。
            - 北西(top_left)は右下(bottom_right)よりも緯度が高く、経度が低くなるように指定。
            - termが空の場合でも矩形条件のみで検索可能。
            - phrase_match=Trueで完全一致検索。
            - size は 1回あたり最大10,000件(API制限あり)。
            - 座標は世界測地系(WGS84)を使用。

Inputs: location_rectangle_top_left_lat (required), location_rectangle_top_left_lon (required), location_rectangle_bottom_right_lat (required), location_rectangle_bottom_right_lon (required), +5 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 18 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap between search_by_attribute and search (both support term + attribute filtering) and between get_data_catalog and get_data_catalog_summary (both retrieve catalog metadata, though with different detail levels). The descriptions help clarify the differences, but an agent might initially confuse these pairs.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case (e.g., get_all_data, search_by_location_rectangle). The naming is predictable and uniform across the entire set, making it easy for an agent to understand the action and target.

    Tool Count4/5

    With 18 tools, the count is slightly high but reasonable for a data platform server covering search, retrieval, metadata, and file operations. Each tool serves a specific function, though some could potentially be consolidated (e.g., multiple search variants).

    Completeness5/5

    The toolset comprehensively covers the domain of data access and management, including search (with various filters), data retrieval (batch, single, counts), metadata exploration (catalogs, datasets, municipalities, prefectures), file operations (downloads, thumbnails, ZIPs), and utilities (suggest, normalize). There are no obvious gaps for core workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers