mcpField
M
mcp-atlas

mcp-atlas

本地服务
github.com/urbankitstudio法律与政务11 周前更新

关于 mcp-atlas

mcp-atlas 为 AI 助手提供经人工核验的美国县级地块 GIS 服务目录,面向需要查找产权人、APN 或地址数据的用户。它生成 ArcGIS REST 查询 URL,但不执行查询或返回地块记录。

主要功能

  1. 01浏览县级覆盖范围和产权人搜索支持
  2. 02模糊匹配县名、州名或 FIPS
  3. 03获取县级 ArcGIS REST 端点与字段
  4. 04生成产权人名称查询 URL
  5. 05查找城市违规、建筑许可和分区数据集

适用场景

  1. 01确认某县是否支持产权人查询
  2. 02为县名或 FIPS 查找地块端点
  3. 03构造指定产权人的查询 URL
  4. 04查找城市街道对应的许可数据集

MCP 相关

这是一个 MCP 服务,向 MCP 客户端提供县级地块端点、查询 URL 和城市数据集信息。它返回可供调用者自行访问的 URL,不会执行数据查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"leoyrh-mcp-atlas": {
"command": "npx",
"args": [
"-y",
"@urbankitstudio/mcp-atlas"
]
}
}
}
启动命令npx -y @urbankitstudio/mcp-atlas

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@urbankitstudio/mcp-atlas0.2.3

工具

4

收录的工具列表 · 更新于 1 周前

参数类型必填说明
statestring否可选:两位字母的州缩写(例如 'IL')或完整州名(例如 'Illinois')

详细介绍

Socket 徽章

@urbankitstudio/mcp-atlas

mcp-atlas MCP 服务

通过模型上下文协议(MCP),查询美国 51 个州(50 个州加 DC)中 499 个县的地块 ArcGIS REST 端点(共 497 个端点),以查找业主、APN 和地址。

这是一个 MCP 服务,可让 AI 助手直接访问 UrbanKit Studio 手动验证的县级地块 GIS 服务图集。让 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

然后使用 mcp-atlas 作为命令,而不是 npx -y @urbankitstudio/mcp-atlas。


工具

前四个工具组成一个县级工作流,它们的区别在于你对县名的掌握程度。第五个工具 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 接受准确的州名和县名,并返回一个县的信息。如果你已经知道县名,可以跳过 find_county。

此服务不会执行查询,也不会返回地块记录。它会告诉你要获取的 URL;获取数据由你自行完成。

无法提供服务的县

对于没有可返回端点的县,find_county、get_parcel_endpoint 和 build_owner_query 会给出相同的答复;托管的 UrbanKit MCP 服务、其 REST API 和 uks CLI 也会返回相同的文本。答复来自 @urbankitstudio/atlas 0.6.38 中的 coverageAnswer():

  • 图集中没有该县的记录(拼写错误也会归入此类):提示“该县不在 UrbanKit 图集中”,并建议先检查拼写。
  • 图集中有该县的记录,但该县未发布我们可提供服务的数据(田纳西州 Shelby 县,其条款禁止公开展示;宾夕法尼亚州 Columbia 县,其图层仅含地块编号):用一句话说明原因,注明上次检查日期、已设定时的下次检查日期、县级办公室的信息,以及在县里出售数据的情况下注明其自有产品。

两种答复最后都会提供免费的县级数据请求:一份可直接用于托管 MCP 服务 request_county 的请求正文,或可发送到 https://urbankitstudio.com/api/atlas/request 的 POST 请求。提交请求并不保证我们会添加该县。list_counties 仍只会列出我们提供服务的县。

list_counties

浏览覆盖范围。回答“是否覆盖这个县?”以及“我可以在那里搜索什么?”——每个县占一行,不含端点 URL 或字段名称。

ParameterTypeRequiredDescription
statestringNo两字母缩写(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 标签的含义:

LabelMeaning
owner+APNbuild_owner_query 会返回至少一个端点的 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、可搜索字段名称、所有者字段、示例查询和许可证。

ParameterTypeRequiredDescription
querystringYes县名(Kane)、名称+州(Kane IL)或 FIPS(17089)

示例提示词:“查找 Illinois Kane County 的地块端点”


get_parcel_endpoint

知道县名后,默认使用此工具进行查询。返回完整的 ArcGIS REST URL、图层索引、可搜索字段、所有者字段(或未提供所有者查询的原因)、当图层由全州或区域共享时该县的 Scope: 谓词、通用示例 ?where=…&f=json 查询,以及该县的 UrbanKit 深层链接。若要查询指定所有者,请使用 build_owner_query,而不要手动编辑示例查询。

ParameterTypeRequiredDescription
statestringYes两字母缩写或全名
countystringYes县名(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 或位置查询)。
ParameterTypeRequiredDescription
statestringYes两字母缩写或全名
countystringYes县名
owner_namestringYes所有者/纳税人名称(部分匹配)

示例提示词:“为 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

城市违规、建筑许可和分区案例数据集。提供城市 slug(fort-worth)或名称(Fort Worth、Fort Worth, TX),还可以选择提供 kind 和街道地址行;该工具会返回该城市的每个已验证数据集:端点和提供方(Socrata、ArcGIS、CKAN 或 CARTO)、用于匹配地址的列、日期字段、数据集定义中的筛选条件、覆盖范围和新鲜度说明;如果提供了街道地址,还会返回可直接对城市自有服务发起查询的 query_url。省略 city 可列出所有覆盖的城市。

参数类型必填说明
citystring(最长 80)否城市 slug 或名称;省略则列出覆盖的城市
statestring(最长 40)否两位字母代码或州名;用于名称在两个州都存在的情况
kindviolations | permits | zoning否仅返回该类型的数据集
streetstring(最长 120)否仅街道地址行,例如 Commerce 或 600 Commerce St。从第一个逗号处截断,因此可以安全地传入完整地址
  • 如果两个城市名称相同,返回结果为 found: false, ambiguous: true,并附上候选城市;再次查询时提供 state。如果城市不在注册表中,返回结果为 found: false,并列出该州内的覆盖城市;如果参考数据中注明了所属县,则列出该县内的覆盖城市。
  • 对于点查询(多边形案卷或当前分区地图),query_url 为 null;此时数据集的 query_template 会提供请求模板,其中包含需要填入值的 {LON},{LAT} 占位符。
  • 覆盖范围是城市辖区,而非整个县。这些表格不包含所有者数据:如需查询地块所有者,请使用上文的县级工具。
  • 与县级工具一样,该工具不会获取任何数据。它根据 atlas 软件包中的数据作答,并提供供你自行使用的 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"
    }
  ]
}

对话示例

**用户:**我正在对 Illinois 州 Kane County 的房产做尽职调查。你能帮我找到所有归「Blackstone」所有的地块吗?

Claude(使用 mcp-atlas):

  1. 调用 get_parcel_endpoint → 获取 gistech.countyofkane.org URL,并确认所有者字段为 TaxName
  2. 使用 owner_name=Blackstone 调用 build_owner_query → 返回可直接使用的 fetch URL
  3. 可选择获取该 URL 并整理地块结果

Atlas 覆盖范围

Atlas 由 UrbanKit Studio 维护。所有端点均经过人工验证。包含所有者/纳税人字段的县支持按姓名完整查询;仅支持 PIN 的县则支持按 APN/地块编号查询。

完整覆盖地图:https://urbankitstudio.com/parcel-atlas


数据

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。徽章显示的数字是供应链子评分,而扣分最多的单项是下载量——一种披着安全徽章外衣的人气指标。请看上面的清单,而非那个数字。

这四项访问警报只是让服务能够读取自身配置并通过 stdio 与客户端通信,仅此而已。它仍然不会执行查询,也不会返回包裹记录。

许可证

MIT — © 2026 UrbanKit Studio

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。