ChatGPTから使う(MCP接続)

国土DBをChatGPTのプラグインとして登録すると、会話の中で自治体名や住所を伝えるだけで、用途地域・地価・都市計画の記録を呼び出せます。住所を渡した場合は、その住所が属する自治体を特定したうえで、自治体単位・調査地点単位のデータを返します。

このページは2026年8月27日まで「国土DBではOAuthを選ばないでください」と案内していました。同日にMCPサーバーをOAuthに対応させたので、いまはサーバーURLを入れてサインインするだけでつながります。

どちらで接続しますか

使う場所やることAPIキーの入力
ChatGPT(ブラウザ・アプリ)プラグインを追加してサインイン不要
自分で書いたプログラム・他のMCPクライアントAPIキーをヘッダで渡す必要

以下はChatGPTから使う手順です。プログラムから直接呼ぶ場合はAPIドキュメントを見てください。

必要なもの

APIキーを自分で発行したり入力したりする必要はありません。キーごと60 req/min、1日あたり通常1000リクエストで、β期間中は課金しません。

この手順について(2026年9月時点)

ChatGPT側の設定画面の名称や場所は、当社の管理外で変わることがあります。掲載している画面は2026年9月5日に実機(ブラウザ版、日本語表示)で接続したときのものです。メニュー名が違う場合は、同じ役割の項目に読み替えてください。

接続する

  1. 設定のプラグインを開く

    左下のアカウント名から設定を開き、プラグインを選びます。

    ChatGPTの画面左下のアカウントメニューが開き、「設定」が選べる状態
    左下のアカウント名から「設定」を開く
  2. 開発者モードを有効にする

    プラグインの一覧をいちばん下までたどると開発者モードがあります。ChatGPTは、自分で追加するMCPサーバーをこのモードの下に置いています。

    設定のプラグイン一覧。最下段に「開発者モード」がある
    プラグインの一覧の最下段に「開発者モード」がある(他のプラグイン名は伏せてあります)

    スイッチを入れます。ChatGPTはここで、未検証のコネクターはデータを変更したり消去したりするおそれがある、という趣旨の警告を出します。国土DBのMCPは収録データの読み取りだけで、書き込みや削除の操作は持っていませんが、この設定は国土DB以外のサーバーにも効きます。追加するサーバーは自分で確かめてください。

    開発者モードのスイッチが有効になった状態。「リスクが上昇」という注意書きが添えられている
    開発者モードを有効にする
  3. プラグインを追加する

    プラグインの画面に戻り、検索欄の右にあるを押します。

    プラグイン一覧の右上にある+ボタン
    検索欄の右の「+」から追加する
  4. URLを入れて認証にOAuthを選ぶ

    次の値を入れます。アイコンと説明は空のままで構いません。

    項目入れる値
    名前国土DB
    接続サーバーのURL(トンネルではありません)
    URLhttps://kokudodb.jp/mcp
    認証OAuth

    「OAuthの詳細設定」を開く必要はありません。クライアントIDやシークレットも要りません。国土DBが接続情報を公開しているので、ChatGPTがURLから自動で読み取ります。最後に「理解したうえで、続行します」にチェックを入れて作成するを押します。

    新規プラグインのダイアログ。名前に国土DB、URLに https://kokudodb.jp/mcp、認証にOAuthを指定した状態
    URLは末尾の /mcp まで含めてそのまま貼り付ける
  5. サインインして接続する

    国土DBでサインインを押すと、国土DBの確認画面に移ります。何がChatGPTに渡されるかがここに書いてあります。

    「ChatGPTに国土DBを追加」という画面と「国土DBでサインイン」ボタン
    「国土DBでサインイン」を押す
    国土DBの確認画面。接続元のアプリがChatGPT、トークンの戻り先が chatgpt.com と表示され、渡されるキーでできることが列挙されている
    接続元と戻り先を確かめてから続ける。心当たりのないアプリ名が出ていたら、そのまま閉じてください

    続けるとGoogleのサインイン画面に移ります。ここで選んだアカウント宛に国土DBのAPIキーが発行され、ChatGPTに渡されます。

    Googleのアカウント選択画面。「kokudodb.jp」に移動すると表示されている
    Googleアカウントを選ぶ。すでにキーをお持ちの方は、同じメールアドレスでサインインすれば同じアカウントにつながります
  6. つながったか確かめる

    設定のプラグインに国土DBが並びます。サポートされている認証OAuth になっていれば接続できています。

    接続後の国土DBのプラグイン画面。URLとサポートされている認証(OAuth)が表示されている
    接続後の画面。ここから接続を解除することもできます

権限は「読み取りを許可」で足ります

プラグインの画面にある権限で、ChatGPTが許可を求めるタイミングを選べます。国土DBのMCPは収録データの読み取りだけを行い、書き込み・変更・削除の操作を持っていません。「読み取りを許可」を選べば、国土DBに関しては毎回の確認なしで使えて、それ以上の権限を渡さずに済みます

「すべてのアクションを許可」も選べますが、ChatGPT自身が「リスクが上昇」と表示するとおり、確認なしで操作まで実行する設定です。国土DBを使うだけなら選ぶ必要はありません。

会話で呼び出す

入力欄で 国土DB と打つか「+」から選ぶと、そのメッセージで国土DBを使う指定になります。

入力欄に「国土DB」と打つとプラグインの候補が出ている画面
入力欄で「国土DB」と打つと候補に出る

「渋谷区と世田谷区の地価、この10年でどう動いた?」

「東京都千代田区の用途地域の内訳を教えて。建蔽率と容積率も」

「碧南市で最近決まった都市計画を、告示番号と出典つきで教えて」

渋谷区と世田谷区の地価の10年推移を、用途区分ごとの表にして答えている画面
地価公示の10年ぶんを用途区分ごとに並べた回答

ツールが呼ばれたかどうかは、回答の上の「ツールが呼び出されました」を開くと確かめられます。どの自治体コードで何を引いたかが出ます。

ツール呼び出しの詳細。国土DBのGet muni profileに muni_code 13113 を渡している
渡した引数と返ってきた値をその場で確認できる

使えるツール

ツール名説明
get_land_profile住所/自治体コード/place_idから国土プロファイル(用途地域・地価・人口推計等)を1コールで取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。
get_muni_profile自治体プロファイル(用途地域・地価・将来人口・施設数・標高・行政区域)を取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。
get_land_price_trends自治体の地価公示(L01)/地価調査(L02)時系列と現年地点明細を取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。
get_zoning_summary自治体の都市計画決定情報(A55)サブタイプ別サマリを取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。
resolve_licenseレイヤーのライセンス許諾状態をfail-closeで解決する(台帳公開面)。
list_layers既知の全レイヤー(未投入含む)のingest状態・servable状態カタログを取得する。
get_planning_history自治体の都市計画決定・変更イベント(決定日・告示番号・種別・区域名 + 一次出典)の時系列を取得する。データが無い場合も不存在/対象外/未発見(未到達)の理由を返す(全国網羅ではない、自社収集の一次資料ベース)。
get_disaster_risk_point住所/place_idから町字代表点の災害リスク(地震・液状化・洪水〈内水を含む〉・津波・高潮・土砂)を1コールで取得する。災害種別は内水を含む7種、status は 区域内/区域外/未評価/提供不可/利用不能 のいずれか。スコア(0-100)と全国順位(%)は 地震・液状化・洪水・津波・高潮・土砂 の6種のみ(内水は独立のスコア・順位を持たず洪水スコアに統合される入力。内水の提供可否は洪水とは別の利用条件確認による)。全国順位(percentile)の母集団は災害種別で異なる(地震・液状化は全国の125m区画、洪水・津波・高潮・土砂災害はその災害の想定区域内と判定された区画のみが母集団)。洪水・津波・高潮の順位は status=in_area の時のみ算出する(区域外で順位が無いのは障害でもライセンス上の理由でもない)。status=利用不能(unavailable) は供給データまたは配信処理が一時的に使えない状態で、区域外やリスクが無いことを示すものではない。値は町字代表点(125mメッシュ)の判定であり、実際の被害範囲は周辺375m四方でも異なりうる(区域外=安全の意味ではない)。評価語(安全/危険等)は含まない。提供できる災害種別は都道府県ごとのライセンス確認状況により異なる(一部県では未提供)。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。
get_disaster_context自治体の災害リスク要約・過去の災害履歴・防災計画の要点・避難所/インフラ文脈を1コールで取得する。データが無いブロックはcoverage=noneで正直に返す(全国網羅ではない、自社収集・公的データの集約ベース)。

引数や戻り値の詳細はAPIドキュメントのMCPの節にあります。

APIキーをヘッダで渡す方法

自分で書いたプログラムや、OAuthに対応していないMCPクライアントからは、APIキーをヘッダで渡します。キーは/developersで無料発行できます。

curl -X POST "https://kokudodb.jp/mcp" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

ツール一覧が返れば鍵とURLは正しく、残るはクライアント側の設定です。401 なら鍵が違うか失効しています。ChatGPTでの接続がうまくいかないときも、これで切り分けられます。

うまくいかないとき

プラグインの追加画面に「+」が見当たらない

開発者モードが有効になっているか確かめてください(設定、プラグイン、最下段)。無料プランではカスタムプラグインを追加できません。その場合は上のAPIキーで接続する方法をお使いください。

URLを入れても認証の設定が出ない

URLは https://kokudodb.jp/mcp です。末尾の /mcp が抜けているか、「トンネル」を選んでいる可能性があります。「サーバーのURL」を選んでください。

登録はできたのにツールが呼ばれない

入力欄で 国土DB と打って候補から選び、そのメッセージで使う指定にしてください。質問に自治体名やコード(例 13101)を入れると呼ばれやすくなります。

接続を解除したい

設定、プラグイン、国土DBの順に開くと解除できます。国土DB側のキーは/developersから失効できます。

429 が返る

レート制限(キーごと60 req/min、1日あたり通常1000リクエスト)を超えています。Retry-Afterヘッダの秒数だけ待ってから試してください。系統の違うシステムごとにキーを分けることはできますが、上限を回避する目的での分割は想定していません(有効なキーは1ユーザー5件まで)。

ほかのDBと一緒に使う

同じやり方で、当社の他のデータベースも同じ会話から呼べます。

サービス扱うものサーバーURL
EDINET DB上場企業の有価証券報告書https://edinetdb.jp/mcp
不動産DB不動産の取引価格・賃料推定https://fudosandb.jp/mcp
政策DB補助金・助成金https://seisakudb.jp/mcp

接続の手順は各サービスのドキュメントを確認してください。Claudeから使う場合はClaudeから使うをご覧ください。