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

LLM が、City of Charlotte Open Data Portal の公式公開データを使って、Charlotte の住民の日常的な質問に答えられるようにする MCP サーバーです — https://data.charlottenc.gov。

ポータルの URL は data.charlottenc.gov です。 ArcGIS Hub サイトであり、約 380 個のデータセットは、City of Charlotte と Mecklenburg County が運用する ArcGIS REST レイヤーです。API キーは不要です。

ポータルの内容

カタログ(/api/feed/dcat-us/1.1.json)を調査すると、主なテーマは次のとおりです。

テーマ例
公共の安全CMPD の事件(2017 年以降 87 万件以上、毎日更新)、殺人事件、交通取り締まり、火災報告、交通事故
市のサービス311 サービスリクエスト(340 万件)、一般廃棄物収集ルート、条例執行案件、道路閉鎖
都市計画とゾーニングゾーニング、再ゾーニング請願、歴史地区、2040 年政策マップ、洪水区域、区画
交通CATS のバス路線と停留所、LYNX ライトレール、パークアンドライド、自転車レーン、歩道、緑道
施設図書館、学校、公園、消防署・警察署、薬局、食料品店、EV 充電器、保育施設
行政主要プロジェクト、予算、職員給与、市議会および委員会の選挙区
人口統計国勢調査のブロックグループ・地区、Quality of Life の近隣地域プロファイル

ツール

住民が実際に尋ねる質問に合わせてツールを選定しています。すべてのツールは読み取り専用で、場所のパラメーターには住所("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 年以降、Charlotte の強盗はどのように変化しましたか?」「侵入窃盗が最も多い管区はどこですか?」
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最寄りの図書館、学校、公園、緑道、薬局、食料品店、EV 充電器、ライトレール駅、バス停、公衆 Wi-Fi…(18 カテゴリー)
get_bus_route「日曜の夕方、9 番バスはどれくらいの頻度で運行していますか?」
行政の透明性
ツール回答できる質問の例
get_city_budget「市は警察にいくら予算を割り当てていますか?」
get_city_salary_stats「Charlotte の消防士の平均給与はいくらですか?」(集計データのみ、氏名なし)
カタログ内のその他のデータ
ツール目的
search_datasetsポータル全体を対象としたキーワード検索
describe_datasetレイヤーのフィールド、型、レコード数
query_dataset任意のレイヤーから SQL で絞り込んだレコードを取得。場所の指定も可能です
summarize_datasetサーバー側でフィールドごとに件数・合計を集計

セットアップ

Python 3.14 が必要です(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 データに記録されているのは、リクエストが受け付けられた日時であり、解決された日時ではありません。
  • タイムスタンプは、UTC オフセット付きのシャーロット現地時間で ISO 8601 形式です(例: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 のデフォルトの User-Agent を拒否するため、クライアントは独自のものを送信します。

ツール追加のアイデア

  • NPA 別の近隣地区の生活の質に関する指標(所得、年齢、住居、施設)
  • 住所の街区別の Charlotte Fire の事件報告
  • CMPD 警察官による交通停止の統計
  • 住所周辺の歩道と自転車道ネットワークの不足箇所
  • 近隣地区別の樹冠率と地表面温度

ライセンス

MIT - LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。