US state DMV data: vehicle and EV registrations, office locators, live wait times
git clone https://github.com/pipeworx-io/mcp-us-dmv{
"mcpServers": {
"mcp-us-dmv": {
"command": "node",
"args": ["/path/to/mcp-us-dmv/dist/index.js"]
}
}
}MCP Servers overview
# @pipeworx/us-dmv
US state DMV data: vehicle and electric-vehicle registrations, DMV office locators with
per-office services, live field-office wait times, and California form and insurer lookups.
Keyless.
## Why coverage is state-by-state
This pack came out of a survey of all 50 states plus DC (2026-07-29). Roughly 30 states
publish nothing machine-readable about motor vehicles — annual PDFs at best. So each tool
takes a `state` argument backed by a short, explicit list, and an unsupported state returns
`{ found: false, reason: 'state_unsupported', hint, supported_states }` rather than an
empty result that reads like a data bug.
Grain differs per state and is not normalisable away, so every response reports `grain`,
`as_of`, `source`, and — where a row list can be cut off — `truncated`.
## Tools
| Tool | States | What it returns |
|---|---|---|
| `dmv_vehicle_registrations` | CA, DE, MD, NY, PA, TX, WA | Registered vehicle counts by county, ZIP, fuel, make, model year or class |
| `dmv_ev_adoption` | CA, CT, DE, HI, MD, NY, PA, WA | Battery-electric and plug-in hybrid counts, plus EV share where a denominator exists |
| `dmv_wait_times` | NC, OR | Live average/max wait, customers queued, open-or-closed per field office |
| `dmv_offices` | CA, DC, IA, IN, MO, NC, NJ, NY, TN, WI | Addresses, hours, coordinates, and which services each office performs |
| `dmv_ca_forms` | CA | Official DMV form name, REG/DL number and download page |
| `dmv_ca_insurance_lookup` | CA | Insurer NAIC codes by company name |
## Auth
None. Every upstream is a public state endpoint. `_apiKey` is accepted on the Socrata-backed
tools and passed as `X-App-Token`; the public rate limits are ample without it.
## Per-state gotchas worth knowing
These are all live-verified behaviours, not guesses:
- **WA registrations count transactions, not fleet size.** `hmzg-s6q4` publishes registration
transactions per month (King County runs ~160k/month), so it cannot answer "how many
vehicles are registered here". The tool scopes to one fiscal year or month and says so in
`grain`. For a Washington *fleet* count of plug-in vehicles use `dmv_ev_adoption`, which
reads the VIN-level EV population file instead.
- **NY mixes vehicle types.** `w4pv-hbkt` holds trailers, boats and snowmobiles alongside road
vehicles; the tool defaults to `record_type=VEH`. County names are unabbreviated, so
Brooklyn is `KINGS`.
- **CA snapshots are one resource per year**, 2019–2026, and the rows carry the *prior*
December 31 as their as-of date. Grouping by ZIP surfaces a literal `OOS` bucket
(out-of-state registrants) that outranks every real ZIP — filter it out for a ZIP ranking.
- **CA "OTHER/UNK" make** absorbs small-count suppression, so it can outrank real makes.
- **MD spells one county two ways**: `PRINCE GEORGE'S` in the registration dataset,
`PRINCE GEORGES` in the EV dataset. MD also reports the registrant's county of residence,
so a few out-of-state counties appear with small counts.
- **PA quarters are columns, not rows** (`TOTAL_EV_Q1..Q4`); the tool picks the latest quarter
that actually carries data. `TOTAL_EV` is BEV + PHEV — conventional hybrids sit in `HEV`.
- **NC and OR waits read zero and closed outside business hours.** That is the agency feed
reporting an idle queue, not a missing value, so the response flags it in `note` rather than
erroring. NC's feed is a unit tree (root, districts, then offices); the pack keeps leaf units.
- **OR has no JSON endpoint** — the office array is parsed out of the server-rendered page.
Upstream also ships per-office `ipAddress` and machine fields, which are dropped here.
- **TX was last refreshed in 2023** and is statewide-annual only. **CT was last refreshed in
February 2025.** Both report this in `note` rather than pretending to be current.
- **NJ's `dmv_offices` entries are inspection and emission-repair facilities**, not licensing
offices, and the upstream `county` column disagrees with `city` on some rows.
- **DC coordinates need reprojection** — the layer stores State Plane, so the pack requests
`outSR=4326` geometry rather than reading `XCOORD`/`YCOORD`.
- **CA form search is the website's own relevance ranking**, so a query like "title transfer"
can put a vessel-title form first.
- **Maryland's WAF is picky about SoQL query shape.** `opendata.maryland.gov` answers both a
wildcard `like '%x%'` clause and a two-condition `where` with a Cloudflare interstitial
(403 "Just a moment...") instead of data — reproducibly, and only on that domain: NY, WA and
CT accept the identical clauses. It only reproduces from a deployed Worker, never from a
laptop, so local testing will not catch it. All four Maryland paths therefore send the one
shape that gets through — a single `year_month` condition — and narrow to a county or ZIP in
code, which is cheap because one month is a few hundred rows.
- **WisDOT's ArcGIS server is intermittently slow** — it overran a 12s budget on the first
production call and answered in ~1s on retry. Every tool retries once and then returns
`{ error, hint }` telling the caller to retry, rather than reporting an upstream stall as
missing data.
## Data sources
- California — [data.ca.gov Vehicle Fuel Type Count by Zip Code](https://data.ca.gov/dataset/vehicle-fuel-type-count-by-zip-code) (CKAN `datastore_search_sql`), plus the `dmv.ca.gov` WP REST endpoints for [field offices](https://www.dmv.ca.gov/portal/wp-json/wp/v2/dmv_field-office), forms and the NAIC insurer lookup
- New York — [data.ny.gov](https://data.ny.gov) Socrata `w4pv-hbkt` (registrations), `9upz-c7xg` (offices)
- Washington — [data.wa.gov](https://data.wa.gov) Socrata `f6w7-q2d2` (EV population), `hmzg-s6q4` (registration transactions)
- Maryland — [opendata.maryland.gov](https://opendata.maryland.gov) Socrata `db8v-9ewn`, `qtcv-n3tc`, `tugr-unu9`
- Pennsylvania — [PennDOT ArcGIS EV registrations by county](https://gis.penndot.pa.gov/gis/rest/services/opendata/evregistrationscounty/MapServer/0)
- Delaware — [data.delaware.gov](https://data.delaware.gov) Socrata `ity3-3688`
- Hawaii — [opendata.hawaii.gov](https://opendata.hawaii.gov) DBEDT cumulative hybrid/EV series
- Texas — [data.texas.gov](https://data.texas.gov) Socrata `cbmj-zeje`
- Connecticut — [data.ct.gov](https://data.ct.gov) Socrata `y7ky-5wcz`
- North Carolina — [NCDOT Instant Wait Time service](https://wait.services.ncdot.gov/IWT/IWTWeb/XmlStats.aspx?controller=IWT_UnitsListXML&UnitID=2)
- Oregon — [Oregon DMV wait times](https://dmv2u2.odot.state.or.us/waittimes/home/map)
- Missouri — [data.mo.gov](https://data.mo.gov) Socrata `835g-7keg` · Wisconsin — [WisDOT ArcGIS](https://dotmaps.wi.gov/arcgis/rest/services/agohub/DMV_SERVICE_CENTER/MapServer/0) · Indiana — [BMV branch map](https://www.in.gov/bmv/branch-locations-and-hours/bmv-branch-map/) · Tennessee — [TN SAFETY ArcGIS](https://tnmap.tn.gov/arcgis/rest/services/SAFETY/DriverServiceCenters/MapServer/0) · DC — [opendata.dc.gov](https://opendata.dc.gov) · Iowa — [Iowa DOT ArcGIS](https://data.iowadot.gov) · New Jersey — [data.nj.gov](https://data.nj.gov) Socrata `t6tk-mr48`
## Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
```json
{
"mcpServers": {
"us-dmv": {
"url": "https://gateway.pipeworx.io/us-dmv/mcp"
}
}
}
```
Or connect to the full Pipeworx gateway for access to all 1370+ data sources:
```json
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
```
## Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English:
```
ask_pipeworx({ question: "your question about US State DMV data" })
```
The gateway picks the right tool and fills the arguments automatically.
## More
- [All tools and guides](https://github.com/pipeworx-io/examples)
- [pipeworx.io](https://pipeworx.io)
## License
MIT
What people ask about mcp-us-dmv
What is pipeworx-io/mcp-us-dmv?
+
pipeworx-io/mcp-us-dmv is mcp servers for the Claude AI ecosystem. US state DMV data: vehicle and EV registrations, office locators, live wait times It has 0 GitHub stars and was last updated today.
How do I install mcp-us-dmv?
+
You can install mcp-us-dmv by cloning the repository (https://github.com/pipeworx-io/mcp-us-dmv) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is pipeworx-io/mcp-us-dmv safe to use?
+
pipeworx-io/mcp-us-dmv has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains pipeworx-io/mcp-us-dmv?
+
pipeworx-io/mcp-us-dmv is maintained by pipeworx-io. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to mcp-us-dmv?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy mcp-us-dmv to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/pipeworx-io-mcp-us-dmv)<a href="https://claudewave.com/repo/pipeworx-io-mcp-us-dmv"><img src="https://claudewave.com/api/badge/pipeworx-io-mcp-us-dmv" alt="Featured on ClaudeWave: pipeworx-io/mcp-us-dmv" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!