loa-mcp-server
MCP server that searches Japanese addresses and returns their locations as polygons or points using the open 住所LOD dataset, enabling geocoding, reverse geocoding, batch GeoJSON export, and map visualization.
README
住所LOD MCPサーバー
日本の住所を検索し、その位置をポリゴンまたはポイントで取得できる、ローカル実行(stdio)のMCPサーバーです。住所LODを利用しており、認証不要・オープンライセンスのデータソースなのですぐに使い始められます。
Claude Desktop や Claude Code のようなMCP対応クライアントから、次のようなことができます:
- 住所の部分一致検索(例:「永田町」→候補一覧)
- 住所からポリゴン/座標の取得(都道府県〜丁目はポリゴン、番地は代表点)
- 複数住所をまとめて1回のGeoJSON
FeatureCollectionとして取得(地図表示向け。隣接ポリゴン間の境界を保ったまま座標点数を間引ける) - 住所階層のドリルダウン(都道府県→市区町村→町丁目)
- 町丁目配下の番地一覧
- 緯度経度からの近傍住所検索(逆ジオコーディング)
- 47都道府県の正式名称一覧取得
- 複数住所の取得結果をローカルファイルへ直接保存(1MBのレスポンス上限を回避)
郡名・政令指定都市の市名の省略、全角数字・漢数字・異体字(ケ/ヶ/ヵ)などの表記ゆれも自動的に補完します。
Tools
| Tool | 概要 |
|---|---|
search_address |
住所の部分一致検索 |
get_address_location |
住所1件のポリゴン/座標を取得。simplifyで座標点数を間引ける |
get_address_locations |
複数住所をまとめて取得(最大50件)。地図表示向けで、隣接ポリゴン間の境界を保ったままsimplifyで間引ける |
list_child_addresses |
住所階層のドリルダウン(都道府県→市区町村→町丁目) |
list_banchi |
町丁目配下の番地一覧 |
reverse_geocode_address |
緯度経度→近傍住所(逆ジオコーディング) |
list_prefectures |
47都道府県の正式名称一覧 |
save_address_locations_to_file |
get_address_locationsと同じ複数住所取得だが、結果を会話に含めずローカルファイルへ書き出す。1MBのレスポンス上限を回避できるため、47都道府県すべてを分割せず1回で保存できる |
号(建物番号)は元データに存在しないため、どのToolを使っても番地(街区)レベルまでが限界です。
必要環境
- Node.js 18.17以上
セットアップ
npm install
npm run dev # tsx watch でホットリロード起動(stdio)
Claude Desktop への登録
事前にビルドしておきます:
npm run build
claude_desktop_config.jsonに以下を追加します(argsのパスは実際にリポジトリを配置した場所の絶対パスに書き換えてください):
{
"mcpServers": {
"loa-mcp-server": {
"command": "node",
"args": ["/path/to/loa-mcp-server/dist/index.js"]
}
}
}
Windowsの場合はパス区切りをエスケープした\\で指定します(例: "C:\\path\\to\\loa-mcp-server\\dist\\index.js")。
Tips: Claude Desktopは「日本地図を作りたい」のような依頼でも、このMCPサーバーを使わずWeb検索に頼ろうとすることがあります。プロンプトに「住所LOD MCPサーバーを使って」のようにサーバー名を明示すると、確実にこのサーバーのToolが呼ばれます。
Claude Code への登録
プロジェクト直下の.mcp.jsonに登録済みです。このリポジトリをClaude Codeで開くと自動的に検出されます。
使い方の例
プロンプトの冒頭に「住所LOD MCPサーバーを使って」と入れると、このMCPサーバーが確実に呼ばれやすくなります(Claude DesktopがWeb検索など別の手段に頼ろうとすることがあるため)。
「住所LOD MCPサーバーを使って、永田町の場所を教えて」
search_address(query:"永田町", prefecture:"東京都")で候補を検索- 候補の
uriをget_address_locationに渡してポリゴン/座標を取得
「住所LOD MCPサーバーを使って、東京23区すべてをポリゴンとして地図に表示したい」
list_child_addresses(parent:"東京都")で市区町村一覧を取得し、「〇〇区」の23件のuriを選ぶget_address_locations(addresses:[23件のuri], simplify:"medium")で1回のFeatureCollectionとしてまとめて取得simplifyはトポロジーを保持するため、区同士の境界に隙間ができない
「住所LOD MCPサーバーを使って、東京都千代田区永田町1丁目に含まれる番地すべての位置を地図に表示したい」
list_banchi(town:"東京都千代田区永田町", chome:1)で番地一覧を取得- 各番地を住所文字列に組み立て(例:「東京都千代田区永田町1丁目6」)、
get_address_locations(addresses:[組み立てた住所一覧])でまとめて取得 - 番地レベルはポリゴンを持たず代表点(Point)のみが返る
「住所LOD MCPサーバーを使って、この緯度経度(35.68, 139.75)はどこの住所か教えて」
reverse_geocode_address(lat:35.68, long:139.75)で近傍候補(町丁目レベル)を取得
「住所LOD MCPサーバーを使って、47都道府県すべてを結合した日本地図を作りたい」
list_prefectures()で47都道府県の正式名称を取得(手で列挙すると書き漏らしが起きるため、必ずこのToolを使う)- 陸地のまとまりで5グループに分ける: 北海道/本州/四国/九州/沖縄
- 各グループごとに
get_address_locations(addresses:[グループ内の県], dropSmallIslands:true, simplify:"medium")を呼ぶ(計5回) - 47都道府県を1回にまとめると多くのMCPクライアントの1MB制限を超えるため、必ず5分割する
戻り値のgeometryは標準的なGeoJSON(RFC 7946)なので、LeafletのL.geoJSON()やMapLibre GL JS、deck.gl等の地図ライブラリにそのまま渡せます。
47都道府県すべてを結合した日本地図についての補足
Claude Desktop等の多くのMCPクライアントには、Tool呼び出し1回の結果が約1MBを超えると失敗する制限があります。北海道・本州・四国・九州・沖縄は互いに海で隔てられているため、上記の通り5グループに分ければ通常は境界に隙間は生じません(唯一の例外: 岡山県⇔香川県は瀬戸内海上の小島の行政界を共有しており、この1境界だけはズレる可能性があります)。サーバー側にも、応答が大きくなりすぎる場合に自動でより軽量な設定へ切り替える安全弁がありますが、47都道府県すべてを1回にまとめるケースだけはこの安全弁でも救えないため、必ず5分割してください。
47都道府県分のGeoJSONファイルが欲しいだけの場合
「住所LOD MCPサーバーを使って、47都道府県すべてのポリゴンを1つのGeoJSONファイルに保存して」
list_prefectures()→save_address_locations_to_file(addresses:[47件], outputPath:"japan.geojson")を1回呼ぶだけでよいsave_address_locations_to_fileは結果を会話に返さずローカルファイルへ直接書き出すため、1MBのレスポンス上限を受けない。5グループに分割する必要はなく、離島を含む正確な形状のまま1回で保存できる- 「地図を作りたい/表示したい/見せてほしい」という依頼にはこのToolを使わないこと。書き出したファイルの中身は会話に含まれずClaude自身は読めないため、地図(HTMLやアプリ)を描画できない。その場合は上記の「47都道府県すべてを結合した日本地図を作りたい」の例(
get_address_locationsを5グループに分割)を使う。「ファイルとして保存/エクスポートしてほしい」のように、ファイルを受け取るだけでよい依頼のときだけこちらを使う
応用事例: 境界データに外部の統計データを重ねた色分け地図
「住所LOD MCPサーバーを使って東京23区のポリゴンを取得して、それぞれの人口を色分け地図にしたい」
list_child_addresses(parent:"東京都")で23区のuriを取得し、get_address_locations(addresses:[23件のuri], simplify:"medium")で境界(GeoJSON)をまとめて取得- 人口データは住所LODの範囲外(行政区域の境界・住所を扱うデータソースであり、統計データは持たない)。Claudeが用意した人口データを、取得した境界の
properties(区名等)と突き合わせて色分け(コロプレス図)を作成する - このサーバーは境界データの取得までを担い、統計データの用意・重ね合わせ・描画はClaude側の仕事という役割分担になる。実際にClaude Desktopでこのプロンプトを使い、意図通りの人口別色分け地図が作成できることを確認済み

上記はClaude Desktopがこのプロンプトから生成したHTML(Leaflet地図)のキャプチャです。
「住所LOD MCPサーバーを使って47都道府県すべてのポリゴンを取得して、それぞれの人口を色分け地図にしたい」
- 上記の「47都道府県すべてを結合した日本地図を作りたい」と同じ手順(
list_prefectures()→ 5グループに分けてget_address_locationsを5回)で境界データを取得し、23区の例と同様に人口データ(住所LODの範囲外、Claude側で用意)を重ねて色分け地図にする - 既知の注意点: 取得データ量を抑えようとして、Claudeが一部の地域(実例では四国・九州・沖縄)を自己判断でポリゴンではなく代表点の円マーカーに置き換えてしまうことがある。これはこのサーバーのTool呼び出し・レスポンスの時点では起きておらず(データ自体は正しく全都道府県分取得できている)、その後のHTML等を組み立てる生成過程でのClaude側の判断であるため、サーバー側から検知・防止することはできない
- 回避方法: 一部の地域が円マーカー等に簡略化されていたら、「四国・九州・沖縄も省略せずポリゴンで表示して」のように、取得済みのデータをそのまま使うよう明示的に指示し直す。実際にこの追加指示で全都道府県がポリゴン表示に修正されることを確認済み

上記はClaude Desktopがこのプロンプトから生成したHTML(Leaflet地図)のキャプチャです。
元データについて
このMCPサーバーは住所LODが公開するデータを利用しています。以下は2026年8月時点の情報です。住所LOD側の更新により変わることがあるため、最新情報は住所LODサイトを参照してください。
- データ版: 2026年版(
https://uedayou.net/loa/で本番稼働中) - ライセンス: CC BY 4.0互換(出典表記のもとで商用利用・二次配布・加工可)
| データ | 出典 | 基準日 |
|---|---|---|
| 都道府県・市区町村 | 国交省 国土数値情報 | 2025年版(2025-01-01) |
| 町丁目 | 総務省統計局 小地域境界データ | 2020年国勢調査版(5年ごと更新) |
| 番地 | 国交省 位置参照情報 街区レベル | 令和6年版(2024年基準) |
号(建物番号)は元データに存在しないため含まれません。また番地データは都市計画区域内が中心で、農村・山間部など区域外は網羅されていません。
免責事項
- 本ソフトウェアは現状有姿(as-is)で提供され、開発者はその動作・正確性・可用性についていかなる保証も行いません。
- 本ソフトウェアが問い合わせる住所LODは無償で公開されている共有のサービスです。多数のユーザーからのアクセスが同時に集中した場合、または特定の利用者から大量のアクセスがあった場合、住所LOD側の判断でアクセスしづらくなる、または利用が制限されることがあります。
- 住所LODが提供するデータについては、その正確性の維持に努められていますが、内容の正確性・完全性・最新性は保証されません。本ソフトウェアの出力を利用する際は、その正誤・妥当性を利用者自身の責任で判断してください。
- 以上を踏まえ、本ソフトウェアおよび住所LODは各自の判断と責任においてご利用いただき、その結果生じた損害について開発者は責任を負いません。
ライセンス
本ソフトウェア(コード)はMIT Licenseのもとで公開しています。利用しているデータ(住所LOD)のライセンスは上記「元データについて」の通り別途CC BY 4.0互換です。
開発
npm run typecheck # 型チェック
npm test # vitest
npm run build # dist/ へコンパイル
npm run inspector # MCP Inspector で対話的に確認
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。