
Epa Mcp Server
Wraps five EPA public data APIs into a single MCP interface: ECHO for facility compliance and enforcement actions, TRI for toxic chemical releases, AirNow for real-time air quality readings, CERCLA for Superfund site status, and SDWIS for drinking water violations. You get eight tools that let you search facilities by location or program, pull full compliance profiles with inspection history and penalties, query TRI releases by chemical and medium, check current AQI by ZIP or coordinates, and find Superfund sites or water systems with active violations. The facility search returns Registry IDs and county FIPS codes, which makes it easy to chain lookups or join with Census data. Useful for environmental compliance checks, public health analysis, or building location intelligence into regulatory workflows.
- GitHub stars
- 2
- tools
- 11
- transport
- STDIO, HTTP
- env vars
- 8
- last updated
- Nov 1, 2026
Install
From registry metadata$ npx add-mcp https://epa.caseyjhand.com/mcp --name epaRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http epa https://epa.caseyjhand.com/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 11 toolsVerified live against the running server on Nov 6, 2026.
epa_echo_search_facilitiesECHO: Search EPA-regulated facilities by location, county, facility name, NAICS industry code, environmental program, or compliance status across CAA, CWA, RCRA, TRI, and SDWA. Returns facility name, EPA Registry ID, coordinates, county FIPS code, per-program registration flag...15 params
ECHO: Search EPA-regulated facilities by location, county, facility name, NAICS industry code, environmental program, or compliance status across CAA, CWA, RCRA, TRI, and SDWA. Returns facility name, EPA Registry ID, coordinates, county FIPS code, per-program registration flag...
active_onlybooleancitystringcountystringcounty_fipsstringfacility_namestringhas_violationbooleanlatitudenumberlimitintegerlongitudenumbernaicsstringoffsetintegerprogramsarrayradius_milesnumberstatestringzip_codestringepa_echo_get_facilityECHO: Retrieve a full compliance profile for a single EPA-regulated facility by EPA Registry ID or EPA program ID. Returns facility metadata, the NAICS industry codes its programs record, ECHO's facility-level compliance status, a per-statute (CAA, CWA, RCRA, SDWA, and others...5 params
ECHO: Retrieve a full compliance profile for a single EPA-regulated facility by EPA Registry ID or EPA program ID. Returns facility metadata, the NAICS industry codes its programs record, ECHO's facility-level compliance status, a per-statute (CAA, CWA, RCRA, SDWA, and others...
drinking_water_violations_limitintegerdrinking_water_violations_offsetintegerinspections_limitintegerinspections_offsetintegerregistry_id*stringepa_echo_search_violationsECHO: Search EPA civil and criminal enforcement cases by state, ZIP code, regulatory program, case type, or filing-date range. Returns case identifier, case type and status, lead agency (EPA or state), primary law and section, enforcement outcome, federal and state penalties,...8 params
ECHO: Search EPA civil and criminal enforcement cases by state, ZIP code, regulatory program, case type, or filing-date range. Returns case identifier, case type and status, lead agency (EPA or state), primary law and section, enforcement outcome, federal and state penalties,...
case_typestringcivil · criminal · alldefault: alldate_filed_endvaluedate_filed_startvaluelimitintegeroffsetintegerprogramstringCAA · CWA · RCRA · SDWA · CERCLA · EPCRAstatestringzip_codestringepa_echo_get_caseECHO: Retrieve one civil enforcement case by case number, with the facilities, defendants, and settlements behind it. Returns the case's category, enforcement type, status, lead agency, relief sought, outcome, court and DOJ docket numbers, summary, and penalty, cost-recovery,...1 params
ECHO: Retrieve one civil enforcement case by case number, with the facilities, defendants, and settlements behind it. Returns the case's category, enforcement type, status, lead agency, relief sought, outcome, court and DOJ docket numbers, summary, and penalty, cost-recovery,...
case_id*stringepa_tri_get_facility_releasesTRI: Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, reporting year, on-site releases by medium (air, water, land, underground injection) and their total, and the Form R one-time relea...5 params
TRI: Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, reporting year, on-site releases by medium (air, water, land, underground injection) and their total, and the Form R one-time relea...
chemical_namestringfacility_id*stringlimitintegeroffsetintegeryearintegerepa_tri_search_releasesTRI: Search Toxic Release Inventory data across facilities in a state or county, for one reporting year or, without year, every available year newest first. Returns facility name and county, TRI facility ID, EPA Registry ID (the registry_id epa_echo_get_facility takes), parent...7 params
TRI: Search Toxic Release Inventory data across facilities in a state or county, for one reporting year or, without year, every available year newest first. Returns facility name and county, TRI facility ID, EPA Registry ID (the registry_id epa_echo_get_facility takes), parent...
chemical_namestringcountystringinclude_release_breakdownbooleanlimitintegeroffsetintegerstate*stringyearintegerepa_superfund_search_sitesSuperfund: Search Superfund (CERCLA/SEMS) sites by location or NPL listing status. Returns site identifiers, source NPL status labels, non-NPL assessment and archive metadata when available, coordinates, and county FIPS code. Accepts either state/city/ZIP, returned in SEMS sit...10 params
Superfund: Search Superfund (CERCLA/SEMS) sites by location or NPL listing status. Returns site identifiers, source NPL status labels, non-NPL assessment and archive metadata when available, coordinates, and county FIPS code. Accepts either state/city/ZIP, returned in SEMS sit...
citystringexclude_archivedbooleanlatitudenumberlimitintegerlongitudenumbernpl_statusstringlisted · not-listed · proposed · deleted · removed · withdrawndefault: alloffsetintegerradius_milesnumberstatestringzip_codestringepa_superfund_get_siteSuperfund: Retrieve a site by exact SEMS site ID from epa_superfund_search_sites, with all recorded contaminant associations and their media, operable units, and EPA actions. Repeated chemicals in different contexts and duplicate source rows are retained. An existing site with...1 params
Superfund: Retrieve a site by exact SEMS site ID from epa_superfund_search_sites, with all recorded contaminant associations and their media, operable units, and EPA actions. Repeated chemicals in different contexts and duplicate source rows are retained. An existing site with...
site_id*stringepa_water_search_systemsDrinking water (SDWIS): Search public water systems by state, ZIP code, or county served. Returns system name, PWSID, population served, primary water source, and activity status, in PWSID order; page through a large match with offset and nextOffset. zip_code matches a system'...8 params
Drinking water (SDWIS): Search public water systems by state, ZIP code, or county served. Returns system name, PWSID, population served, primary water source, and activity status, in PWSID order; page through a large match with offset and nextOffset. zip_code matches a system'...
active_onlybooleancountystringhas_violationbooleanlimitintegeroffsetintegerpws_typestringcommunity · non-transient · transientstatestringzip_codestringepa_ejscreen_get_scoresEJScreen: Get EJScreen environmental-justice indicators for a point and surrounding buffer. Returns the 13 EJScreen environmental indicators (PM2.5, ozone, diesel particulate, NO2, lead paint, traffic proximity, Superfund/RMP/hazardous-waste/wastewater proximity, underground s...4 params
EJScreen: Get EJScreen environmental-justice indicators for a point and surrounding buffer. Returns the 13 EJScreen environmental indicators (PM2.5, ozone, diesel particulate, NO2, lead paint, traffic proximity, Superfund/RMP/hazardous-waste/wastewater proximity, underground s...
distancenumberlatitude*numberlongitude*numberunitstringmiles · kilometersdefault: milesepa_airnow_get_conditionsAirNow: Get current AQI observations or the issued AQI forecast for a US location from the AirNow API. Provide either zip_code or both latitude and longitude. Current mode returns the latest hourly NowCast AQI for each pollutant (PM2.5, ozone, PM10) from the closest monitor wi...5 params
AirNow: Get current AQI observations or the issued AQI forecast for a US location from the AirNow API. Provide either zip_code or both latitude and longitude. Current mode returns the latest hourly NowCast AQI for each pollutant (PM2.5, ozone, PM10) from the closest monitor wi...
forecast_datestringlatitudenumberlongitudenumbermodestringcurrent · forecastdefault: currentzip_codestringSponsors
Configuration
AIRNOW_API_KEYOptional AirNow API key for real-time and forecast air quality data. When unset, the epa_airnow_get_conditions tool is not registered and the other tools run without it. Free registration at docs.airnowapi.org.
EJSCREEN_API_BASE_URLdefault: https://api.ejanalysis.comOptional override for the EJScreen (EJAM) API base URL used by epa_ejscreen_get_scores. Defaults to https://api.ejanalysis.com — the community-maintained EJScreen rehost by Public Environmental Data Partners.
MCP_LOG_LEVELdefault: infoSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_TRANSPORT_TYPEdefault: httpSelects the HTTP transport.
MCP_HTTP_HOSTdefault: 127.0.0.1The hostname for the HTTP server.
MCP_HTTP_PORTdefault: 3010The port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHdefault: /mcpThe endpoint path for the MCP server.
MCP_AUTH_MODEdefault: noneAuthentication mode to use: 'none', 'jwt', or 'oauth'.
Readme
@cyanheads/epa-mcp-server
Search and retrieve EPA environmental data: facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, environmental-justice screening (EJScreen), and real-time air quality (AirNow). STDIO or Streamable HTTP.
Details
- Repository
- github.com/cyanheads/epa-mcp-server
- Categories
- Search & Web Crawling, Data & Analytics
- Package
@cyanheads/epa-mcp-server- Transport
- STDIO, HTTP
- Registry
- MCP registry, active
- Resources
- 1
- Tools verified
- Nov 6, 2026
More from cyanheads
- Osv Advisory Mcp Server2
- Gbif Biodiversity Mcp Server1
- Pentest Mcp Server1
- Workflows Mcp Server32
- Noaa Cdo Mcp Server5
- Ntfy Mcp Server25
- Macos Mcp Server4
- Clipboard Mcp Server3
- Guardian Mcp Server2
- Mailchimp Mcp Server2
- Sports Mcp Server2
- Whois Mcp Server2
- Federal Reserve Mcp Server1
- Shift Mcp Server1
- Anime Mcp Server2
- Survey Mcp Server4
- Mcp Ts Template145
- nist-nvd-mcp-server
- open-meteo-mcp-server
- openfda-mcp-server
- wikipedia-mcp-server
- census-mcp-server
- crossref-mcp-server
- eur-lex-mcp-server