Commonwealth-MCP

Case study · Policy

133 counties and cities, each publishing records its own way — resolved once and exposed as one MCP server.

What
Which government covers an address, what a parcel record says, how it's zoned, and what the Code of Virginia says — with a source and a fetch date on every answer.
Stack
Python MCP server; each locality's data source registered and typed once, then queried live.
Status
LIVE
Dates
Published August 2026 · Updated September 2026
Links
Live site · Source code

Background

Which government actually covers this address, and how is this parcel zoned?

Virginia's 133 counties and independent cities each publish records their own way: different software, field names, and reuse rules. Answering "how is this parcel zoned" means working that out locality by locality. Commonwealth-MCP does it once and exposes the result as a read-only MCP server, so Claude, ChatGPT, Cursor, or VS Code can ask a plain question and get a sourced answer back.

Every answer says which system produced it, when it was fetched, and what wasn't checked. "Alexandria, VA 22310" resolves to Fairfax County, because a mailing address isn't a government. "Fairfax" returns the city and the county both. A zoning district read off a GIS layer is labeled screening evidence; the ordinance governs.

A Look Inside

Each view shown on mobile and desktop — tap any image to open the live site.

Virginia government data exposed to AI agents through MCP (mobile) Virginia government data exposed to AI agents through MCP (desktop)
Virginia government data exposed to AI agents through MCP — which locality covers an address, how a parcel is zoned, what the Code of Virginia says.
The jurisdiction resolver, expanded: type a place name or FIPS code and it disambiguates the city and county as separate candidates rather than guessing, computed from the project's own jurisdiction table at build time (mobile) The jurisdiction resolver, expanded: type a place name or FIPS code and it disambiguates the city and county as separate candidates rather than guessing, computed from the project's own jurisdiction table at build time (desktop)
The jurisdiction resolver, expanded: type a place name or FIPS code and it disambiguates the city and county as separate candidates rather than guessing, computed from the project's own jurisdiction table at build time. 39 more recorded calls, each with the full answer and outbound HTTP, are one click further in.

How It Works

A jurisdiction table covers all 133 localities and 191 towns, so any name or coordinate finds the right government:

Most localities still have no source of their own registered; finance, infrastructure, environment, and people are sketched and not built.

[View the Live Demo] | [View the Code]


← Back to Homepage