Skip to main content
Glama
kkawailab

MLIT Data Platform MCP Server

by kkawailab

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLogging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)WARNING
MLIT_API_KEYYesYour API key for the MLIT Data Platform (国土交通データプラットフォーム)
MLIT_BASE_URLNoBase URL for the MLIT Data Platform APIhttps://www.mlit-data.jp/api/v1/
PYTHONUNBUFFEREDNoPython unbuffered output setting1

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search

キーワードを使って検索する。検索結果の並べ替えや取得件数を設定することも可能。

            使い方:
            - キーワード検索(同義語も対象): term="橋梁"
            - 完全一致で絞り込み: term="橋梁", phrase_match=True
            - ページング取得: first=0, size=50  ※APIの上限は一度に最大10,000件
            - 並べ替え: sort_attribute_name="DPF:updated_at", sort_order="dsc"(降順)/ "asc"(昇順)
            - 軽量レスポンス: minimal=True(主要フィールドのみ取得)

            例:
            - バス停を検索: term="バス停"
            - 橋梁を新しい更新順で取得: term="橋梁", sort_attribute_name="DPF:updated_at", sort_order="dsc"
            - ページ2相当を取得: term="道路", first=50, size=50

            注意:
            - API仕様上、term=""(空文字)でも検索は可能ですが、空間条件(矩形/円)やメタデータ条件を使った絞り込みは本ツールでは扱いません。
            空間検索は「search_by_location_rectangle / search_by_location_point_distance」、
            メタデータ検索は「search_by_attribute」を利用してください。
            - sort_order は "asc" または "dsc" を指定してください。
            - 大量件数を扱う場合はページング(first/size)を利用してください。
search_by_location_rectangle

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

            使い方:
            - 指定した矩形範囲(北西緯度経度と南東緯度経度)に含まれるデータを検索します。
            - 検索語(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)を使用。
search_by_location_point_distance

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

            使い方:
            - 緯度(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で制御してください。
search_by_attribute

メタデータ項目を用いて検索する。例えば、カタログ名、データセット名、都道府県、市区町村等を設定して検索することが可能。 属性フィルタで検索(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 を指定すると軽量レスポンスになります。
get_data_summary

データセット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 を使用してください。
get_data

データセット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 のスキーマに依存します(必要な項目はクライアント側でフィールド選択推奨)。
get_data_catalog_summary

データカタログ・データセットの基本情報(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 を指定すると全件取得になります(本ツールは内部でこの挙動に合わせています)。
get_data_catalog

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

            使い方:
            - すべてのカタログの詳細を取得(重い): 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 も持ちます)。
get_prefecture_data

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

            使い方:
            - 引数なしで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` を利用してください。
get_municipality_data

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

            使い方:
            - フィルタなし(既定): 全国すべての市区町村を返します(大量件数)。
            - 都道府県で絞り込み: 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}
get_all_data

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

            使い方:
            - 大量件数をバッチで取得します。内部的に 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` 中心の軽量レスポンスになります。
get_suggest

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

            使い方:
            - 入力中の文字列(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 を含む配列です(例は公式サンプル参照)。
get_count_data

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

            使い方:
            - キーワード / メタデータ / 空間条件を組み合わせて、件数のみを高速に把握できます。
            - 集計の切り口は `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` で実データ取得が推奨。
get_mesh

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

            使い方:
            - 事前に `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}
get_file_download_urls

ファイルのダウンロード用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を参照)。
get_zipfile_download_url

複数の付属ファイルを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はクライアント側のタイムアウト設定にも注意してください。
get_thumbnail_urls

データのサムネイル画像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)。
normalize_codes

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

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

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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kkawailab/kklab-mlit-dpf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server