Skip to main content

MCP server for MyTown — US & Canadian local-government meetings, decisions, and place context, grounded in official sources.

Project description

MyTown MCP server

An MCP server that gives an AI assistant grounded, source-linked access to US & Canadian local-government meetings — what your city council, county board, or school board has coming up and recently decided, in plain English, plus place context (demographics, home-value trends, federal awards, permits, campaign finance, EPA/nonprofit ties). Every record links back to the official primary source.

Data comes from MyTown's public, keyless HTTP API, so this server needs no API key and no local database — it works out of the box for anyone. Coverage: ~2,400 municipalities (US + Canada), refreshed daily.

Tools

Per-city (great for "what's happening in my town"):

tool what it does
list_cities(query, state, country, limit) find covered cities; resolve a place name → the slug the other tools need
get_city_meetings(slug) upcoming + recent meetings: date, body, plain-English headline/summary, agenda/minutes/source links
get_city_context(slug) everything for a city: meetings plus demographics, home-value trend, federal awards, permits, campaign-finance summary, and per-decision EPA/nonprofit context

Whole-dataset (cross-city — every table, no download; backed by HuggingFace's hosted dataset-viewer API):

tool what it does
dataset_tables() the 17 tables, their columns, and join keys — so you know what to search/filter
search_dataset(query, table, limit) full-text search across all cities in a table (e.g. every decisions row mentioning "rent control")
filter_dataset(table, where, order_by, descending, limit) structured SQL-style filter (e.g. federal_awards where "amount" > 5000000, sorted)
dataset_info() coverage counts + pointers to bulk Parquet / full SQLite for heavy analysis

Typical flows: list_cities("palo alto")get_city_context(slug) for one place; or dataset_tables()search_dataset("police budget", "decisions") to sweep the whole country.

Install & configure

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "mytown": {
      "command": "uvx",
      "args": ["mytown-mcp"]
    }
  }
}

Or run from a local checkout (no publish needed):

{
  "mcpServers": {
    "mytown": {
      "command": "/absolute/path/to/mcp-server/.venv/bin/python",
      "args": ["-m", "mytown_mcp.server"]
    }
  }
}

Claude Code

# from a local checkout:
claude mcp add mytown -- /absolute/path/to/mcp-server/.venv/bin/python -m mytown_mcp.server
# or, once published:
claude mcp add mytown -- uvx mytown-mcp

From source

python -m venv .venv && .venv/bin/pip install mcp httpx
.venv/bin/python -m mytown_mcp.server   # speaks MCP over stdio

Example questions it can answer

  • "What's the Palo Alto city council deciding this month?"
  • "Show recent school-board meetings for the Palo Alto Unified School District."
  • "For Lake Forest, CA — pull demographics, home-value trend, and any federal awards."
  • "Across the whole country, which towns passed rent-control decisions this year?" (search_dataset)
  • "Show the largest federal awards in the dataset, over $1B." (filter_dataset)
  • "Find meetings tied to EPA facilities with an identified violation." (filter_dataset on decision_echo)

Notes

  • Meeting/decision summaries are AI-generated from official documents — always verify against the linked primary source before relying on a detail.
  • License: CC BY 4.0 (attribution: mytown.theboringparts.com).
  • For research spanning many cities (training, full-text search, bulk stats), use the open dataset rather than looping these tools.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mytown_mcp-0.1.1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mytown_mcp-0.1.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file mytown_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: mytown_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mytown_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8a6e9a9f34b6c76ff81405e0d2f6ca8e3affa1d7d423bfb74f129921f45d3fcd
MD5 d641891d1edf1bda915b8fae395679ae
BLAKE2b-256 b3231de075091bb7a512236a7144b659410ff261dd234e6d87ff159d0521a7dd

See more details on using hashes here.

File details

Details for the file mytown_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mytown_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mytown_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c7757003020f981a9178db11d13f4806527fe3cb9f0156fa21f60cbc202244a
MD5 a8fb13ec28cbc4f9e3b54688819b3ce0
BLAKE2b-256 06fcdac73e7d37273aed9e62c6bd405a2a8ea4e8e0f27d1fd8852120a3cfc83d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page