mcpField
C
Charlotte Open City Data

Charlotte Open City Data

远程服务
github.com法律与政务05 周前更新

关于 Charlotte Open City Data

Charlotte Open City Data 是面向居民和研究者的 MCP 服务,可查询夏洛特市及梅克伦堡县的官方开放数据。它将地址查询工具与 ArcGIS 数据目录搜索和分析结合起来。

主要功能

  1. 01地址概况与服务日程
  2. 02附近犯罪、事故和 311 请求
  3. 03分区、道路封闭和项目查询
  4. 04附近地点与公交线路信息
  5. 05预算及汇总薪资数据
  6. 06搜索和查询目录数据集

适用场景

  1. 01查询地址的分区、洪水风险和议会选区
  2. 02查看附近犯罪记录或交通事故
  3. 03查找附近公共服务与交通
  4. 04了解市政支出或查询目录数据集

MCP 相关

向 MCP 客户端提供只读工具,用于查询夏洛特市和梅克伦堡县的公共数据。支持本地 stdio 和 HTTP 传输。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://queensestate.adamwanninger.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
pypiqueensestate1.0.1

工具

详细介绍

QueensEstate ♔⛫

CI

一个 MCP 服务,可让大模型使用夏洛特市开放数据门户的官方公开数据,回答夏洛特居民的日常问题 — https://data.charlottenc.gov。

门户位于 data.charlottenc.gov。 这是一个 ArcGIS Hub 站点;其中约 380 个数据集是由夏洛特市和梅克伦堡县运行的 ArcGIS REST 图层。无需 API 密钥。

门户包含什么

对目录(/api/feed/dcat-us/1.1.json)的调查显示,主要主题如下:

主题示例
公共安全CMPD 事件(自 2017 年以来超过 87 万起,每日更新)、凶杀案、交通拦查、火灾事件报告、交通事故
城市服务311 服务请求(340 万条)、固体废弃物收集路线、法规执法案件、道路封闭
规划与分区分区、重新分区申请、历史街区、2040 年政策地图、洪泛区、地块
交通运输CATS 公交路线和站点、LYNX 轻轨、停车换乘点、自行车道、人行道、绿道
地点图书馆、学校、公园、消防/警察局、药店、杂货店、电动汽车充电桩、日托中心
政府资本项目、预算、员工薪酬、市议会和委员选区
人口统计人口普查街区组/普查区、生活质量社区概况

工具

这些工具针对居民实际会提出的问题而选定。所有工具均为只读,每个位置参数都接受地址("600 E 4th St, Charlotte")或 "latitude,longitude"。

我的地址
工具可回答的问题示例
get_address_profile“我的市议会代表是谁?”“负责我所在区域的警察分局和消防站是哪一个?”“我的分区是什么?我是否位于洪泛区或历史街区?”
get_trash_and_recycling_schedule“哪天收垃圾?这周是回收周吗(GREEN/ORANGE)?”
lookup_address“这是有效地址吗?它的地块 ID 和所属市镇是什么?”
安全
工具可回答的问题示例
get_crime_near“这个月我公寓附近有汽车盗窃案吗?”
summarize_crime“自 2019 年以来,夏洛特的抢劫案有何变化?”“哪个分局的入室盗窃案最多?”
get_traffic_crashes_near“我孩子学校附近的十字路口危险吗?”
城市服务与社区变化
工具可回答的问题示例
get_311_requests_near“有人已经报告过这个路面坑洞或路灯问题吗?”
get_code_enforcement_cases“我租住的房子是否有尚未解决的住房法规违规问题?”
get_street_closures“我通勤路上有道路封闭吗?”
get_capital_projects_near“我附近在建设什么?何时完工?该联系谁?”
get_pending_rezonings“有人打算重新规划我所在社区附近的土地吗?”
地点与公共交通
工具可回答的问题示例
find_nearby_places最近的图书馆、学校、公园、绿道、药店、杂货店、电动汽车充电桩、轻轨站、公交站、公共 Wi-Fi……(18 类)
get_bus_route“9 路公交周日晚上多久一班?”
政府透明度
工具可回答的问题示例
get_city_budget“市政府为警察部门编列了多少预算?”
get_city_salary_stats“夏洛特消防员的平均收入是多少?”(仅汇总数据,不含姓名)
目录中的其他内容
工具用途
search_datasets搜索整个门户中的关键词
describe_dataset图层的字段、类型和记录数
query_dataset从任意图层查询经 SQL 筛选的记录,可选择限定位置
summarize_dataset在服务器端按字段分组统计数量/总和

设置

需要 Python 3.14(使用 Python 3.14.7 开发)。

~/.pyenv/versions/3.14.7/bin/python -m venv .venv
.venv/bin/python -m pip install -e . --group dev
与 Claude Code 配合使用
claude mcp add queensestate -- /absolute/path/to/queensestate/.venv/bin/queensestate
与 Claude Desktop 配合使用

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "queensestate": {
      "command": "/absolute/path/to/queensestate/.venv/bin/queensestate"
    }
  }
}
其他传输方式和调试
.venv/bin/queensestate --transport http --port 8000        # http://127.0.0.1:8000/mcp
npx @modelcontextprotocol/inspector .venv/bin/queensestate  # interactive inspector

http 传输方式使用 Google OAuth 对调用者进行身份验证,并且没有公开 URL、Google 客户端和允许列表时会拒绝启动——请参阅托管。要在本地试用:

QUEENSESTATE_PUBLIC_URL=http://localhost:8000 \
QUEENSESTATE_GOOGLE_CLIENT_ID=... QUEENSESTATE_GOOGLE_CLIENT_SECRET=... \
[email protected] \
  .venv/bin/queensestate --transport http --port 8000

托管

托管服务运行在 Google Cloud Run 上,地址为 https://queensestate.adamwanninger.com/mcp,它本身也是 OAuth 2.1 授权服务器:它仅委托 Google 完成登录,以确认调用者所用的账号,然后将该地址与允许列表核对,并签发自己的令牌。Google 的令牌绝不会传递给 MCP 客户端。

claude mcp add --transport http queensestate https://queensestate.adamwanninger.com/mcp

scripts/deploy-gcp.sh 会配置并部署整个服务,重新运行它也是更新服务的方式。请参阅 deploy/GCP.md。

托管仅适用于 HTTP 传输方式。在本地通过 stdio 运行服务无需 Google 账号、允许列表或任何云依赖项。

开发

.venv/bin/pytest                 # unit + in-memory MCP tests; no network access
.venv/bin/ruff format --check . && .venv/bin/ruff check .
.venv/bin/mypy

目录结构:

  • src/queensestate/arcgis.py:异步 ArcGIS REST / Hub 客户端(超时、有限重试、主机允许列表)
  • src/queensestate/address.py:将地址与县级 Master Address 图层进行匹配
  • src/queensestate/catalog.py:专用工具使用的精选图层
  • src/queensestate/server.py:MCP 工具

数据说明和限制

  • 地理编码使用 Mecklenburg County 的 Master Address 图层,因此只能解析该县范围内的地址。县外坐标会被拒绝。
  • 数据更新时效因数据集而异:CMPD 事件、311 请求和法规执法数据会在数日内更新;Budget Report 数据集目前涵盖 FY2018–FY2023。工具会报告门户发布的内容。
  • CMPD 位置由部门进行模糊处理以保护隐私。
  • 311 数据记录的是收到请求的时间,而不是请求解决的时间。
  • 时间戳采用 ISO 8601 格式,以 Charlotte 当地时间表示,并包含 UTC 偏移量(例如 2026-09-06T00:00:00-04:00)。底层服务存储的是 UTC 时间。
  • 预算金额包含大额负数项目(例如“00 Non Department”、Charlotte Water),因此 get_city_budget 会同时报告净总额和正数项目总和。
  • 统计限制:部分城市地图服务会忽略汇总查询中的 resultRecordCount,因此客户端会自行限制行数。
  • 实时公交到站信息不在门户上;请将此服务与 CATS 实时数据源配合使用。find_nearby_places 返回的公交站 ID 与 CATS 站点 ID 匹配。
  • 通用工具只能访问提供门户数据集的主机(gis.charlottenc.gov、 meckgis.mecklenburgcountync.gov、services.arcgis.com、gis.ci.charlotte.nc.us)。
  • Mecklenburg County 的服务器会拒绝 Python 默认用户代理,因此客户端会发送自定义用户代理。

更多工具的构想

  • 按 NPA 划分的社区生活质量指标(收入、年龄、住房、便利设施)
  • 按地址街区查询 Charlotte Fire 事故报告
  • CMPD 警员交通拦截统计数据
  • 地址附近的人行道和自行车网络缺口
  • 按社区划分的树冠覆盖率和地表温度

许可证

MIT - 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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