mcp-atlas について
mcp-atlasは、米国の郡の土地筆情報や都市データサービスを、利用可能なクエリURLに対応付けるMCPサーバーです。AIクライアントで所有者、APN、住所、市のデータセットを調べる用途向けで、検証済みのエンドポイント情報を示しますが、土地筆レコード自体は取得しません。
主な機能
- 01郡のカバレッジと検索機能の確認
- 02曖昧な郡名やFIPSコードの特定
- 03土地筆エンドポイントとフィールドの取得
- 04所有者検索用クエリURLの生成
- 05市の違反、許可、ゾーニングデータの検索
活用シーン
- 01デューデリジェンス用の郡土地筆サービスの特定
- 02所有者名による土地筆クエリの準備
- 03道路名から許可や違反データを探す
MCP 対応
郡・市のデータセットのカバレッジ、エンドポイント情報、フィールド、実行可能なクエリURLを返すツールを提供します。クエリの実行や土地筆レコードの返却は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| state | string | いいえ | 任意:州の 2 文字略称(例:'IL')または州名の正式名称(例:'Illinois') |
詳細
@urbankitstudio/mcp-atlas
米国の51州(50州とDC)にまたがる499郡の区画ArcGIS RESTエンドポイント(合計497件)にアクセスし、Model Context Protocol(MCP)経由で所有者、APN、住所を検索します。
AI アシスタントが、UrbanKit Studio の手動検証済み郡区画GISサービスのアトラスに直接アクセスできる MCP サーバーです。Claude や Cursor に、対象地域のArcGIS RESTエンドポイント、所有者検索用の正確なクエリURL、区画データを調べるよう依頼できます。ArcGIS REST APIの規約を知っている必要はありません。
対象範囲: 米国の51州(50州とDC)にまたがる499郡、497エンドポイント、そのうち497件が稼働中(アトラス 0.6.40)。470郡にはエンドポイントがあります。残りの29郡については、アトラスに提供できない理由が記録されています(下記「提供できない郡」参照)。
クイックスタート
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加します。
{
"mcpServers": {
"mcp-atlas": {
"command": "npx",
"args": ["-y", "@urbankitstudio/mcp-atlas"]
}
}
}
Cursor
プロジェクトのルートにある .cursor/mcp.json(または全体設定の ~/.cursor/mcp.json)に追加します。
{
"mcpServers": {
"mcp-atlas": {
"command": "npx",
"args": ["-y", "@urbankitstudio/mcp-atlas"]
}
}
}
グローバルにインストール(任意)
npm install -g @urbankitstudio/mcp-atlas
以降は、npx -y @urbankitstudio/mcp-atlas の代わりに mcp-atlas をコマンドとして使用します。
ツール
最初の4つのツールは郡を調べる一連のワークフローで、郡をどれだけ正確に特定できるかによって使い分けます。5つ目の get_city_datasets は別のツールで、郡ではなく都市について回答します。
| 手元にある情報 | 使用するツール | 得られる情報 |
|---|---|---|
| 州、または情報なし | list_counties | 対象となる郡と、その郡で所有者検索が機能するかどうか。URLはありません。 |
| あいまいな郡名、誤記、またはFIPSコード | find_county | その参照に一致するすべての郡。各郡の名前とレコード |
| 正確な州と郡 | get_parcel_endpoint | その郡のエンドポイントURL、レイヤー、フィールド、サンプルクエリ |
| 郡と所有者名 | build_owner_query | その名前を検索する実行可能なURL |
| 都市名と、任意で通り名 | get_city_datasets | その都市の条例違反、建築許可、ゾーニング案件の各データセットと、実行可能なクエリURL |
find_county と get_parcel_endpoint は、郡ごとに同じレコードを返します。違いは郡の指定方法です。find_county は不確かな参照を受け付け、複数の候補を返す場合があります。一方、get_parcel_endpoint は正確な州と郡の組み合わせを受け取り、1つの郡について回答します。すでに郡がわかっている場合は、find_county を使う必要はありません。
このサーバーはクエリを実行せず、区画レコードも返しません。取得先のURLを伝えるだけです。URLからデータを取得するのはご自身で行ってください。
提供できない郡
find_county、get_parcel_endpoint、build_owner_query は、エンドポイントを返せない郡に対して、1つの回答を返します。これは、ホスト版 UrbanKit MCP サーバー、REST API、uks CLI が返すものと同じです。この回答は @urbankitstudio/atlas 0.6.38 の coverageAnswer() によるものです。
- アトラスにレコードがない場合(誤記もここに該当します):「This county is not in the UrbanKit atlas」と表示し、まずスペルを確認するよう促します。
- アトラスに郡の記録があるものの、提供可能なデータが公開されていない場合(公開表示が利用規約で禁止されているShelby TN、区画番号しかないColumbia PAなど):理由を1文で説明し、最後に確認した日付、次回確認日が設定されている場合はその日付、郡の担当窓口、および郡がデータを販売している場合は独自の製品を案内します。
どちらの場合も、郡の追加を無料でリクエストする方法を案内します。ホスト版MCPサーバーの request_county にそのまま渡せる本文、または POST https://urbankitstudio.com/api/atlas/request を用意しています。リクエストしても、郡が追加されるとは限りません。list_counties には引き続き、提供対象の郡のみが表示されます。
list_counties
対象範囲を確認します。「この郡は対象ですか?」「そこで何を検索できますか?」という質問に答えます。エンドポイント URL やフィールド名を含めず、郡ごとに1行で表示します。
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | No | 2文字の略称(IL)または正式名称(Illinois) |
プロンプトの例:「Illinois で対象となる郡をすべて一覧表示してください」
出力例:
ST | County | Slug | Coverage
--------------------------------------------------------------------
IL | Kane | kane-county | owner+APN
IL | Cook | cook-county | APN only
IL | DuPage | dupage-county | owner+APN
...
各 Coverage ラベルが示す内容:
| Label | Meaning |
|---|---|
owner+APN | build_owner_query が少なくとも1つのエンドポイントの URL を返します |
APN only (county publishes no owner name) | 確認済みの記録によると、その郡は利用可能な所有者名を提供していません |
location queries only | 属性検索に対応するエンドポイントはありません。区画はジオメトリで特定でき、所有者フィールドも返されます |
APN only (owner column not searchable) | 所有者列はありますが、その郡では名前による検索対象としていません。区画 ID または位置情報によるクエリで取得できます |
APN only | エンドポイントに所有者列の記載がありません |
find_county
正確に指定できない郡名を特定します。対象となるすべての郡を対象に、部分一致または誤記された名前、「County State」という形式の語句、または5桁の FIPS コードをあいまい検索します。一致した郡をそれぞれ表示するため、参照先が曖昧な場合は選択肢の一覧が返されます。一致ごとに、その郡の記録(エンドポイント URL、検索可能なフィールド名、所有者フィールド、サンプルクエリ、ライセンス)が含まれます。
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | 郡名(Kane)、郡名と州名(Kane IL)、または FIPS コード(17089) |
プロンプトの例:「Illinois の Kane County の区画エンドポイントを探してください」
get_parcel_endpoint
郡が特定できている場合に使う、標準の検索ツールです。完全な ArcGIS REST URL、レイヤーインデックス、検索可能なフィールド、所有者フィールド(または所有者検索を提供しない理由)、レイヤーが州全域または地域で共有されている場合は郡の Scope: 条件、汎用サンプルの ?where=…&f=json クエリ、および郡の UrbanKit ディープリンクを返します。所有者名を指定する場合は、サンプルクエリを手動で編集せず、build_owner_query を使用してください。
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | Yes | 2文字の略称または正式名称 |
county | string | Yes | 郡名(Kane または Kane County) |
プロンプトの例:「Illinois の Cook County の ArcGIS REST エンドポイントを教えてください」
build_owner_query
所有者名を指定して検索する唯一のツールです。個人名または会社名を、郡で確認済みの所有者/納税者フィールドに UPPER(field) LIKE UPPER('%NAME%') として設定します。これは大文字と小文字を区別しない部分一致検索で、取得または開くことのできる URL を返します。Connecticut の地域統合レイヤーなど、州全域または地域で共有されているレイヤーでは、郡のスコープ条件を前置して AND で結合し、(scope) AND UPPER(field) LIKE … とすることで、その郡の行だけを返します。
検索結果が得られない、または処理が停止するクエリを渡す代わりに、エンドポイントを利用できない理由を示します。
- 確認済みの記録によると、その郡は利用可能な所有者名を提供していません。
- レイヤーは属性検索にまったく対応していません(代わりに位置情報でクエリしてください)。
- 所有者列は名前による検索に対応していません(代わりに区画 ID または位置情報でクエリしてください)。
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | Yes | 2文字の略称または正式名称 |
county | string | Yes | 郡名 |
owner_name | string | Yes | 所有者/納税者名(部分一致) |
プロンプトの例:「Illinois 州 Kane County で 'Smith' が所有する物件の ArcGIS クエリを作成してください」
出力例:
County: Kane, Illinois
Owner field: TaxName
WHERE clause: UPPER(TaxName) LIKE UPPER('%SMITH%')
Query URL:
https://gistech.countyofkane.org/arcgis/rest/services/KanePINList/MapServer/0/query
?where=UPPER(TaxName)%20LIKE%20UPPER('%25SMITH%25')
&outFields=PIN,TaxName,SiteAddress,SiteCity,MailingAddress
&returnGeometry=false&f=json&resultRecordCount=25
get_city_datasets
市の規則違反、建築許可、ゾーニング案件のデータセットです。市のスラッグ(fort-worth)または名前(Fort Worth、Fort Worth, TX)を指定し、必要に応じて kind と通りの住所を指定すると、その市で検証済みの各データセットが返されます。返される情報は、エンドポイントとプロバイダー(Socrata、ArcGIS、CKAN、CARTO)、住所の照合に使われる列、日付フィールド、データセットの定義に含まれるフィルター、対象範囲と鮮度に関する注記です。また、通りを指定すると、市独自のサーバーに対して実行できる query_url も返されます。対象となるすべての市を一覧表示するには、city を省略してください。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
city | string (max 80) | いいえ | 市のスラッグまたは名前。対象の市を一覧表示するには省略します |
state | string (max 40) | いいえ | 2 文字のコード、または州名。同じ名前が 2 つの州で使われている場合に指定します |
kind | violations | permits | zoning | いいえ | 指定した種類のデータセットのみを返します |
street | string (max 120) | いいえ | 通りの住所のみ。例:Commerce または 600 Commerce St。最初のカンマ以降は切り捨てられるため、住所全体を渡しても安全です |
- 2 つの市で同じ名前が使われている場合、候補とともに
found: false, ambiguous: trueが返されます。stateを指定して再度実行してください。レジストリにない市の場合は、その州、または参照情報に郡名がある場合はその郡の対象市とともにfound: falseが返されます。 - ポイント検索(ポリゴンの案件記録または現在のゾーニングマップ)の場合、
query_urlはnullになります。その場合、データセットのquery_templateに{LON},{LAT}プレースホルダーを埋めるリクエストが含まれています。 - 対象範囲は郡ではなく市の境界内です。これらのテーブルには所有者データは含まれません。区画の所有者情報には、上記の郡ツールを使用してください。
- 郡ツールと同様、このツールは何も取得しません。アトラスパッケージの情報を返し、実行用の URL を提供します。Socrata は匿名の呼び出しを制限するため、大量に利用する場合は独自の
X-App-Tokenヘッダーを送信してください。 - ホスト型の UrbanKit MCP が提供するものと同じツールで、公開されている入力とレスポンスキーも同じです。stdio サーバーはこのスキーマの引数を厳密に検証します。
kindは小文字のviolations、permits、zoningのいずれかである必要があります。
プロンプトの例:「Dallas の 600 Commerce St にある未処理の建築許可は、どこから取得できますか?」
出力例(抜粋):
{
"found": true,
"city": { "slug": "dallas", "name": "Dallas", "state_abbrev": "TX", "county_slug": "dallas-county" },
"street": "600 Commerce St",
"datasets": [
{
"kind": "permits",
"provider": "socrata",
"endpoint": "https://www.dallasopendata.com/resource/e7gq-4sah.json",
"address_field": "street_address",
"street_used": "600 Commerce St",
"query_url": "https://www.dallasopendata.com/resource/e7gq-4sah.json?$where=upper(street_address)%20like%20upper('%25600%20Commerce%20St%25')&$limit=30"
}
]
}
会話例
ユーザー: イリノイ州 Kane County の物件についてデューデリジェンスを行っています。「Blackstone」が所有する区画をすべて見つけられますか?
Claude(mcp-atlas を使用):
get_parcel_endpointを呼び出し →gistech.countyofkane.orgの URL を取得し、所有者フィールドがTaxNameであることを確認しますowner_name=Blackstoneを指定してbuild_owner_queryを呼び出し → すぐに使える取得用 URL が返されます- 必要に応じて URL を取得し、区画の結果を整形します
アトラスの対象範囲
アトラスは UrbanKit Studio が管理しています。すべてのエンドポイントは手動で検証されています。所有者/納税者フィールドを持つ郡では名前による検索ができ、PIN のみを扱う郡では APN/区画番号による検索ができます。
対象範囲の全体マップ:https://urbankitstudio.com/parcel-atlas
データ
アトラスのデータはパッケージに埋め込まれています(起動時のネットワーク呼び出しはありません)。基盤となる @urbankitstudio/atlas SDK は、プログラムから使用できるよう別途公開されています。
Socket が警告する内容と、そのうち当プロジェクトに該当するもの
Socket のサプライチェーンスキャナーは、このパッケージを70点台半ばと評価しています。詳細を確認すると、警告の一覧が表示されます。各警告を確認した結果は次のとおりです。
| 警告 | 該当箇所 | 内容 |
|---|---|---|
usesEval | 当プロジェクトではありません | src/ 内に eval も new Function もありません。依存関係に起因するものです。 |
unmaintained (21) | 当プロジェクトではありません | 推移的依存関係の最終公開年は2017~2021年です。 |
mixedLicense | 当プロジェクトではありません | BSD-3-Clause AND ISC として公開されている依存関係です。 |
noTests | 設計上、当プロジェクトに該当します | files には dist のみが含まれます。テストスイートは test/ にあり、CI で実行されます。テストを tarball に含めるほうが問題です。 |
networkAccess、filesystemAccess、envVars、shellAccess | 当プロジェクトに該当します | MCP サーバーは stdio 経由でクライアントと通信し、自身の設定を読み取ります。これらの機能がなければ、サーバーは役割を果たせません。 |
unpopularPackage、noV1 | 当プロジェクトに該当します | ダウンロード数と 0.x のバージョンが原因です。どちらも時間が経てば解消しますが、コードの問題ではありません。 |
脆弱性とライセンスの評価はいずれも 100、品質は 99 です。バッジに表示される数値は サプライチェーン のサブスコアであり、最も大きな減点要因はダウンロード数です。セキュリティバッジを装った人気度の指標にすぎません。数値ではなく、上記の一覧を確認してください。
4つのアクセスに関する警告は、サーバーが自身の設定を読み取り、stdio 経由でクライアントと通信するために必要なものです。それ以上のことは行いません。クエリを実行することも、荷物のレコードを返すこともありません。
ライセンス
MIT — © 2026 UrbanKit Studio
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。