mcpField
M
mcp-atlas

mcp-atlas

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

关于 mcp-atlas

mcp-atlas 是 MCP 服务,将美国县级地块和城市数据服务整理为可用的查询 URL。它适合通过 AI 客户端查找业主、APN、地址或市政数据;提供经核验的端点信息,但不获取地块记录。

主要功能

  1. 01浏览县级覆盖范围和搜索能力
  2. 02解析模糊县名和 FIPS 代码
  3. 03获取地块端点详情和字段
  4. 04生成业主搜索查询 URL
  5. 05查找城市违规、许可和分区数据集

适用场景

  1. 01为尽职调查查找县级地块服务
  2. 02为业主名称生成地块查询
  3. 03查找某街道的许可或违规数据

MCP 相关

提供工具以返回县和城市数据集的覆盖范围、端点详情、字段及可执行的查询 URL。它不会执行查询,也不返回地块记录。

配置

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

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

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

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

工具

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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。