OpenPublica MCP server
Which servers in the official MCP registry are OpenPublica's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-18
- Registry namecom.openpublica/civic-meetingsverified in the MCP registry
The registry name sits under openpublica.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-18
- Tools16
- Server calls itselfOpenPublica
- Server version2.0.0
- Protocol version2025-06-18
On 2026-10-18 the server answered initialize and tools/list without a sign-in. First answer in 117 ms.
- Answeredmeasuring2 of the 7 daily checks it takes to print a share
- Median first answer1746 ms
- Space in an agent's context≈ 4,279 tokensthe definitions of all its tools (16), which an agent carries on every turn
- Tool definitionsA · 99 of 100
- Parameters without a description: in 1 of 16
Worth a look
None of the five warning signs in these definitions.
A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The state of vendors' MCP servers: method and numbers →
search_meeting_contentSearch public meetings once across metadata and stored transcript text. Returns one card per meeting and native pagination metadata, without a total. Small current-text previews can be absent and do not establish timestamps. Text…
search_meetings_semanticFind AI summaries by meaning; use search_meeting_content for stored words. Results carry relevance_score and a summary preview. Narrow with government, category_tag, topic or dates; get_meeting retrieves the full summary.
list_recent_meetingsBrowse meetings newest-first, optionally filtered by government, type, topic, or date. Use this for "what are the most recent meetings" or to page through a government's history. For topical questions, prefer `search_meetings_semantic`.
get_meetingGet a single meeting's full AI summary and topics. Set `include_transcript=true` to also retrieve the complete transcript text for direct quotation. Returns an error object if the meeting is not found.
search_meeting_transcriptUse unified stored-text search inside one currently public meeting. Returns an optional current-text preview, without resolving timing. A text match can lack a literal preview; use get_meeting(include_transcript=true) for full source…
find_local_governmentsDiscover which governments OpenPublica tracks near a coordinate. Returns nearby governments with their `account_id`, which you can pass to the other tools to scope results to a specific city or board. Note OpenPublica only covers a…
find_governments_by_nameResolve a place *name* to the governments OpenPublica tracks there. Use this when you know a city/state name but not its coordinates — it returns matching governments with their `account_id` (prefix matches first), which you then pass to…
find_governments_by_zipResolve a ZIP code to nearby tracked governments. Convenience wrapper: geocodes the ZIP, then finds the governments OpenPublica tracks nearest that point. Returns their `account_id`s plus the resolved location. An empty `governments` list…
get_government_infoGet a tracked government's profile: name, location, and meeting categories.
get_government_statsGet meeting-activity stats for a government over a recent window. Returns total meeting count, a per-day activity map, and a breakdown of meeting categories — useful for "how active has X been lately?" questions.
discover_meeting_vocabularyDiscover the valid category and topic filter values before filtering a search. Meeting `category_tag`s are opaque UUIDs and topics have no fixed list, so you cannot guess them. Call this first to get the real values, then pass a returned…
list_government_documentsList a government's adopted plan and budget documents. Each entry carries `covers` — every general-plan element that document answers for. A city that publishes one bound general plan satisfies all eight with the same PDF, so do not…
get_documentOne document's metadata. Use read_document_pages to read it. If an `availability` key is present, read it before quoting figures: its `problems` are transcription-lint findings, most often a footnote marker that may have been merged into…
read_document_pagesRead a page range of a document as markdown. Pages are transcribed from rendered pixels, so tables and scanned text come through as text. A page that could not be transcribed appears as a marked hole rather than being silently dropped…
search_documentsSearch adopted plan and budget documents, returning page-cited excerpts. Each hit's `text` is a short passage around the match, not the full page — call read_document_pages with the hit's `first_page` to read it in context. Every hit…
get_coverage_overviewGet estimated stored-record totals, not publication-filtered coverage. Counts do not establish completeness, searchability or freshness. DC is reported separately from states as `includes_dc`.
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"civic-meetings": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
}
}Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.