Live U.S. energy permitting project data: search, filter, and get status by project or state.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Open source, MIT licensed β see LICENSE. Contributions,
forks, and issues welcome.
Tracks proposed U.S. energy projects β generation, transmission, storage, LNG, and pipelines, every fuel type β and how long each has been waiting for approval, and why.
The argument is structural, not partisan: solar, wind, storage, gas,
nuclear, hydro, LNG, pipelines, and transmission all get stuck in the same
handful of bottlenecks. Every tracked delay is mapped to one of seven named
cause categories (src/lib/data/causeCategories.ts).
The site's policy argument β six specific, bipartisan reform proposals, one
per structural bottleneck, each with a stated problem, proposal, strengths,
weaknesses, and bill links β lives on a single page,
/policies
(src/lib/data/policies.ts), deliberately kept
separate from the neutral cause-category data so "why a project is stuck"
and "what we're arguing should change" aren't the same object.
Needs a real Postgres connection string in DATABASE_URL β there's no
bundled local database file. The deployed app and local dev both point at
the same hosted Postgres instance for this project (see "Architecture"
below for why); for your own fork, any Postgres works (Neon, Supabase,
Vercel/Prisma Postgres, RDS, local postgres via Docker, etc.).
All project data comes from live, re-runnable sources β no hand-curated
one-off research. An earlier version of this project shipped a small
hand-researched seed set; it was removed deliberately in favor of sources
that stay current on their own, rather than a snapshot that goes stale.
See src/lib/ingest/README.md for the full
per-source table, open questions, and how each is scheduled:
| Source | Module | Checked | Source's own publish cadence |
|---|---|---|---|
| EIA-860M "Planned" generator inventory | src/lib/ingest/eia860mPlanned.ts | Cron weekly (13:00 UTC Sundays), /api/cron/ingest-eia | Monthly, ~2-month lag on EIA's end |
| Federal Permitting Dashboard (FAST-41) | src/lib/ingest/permittingDashboard.ts | Cron daily (14:00 UTC), /api/cron/ingest-permitting-dashboard | Live API β no periodic file, effectively real-time |
| LBNL Queued Up | src/lib/ingest/lbnlQueuedUp.ts | Cron weekly (15:00 UTC Sundays), /api/cron/ingest-lbnl | ~Annual |
| ORNL HydroSource hydropower relicensing | src/lib/ingest/ornlHydropowerRelicensing.ts | Cron weekly (16:00 UTC Sundays), /api/cron/ingest-ornl-hydro | ~Annual |
| EIA Natural Gas Pipeline Projects tracker | src/lib/ingest/eiaPipelineProjects.ts | Cron weekly (17:00 UTC Sundays), /api/cron/ingest-eia-pipelines | ~Quarterly |
| Virginia SCC CPCN dockets | src/lib/ingest/vaSccDockets.ts | Cron daily (18:00 UTC), /api/cron/ingest-va-scc. First of a planned per-state series covering state PUC/PSC dockets, the structural bottleneck this site's other sources can't see (see open question #10). | Live API, but only one state so far |
| Texas PUCT CCN dockets | src/lib/ingest/txPuctDockets.ts | Cron daily (18:30 UTC), /api/cron/ingest-tx-puct. Second state in the series β higher-volume than Virginia but with no structured status field, so "still waiting" is inferred from filing history (see file header for how that was calibrated). | Server-rendered HTML, no auth |
| Colorado PUC CPCN dockets | src/lib/ingest/coPucDockets.ts | Cron daily (19:00 UTC), /api/cron/ingest-co-puc. Third state β the cleanest yet: status is a real structured field already present in search results, no filing-history inference needed at all. | Server-rendered HTML, no auth |
| Ohio Power Siting Board cases | src/lib/ingest/ohOpsbCases.ts | Cron daily (19:30 UTC), /api/cron/ingest-oh-opsb. Fourth state β the simplest fetch yet (one unauthenticated JSON request returns the entire case history), and the first source in the series where both status and fuel/project type are real structured fields, not inferred. | Single JSON endpoint, no auth |
| South Carolina PSC siting-certificate dockets | src/lib/ingest/scPscDockets.ts | Cron daily (20:00 UTC), /api/cron/ingest-sc-psc. Fifth state β like Texas, has no reliable status field, but its captions are unusually descriptive (facility type, capacity, county spelled out in the text), and "still waiting" is inferred from an embedded Orders sub-table rather than a full filing-history scan. | Server-rendered HTML, no auth |
| Arizona ACC Line Siting Committee dockets | src/lib/ingest/azAccLineSiting.ts | Cron daily (20:30 UTC), /api/cron/ingest-az-acc. Sixth state β a real JSON API, but with the same "status field lies" problem as South Carolina, independently rediscovered: docketStatus can read "Open" on a docket that's actually been decided. The real signal is a separate decisions array. | Real JSON API, no auth |
| Washington EFSEC facility site-certifications | src/lib/ingest/waEfsecFacilities.ts | Cron daily (21:00 UTC), /api/cron/ingest-wa-efsec. Seventh state β Washington's own utility commission (WUTC) turned out to have no siting-certificate authority at all; the real authority is a separate body, EFSEC, whose small (19-facility) all-time list is ingested directly. The one state so far where the structured status field is the reliable one and a free-text description was the one caught lying. | Server-rendered HTML, no auth |
| New Mexico PRC CCN dockets | src/lib/ingest/nmPrcDockets.ts | Cron daily (21:30 UTC), /api/cron/ingest-nm-prc. Eighth state β a real JSON API behind an Angular SPA front-end, found by capturing the app's own network requests. Its CCN category also catches water-utility certificates and intake-rejected duplicate filings, both filtered out locally; its status field held up under testing, unlike several other states here. | Real JSON API, no auth |
| Illinois ICC CPCN dockets | src/lib/ingest/ilIccDockets.ts | Cron daily (22:00 UTC), /api/cron/ingest-il-icc. Ninth state β its CPCN case-type bucket also catches declaratory-ruling and eminent-domain petitions, filtered locally; capacity is published as voltage (kV), not MW, a first for this series. Its Grain Belt Express docket is the same physical line as an existing Permitting Dashboard entry β the case that surfaced and fixed a real cross-source merge bug, see open question #1. | Server-rendered HTML, no auth |
| Florida PSC + DEP siting certification | src/lib/ingest/flPscDockets.ts | Cron daily (22:30 UTC), /api/cron/ingest-fl-psc. Tenth state β Florida has no CPCN at the PSC at all; siting runs through a separate DEP process the PSC only opens with a small "determination of need" sub-docket. Two agencies' pages are cross-checked against each other, and β unusually for this series β it's the state-docket agency's own status field that lies, while a second agency's page is the reliable one. | Real JSON API (PSC) + server-rendered HTML (DEP), no auth |
| New York DPS Article VII/VIII dockets | src/lib/ingest/nyDpsDockets.ts | Cron daily (23:00 UTC), /api/cron/ingest-ny-dps. Eleventh state β two live siting-certificate tracks (transmission under Article VII, renewable generation under Article VIII/its predecessor Β§ 94-c) in one system, covered by one module. Publishes no status field at all, and the renewable track's grant order isn't even filed as an Order/Decision β it's a plain correspondence filing, found only by scanning every document title regardless of type. | Real JSON API, no auth |
| Nevada PUCN UEPA permit dockets | src/lib/ingest/nvPucnDockets.ts | Cron daily (23:30 UTC), /api/cron/ingest-nv-pucn. Twelfth state β no CPCN; Nevada's equivalent is a Utility Environmental Protection Act permit spanning two separate PUCN systems (a legacy WebForms docket list plus a modern OnBase JSON API). Its multi-phase transmission reviews (an already-"GRANTED" phase followed by a new phase filing months later) required a real "no later substantive filing" check, not just "does any order say GRANTED." | Legacy ASP.NET WebForms + real JSON API (OnBase), no auth |
| Oregon EFSC facility site-certifications | src/lib/ingest/orEfscFacilities.ts | Cron daily (00:00 UTC), /api/cron/ingest-or-efsc. Thirteenth state β like Washington, Oregon's own utility commission has no siting authority; the real body is the Energy Facility Siting Council. Unusually, both of its structured status fields turned out unreliable (37 of 97 facilities disagreed between them) β the real signal is a free-text narrative field instead. One current candidate, Cascade Renewable Transmission, is the same physical HVDC line already tracked via Washington's EFSEC module β merged via manualOverrides.csv. | Real JSON API (SharePoint REST), no auth |
| Massachusetts EFSB dockets | src/lib/ingest/maEfsbDockets.ts | Cron daily (00:30 UTC), /api/cron/ingest-ma-efsb. Fourteenth state β like Washington/Oregon, the state's DPU itself isn't the real siting authority; a board (EFSB) that sits administratively inside DPU issues the actual certificate. Its own "Closed Date" field can stay null for years after a real grant, so resolution is instead inferred from scanning every filed document's own type for a "Final Decision." | Real JSON API, no auth |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/energy-permitting-tracker)<a href="https://allmcps.com/mcp/energy-permitting-tracker"><img src="https://allmcps.com/api/badge/energy-permitting-tracker?style=directory" alt="Energy Permitting Tracker on AllMCPs" /></a>