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.0.tar.gz (7.6 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.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mytown_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 7.6 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.0.tar.gz
Algorithm Hash digest
SHA256 7ae70b1c35888463bfc8f8d01549d79a6e0fbac3b984c556fc6f5112aca9a7ac
MD5 8095de64e3ac2f4cf11f8a56f257b82d
BLAKE2b-256 cab1f2e9e2ed22a47184d48fd0c70368f59530abab0a30f88e63e389b4b22428

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mytown_mcp-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 551c505cdaf62949f477ee4d2dad1888db8eab8ea100f8eb2a5efa39037eaf68
MD5 8ebd805ca23e2916c86be754bec08819
BLAKE2b-256 57707fc04e3c872f615a64f7562efddfce2bad43ef54f771f50ab2ad8c570d9e

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