はじめに
近年、AI は単に質問へ回答するだけでなく、外部サービスやデータを利用してタスクを実行する「エージェンティック AI」へと進化しています。こうした AI が外部システムと連携する仕組みとして注目されているのが Model Context Protocol (以下、MCP) です。 ArcGIS 開発者コミュニティでもこれまでたびたび取り上げてまいりましたが、地理空間分野でも MCP の活用が広がっており、行政オープンデータや衛星データ、さらには ArcGIS の位置情報サービスを自然言語から利用できるようになっています。本記事では、地理空間業界における MCP と、米国Esri が提供する MCP for ArcGIS Location Services (ベータ) について紹介します。
MCP とは
MCP は、AI と外部ツールやデータを接続するためのオープン標準規格です。従来はサービスごとに個別の API 連携が必要でしたが、MCP を利用することで AI は共通の仕組みを通じてさまざまなサービスを利用できます。
MCP は主に以下の 3 つの要素で構成されます。
- MCP ホスト
- Claude Desktop や Visual Studio Code (GitHub Copilot)、ChatGPT など、ユーザーが利用する AI アプリケーションです。
- MCP クライアント
- MCP ホストの内部で動作し、MCP サーバーと通信を行います。
- MCP サーバー
- 外部サービスやデータソースを MCP 経由で公開するサーバーです。 MCP サーバーからは以下の機能を提供され、AI は必要に応じてこれらを参照して、利用します。
- ツール (実行可能な機能)
- リソース (データ)
- プロンプト テンプレート
日本の地理空間業界における MCP
日本の地理空間分野でも MCP サーバーの開発、公開が進んでいます。下記には日本国内で公開されている MCP サーバーの代表例を羅列しています。
- MLIT DATA PLATFORM MCP Server (国土交通省)
国土交通省が提供する「国土交通データプラットフォーム」上のデータを AI が利用するための MCP サーバーです。自然言語で行政データを検索・取得できるため、防災、都市計画、インフラ分野での活用が期待されています。 - 地理空間MCP Server - MLIT Geospatial MCP Server - (α版) (国土交通省)
国土交通省が提供する「不動産情報ライブラリ」のデータを AI が利用するための MCP サーバーです。対話形式で直感的に不動産情報ライブラリのデータを検索・取得することができます。 - JAXA Earth API 生成 AI 連携 (JAXA)
JAXA が提供する「JAXA Earth API for Python」から取得可能な衛星画像や環境データを AI から取得でき、災害監視や環境分析などへの活用が期待されています。
これらの例では、データの取得、検索を目的としており、AI によって取得できたデータの解析、分析がメインになっています。ただ、AI 単体では地理空間内の関係を考慮した検索や解析が困難です。例えば、特定の位置からの近くの施設などを AI によって検索することは可能ですが、あくまで直線距離での検索にとどまるため、実際の道に沿ったルート解析などはできません。この点を解決するためには、ルート解析ツールを AI が使えるようにする必要があります。
MCP for ArcGIS Location Services
MCP for ArcGIS Location Services は、ArcGIS Location Platform で利用可能な Location Services の一部を MCP 経由で利用できる米国Esri 提供の MCP サーバーです。これらを利用することで AI が ArcGIS の位置情報サービスを自然言語から利用できるようになります。現在のパブリック ベータ版では、ArcGIS Location Services の代表的な機能が MCP ツールとして提供されています。
ツール | 概要 |
|---|
find_address_candidates | 住所や地名から位置を検索 *1 *2 |
reverse_geocode | 座標から住所を取得 *1 *2 |
solve_route | 出発地と目的地のルートを計算 |
elevation_at_locations | 指定地点の標高を取得 |
map_with_overlay | 地図画像を生成 |
get_topic_fields | 指定した国で利用可能なトピックに関する
フィールド セットを取得 *3 |
describe_location | get_topic_fields ツールで取得したフィールドで
指定された場所の説明を取得 |
*1 データを保存する場合のみ有効です。
*2 クレジットカード登録が必須です。
*3 国ごとに利用可能なデータトピックの一覧については、「データブラウザー」を参照してください。
上記のツールが AI で利用できるようになり、例えば、
「東京駅から最寄りの避難所までのルートを地図付きで表示して」
という指示に対して、ジオコーディング、ルート解析、地図画像の出力などが実行できます。MCP for ArcGIS Location Services は現在、パブリック ベータ版として公開されており、Early Adaptar Community に参加することでアクセスできるようになります。詳しくは、米国Esriの ArcGIS Blog をご確認ください。
国土交通データプラットフォームと MCP for ArcGIS Location Services を連携させてみよう
本記事では、複数拠点の CSV ファイルを使って、各拠点に一番近い避難所へのルートを Claude Desktop で探索してもらいましょう。避難所の情報は国土交通データプラットフォーム (MLIT DATA PLATFORM MCP Server) から取得し、最後に標高の情報まで出してもらうようにします。Claude Desktop で MCP サーバーを利用するときは claude_desktop_config.json の設定をする必要がありますが、今回の例では下記のように設定しています。
{
"mcpServers": {
"mlit-dpf-mcp": {
"command": "<python.exe までのパス>\\python.exe",
"args": [
"<server.py までのパス>\\server.py"
],
"env": {
"MLIT_API_KEY": "<国土交通データプラットフォーム アカウントの API キー>",
"MLIT_BASE_URL": "https://www.mlit-data.jp/api/v1/",
"PYTHONUNBUFFERED": "1",
"LOG_LEVEL": "WARNING"
}
},
"arcgis-location-services": {
"command": "npx",
"args": [
"mcp-remote",
"https://location-services-mcp.arcgis.com/beta/mcp",
"--header",
"Authorization:${ESRI_AUTH_HEADER}"
],
"env": {
"ESRI_AUTH_HEADER": "Bearer <ArcGIS Location Platform アカウントの API キー>"
}
}
}
}
なお、それぞれの MCP サーバーの構築や設定方法については下記を参考にしてください。
MCP for ArcGIS Location Services を利用するには、ArcGIS Location Platform のアカウントが必要です。アカウントをお持ちでない方はコチラを参考に作成することで利用できるようになります。
各拠点に一番近い避難所のルート解析
国土交通データプラットフォームには、国土交通省をはじめとしたさまざまな機関から提供されているデータが配置されています。これらのデータの中から全国の避難所を取得し、複数拠点の CSV ファイルから一番近い避難所を検索してもらいます。
使用するモデルは Sonnet 5 を使い、MCP ツール以外の情報源を利用しないよう、Web 検索を無効化して実施します。プロンプトは下記のように入力します。
添付した CSVファイルは、ESRIジャパンの各事業所の一覧です。それぞれの事業所周辺 1km 圏内にある避難所から最も近い避難所のうち 3 施設を実際の徒歩ルート距離 (m) と時間 (分) から割り出し、最も移動時間が短く、標高が高い位置にある避難所の施設名順に上から並べ、下記の表形式で出力してください。事業所名、避難所の施設名、施設までの徒歩距離 (m)、想定所要時間 (分)、施設のある位置の標高 (m)
今回は、MCP for ArcGIS Location Services を利用する場合と利用しない場合の比較もしてみましょう。
先に事業所ごとに一番近い避難所を割り出すために事前に ArcGIS Online の Map Viewer 上で実行したルート解析の結果を確認します。また、標高については ArcGIS Location Platform で利用可能な ArcGIS Elevation service から避難所のポイントごとに取得した標高値を参照します。実行した例として永田町オフィスの場合を下図に表示しています。
事業所ごとに手作業で実行した結果は下図のように Excel にまとめています。
今回は上図を正として、出力結果を確認していきます。ちなみに筆者がこの表を作るためにかけた時間は、使用するデータの検索やルート解析を実行するための作業など下準備も含めると 1 時間ほどでした。MCP 経由で AI に作業してもらうことで減る時間についても注目してみましょう。
MCP for ArcGIS Location Services を利用しない場合
プロンプトを実行して得られた結果を Excel 形式で見やすくしてもらったものが下図となります。実行時間は 7 分ほどでした。
Web 検索が使えない環境では、実際の情報を使えないため表には標高については、取得されていないようです。推定所要時間については、AI が直線距離を 1.2 倍して徒歩換算した概算値 (分速 80 m想定) を出力しているようです。結果を比較してみましょう。左側が手作業での結果、右側が AI が出力した結果です。赤字が異なっている箇所です。
上図をみるとかなり異なっています。やはり実際の道路データがないと正確な距離や所要時間は出せていないようです。
MCP for ArcGIS Location Services を利用した場合
次に MCP for ArcGIS Location Services を使った場合の結果は下図の通りです。複数のツールを用いているため実行時間は少しかかって 10 分ほどでした。こちらも Excel 形式で見やすくしてもらっています。
標高も取得されているほか、所要時間も概ね妥当な結果となっています。ただ、移動距離については、一部マイルで計算されているものがありそうです。この辺りはプロンプトにメートルで出力するように指示するか、skill などで事前に指定しておくことで回避できそうです。実際にマイルからメートルへの変換をしてもらった結果を下図に出してもらいました。
メートルに修正してもらった結果を比較してみましょう。左側が手作業での結果、右側が AI が出力した結果です。前のセクションと同様に赤字が異なっている箇所ですが、徒歩距離は ± 5 m 程度、所要時間は ± 0.5 分程度の差は黒字としています。
避難所の top 3 はおおよそ一致していそうですが、いくつか異なっている箇所が確認できます。特に札幌オフィスですが、top 3 は一致していますが、距離や時間が異なっています。追加で上記のルート解析の結果の違いを確認するために AI に地図画像を出力してもらって比較してみましょう。左側が手作業で実行した結果をマップ上に描画したもので右側が MCP for ArcGIS Location Services の map_with_overlay で取得した画像です。
比較してみたところ、どうやらスタート地点とゴール地点の座標がそれぞれ異なっていたようです。このようにルート解析の結果などを含めた地図画像を出力することで実際の地図上での結果を確認することができます。
ここまで、2 つのパターンで比較してまいりましたが、いずれにしても、データやツールの実行などを待つことなく自然言語で指示することで 10 分程度で実行できるのはかなり魅力的ですね。
最後に
MCP はエージェンティック AI を実現するための共通基盤として急速に普及しています。地理空間分野でも国内でも国土交通省や JAXA が MCP 対応を進めており、自然言語から地理空間データや位置情報サービスを利用できる環境が整いつつあります。MCP for ArcGIS Location Services は、ArcGIS の強力な位置情報機能を AI エージェントへ簡単に組み込めるため、これからの GIS × AI 活用を体験する最初の一歩として最適なサービスです。皆様もぜひお手元でお試しください。
参考文献