← Back to search

io.github.cyanheads/epa-mcp-server

cyanheads Scanned 20d ago

EPA data: ECHO facility compliance, TRI releases, Superfund, drinking water, and AirNow air quality.

? Not scanned yet

Versions

No versions found.

Tools 9

epa_search_violations
annotations: verified low

Search EPA civil and criminal enforcement cases by state, regulatory program, or date range. Returns case identifier, regulated facility name and Registry ID, programs involved, penalty assessed, settlement date, and case type. Designed for area-level violation discovery — for a single known facility's enforcement history use epa_get_facility instead. At least one of state or zip_code is required.

input object output object caseName string zip_code string
readOnlyHint true openWorldHint true idempotentHint true
epa_get_tri_releases
annotations: verified low

Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, total release quantity, and reporting year. TRI data lags ~18 months — the most recent available year is typically 2 years prior to the current calendar year. Obtain facility_id (TRI facility ID) from epa_search_facilities. Use epa_search_tri_releases to identify top emitters across a region.

input object output object facilityId string chemicalName string reportingYear number
readOnlyHint true openWorldHint true idempotentHint true
epa_search_superfund
annotations: verified low

Search Superfund (CERCLA/SEMS) sites by location or NPL listing status. Returns site name, EPA site ID, NPL status (listed/not listed/proposed), cleanup status, coordinates, and county FIPS code. Accepts either state/city/ZIP or latitude+longitude+radius for proximity searches. Use for "are there Superfund sites near X" questions.

zip string city string input object state string county string output object siteId string street string fipsCode string zip_code string cleanupStatus string
readOnlyHint true openWorldHint true idempotentHint true
epa_search_tri_releases
annotations: verified low

Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name, TRI ID, chemical name, and release quantity. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.

input object state string output object facilityId string chemicalName string facilityName string reportingYear number
readOnlyHint true openWorldHint true idempotentHint true
epa_get_facility
annotations: verified low

Retrieve a full compliance profile for a single EPA-regulated facility by EPA Registry ID. Returns facility metadata, per-program compliance status, inspection history, formal enforcement actions, penalty totals, and TRI release summary. Use epa_search_facilities to discover Registry IDs. For area-level enforcement discovery use epa_search_violations instead.

air boolean tri boolean zip string city string rcra boolean sdwa boolean input object state string water boolean county string output object street string fipsCode string latitude number longitude number registryId string mediaStatusCode string complianceStatus string
readOnlyHint true openWorldHint true idempotentHint true
epa_search_water_systems
annotations: verified low

Search drinking water systems (SDWIS) by state or ZIP code. Returns system name, PWSID, population served, primary water source, and active violation status. Use to identify community water systems with current or recent compliance violations. At least one of state or zip_code is required.

zip string city string input object pwsid string state string output object zip_code string
readOnlyHint true openWorldHint true idempotentHint true
epa_get_ejscreen
annotations: verified low

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 storage tanks, drinking-water non-compliance, and RSEI toxic air releases) and 6 demographic indicators (people of color, low income, limited English, less than high school, under 5, over 64), each with national and state percentiles plus EJ Index values, along with the Demographic Index and Supplemental Demographic Index. Data is EJScreen v2.2 (2022) served via the community-maintained EJAM API (api.ejanalysis.com, Public Environmental Data Partners), which rehosts EJScreen after EPA discontinued public access in 2025 — not a live EPA endpoint. Provide latitude, longitude, and a buffer distance (default 1 mile, max 15 miles). Points outside US coverage return a coverage note instead of indicators.

input object output object latitude number longitude number
readOnlyHint true openWorldHint true idempotentHint true
epa_get_air_quality
annotations: verified low

Get current AQI observations or forecasts for a location from the AirNow API. Returns per-pollutant AQI values (PM2.5, ozone, CO, SO2, NO2), AQI category (Good through Hazardous), reporting area name, and observation timestamp. Provide either zip_code or both latitude and longitude. Set mode to "forecast" and provide forecast_date for next-day projections. Data is preliminary — suitable for awareness and informational use, not regulatory decisions. Responses are cached for ~1 hour.

input object output object latitude number zip_code string longitude number stateCode string
readOnlyHint true openWorldHint true idempotentHint true
epa_search_facilities
annotations: verified low

Search EPA-regulated facilities by location, industry program, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS code, per-program registration flags, inspection counts, penalty totals, and TRI release totals. Registry IDs returned here feed epa_get_facility and epa_get_tri_releases. Supports proximity search via latitude + longitude + radius_miles. At least one geographic filter (zip_code, state, city, or a complete latitude+longitude+radius_miles triple) is required — unscoped searches time out.

city string input object state string output object zip_code string active_only boolean
readOnlyHint true openWorldHint true idempotentHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 28

info
Tool 'epa_search_violations' annotations are consistent annotation_checker · 80%
info
Tool 'epa_get_tri_releases' annotations are consistent annotation_checker · 80%
info
Tool 'epa_search_superfund' annotations are consistent annotation_checker · 80%
info
Tool 'epa_search_tri_releases' annotations are consistent annotation_checker · 80%
info
Tool 'epa_get_facility' annotations are consistent annotation_checker · 80%
info
Tool 'epa_search_water_systems' annotations are consistent annotation_checker · 80%
info
Tool 'epa_get_ejscreen' annotations are consistent annotation_checker · 80%
info
Tool 'epa_get_air_quality' annotations are consistent annotation_checker · 80%
info
Tool 'epa_search_facilities' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: epa_search_violations manifest_parser · 75%
info
Tool: epa_get_tri_releases manifest_parser · 75%
info
Tool: epa_search_superfund manifest_parser · 75%
info
Tool: epa_search_tri_releases manifest_parser · 75%
info
Tool: epa_get_facility manifest_parser · 75%
info
Tool: epa_search_water_systems manifest_parser · 75%
info
Tool: epa_get_ejscreen manifest_parser · 75%
info
Tool: epa_get_air_quality manifest_parser · 75%
info
Tool: epa_search_facilities manifest_parser · 75%
info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 11 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-epa-mcp-server-c6fcd80/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%