Skip to main content
Glama

epa-mcp-server

Server Details

Search EPA compliance, TRI, Superfund, drinking-water, EJScreen, and AirNow data.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/epa-mcp-server
GitHub Stars
1
Server Listing
EPA MCP Server

TDQS

Score is being calculated.

Available Tools

8 tools
epa_get_ejscreenGet EJScreen Environmental Justice Indicators
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit for distance. Kilometers are converted to miles (× 0.621371) before the request.miles
distanceNoBuffer radius around the point, in the given unit (default 1). The miles-equivalent must be 15 or less.
latitudeYesLatitude in decimal degrees.
longitudeYesLongitude in decimal degrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when the point is outside EJScreen coverage and no indicators were returned.
coverageNoWhether EJScreen data was available for the point.
locationNoThe queried location and buffer context.
reportUrlNoLink (absolute URL) to the full EJScreen report for this point and buffer.
dataSourceNoProvenance and vintage of the data.
demographicNoEJScreen demographic indicators present for the area. Empty when out of coverage.
environmentalNoEJScreen environmental indicators present for the area. Empty when out of coverage.
demographicIndexNoEJScreen Demographic Index. Absent when out of coverage.
supplementalDemographicIndexNoEJScreen Supplemental Demographic Index. Absent when out of coverage.
epa_get_facilityGet EPA Facility Compliance Profile
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
registry_idYesEPA FRS Registry ID for the facility (obtained from epa_search_facilities)

Output Schema

ParametersJSON Schema
NameRequiredDescription
zipNoZIP code
cityNoCity
nameNoFacility name
errorNoPresent when the call failed. Absent on success.
stateNo2-letter state abbreviation
countyNoCounty name
streetNoStreet address
fipsCodeNo5-digit county FIPS code
latitudeNoLatitude in decimal degrees
programsNoProgram registration flags
longitudeNoLongitude in decimal degrees
complianceNoCompliance summary from DFR. Absent when ECHO DFR compliance endpoint unavailable.
registryIdNoEPA FRS Registry ID
inspectionsNoInspection history records
airComplianceNoCAA-specific compliance details. Present only when facility is registered under CAA (programs.air=true).
formalActionsNoFormal enforcement actions on record
waterComplianceNoCWA/NPDES permit and compliance details. Present only when facility is registered under CWA (programs.water=true).
complianceStatusNoOverall compliance status text
triReleasesTransfersInLbsNoTotal TRI on/off-site releases and transfers in pounds
epa_get_tri_releasesGet TRI Chemical Releases for Facility
Read-onlyIdempotent
Inspect

Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, reporting year, routine on-site releases by medium (air, water, land, underground injection), and the one-time / non-routine release quantity. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. TRI data lags ~18 months — the most recent available year is typically 2 years prior to the current calendar year. facility_id is the 15-character TRI facility ID: take it from the facilityId field of epa_search_tri_releases, which also identifies top emitters across a region. A 12-digit EPA Registry ID is a different identifier and matches no TRI records.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoReporting year to retrieve. Defaults to all available years. TRI data is typically available through ~2 years prior to the current year.
facility_idYes15-character TRI facility ID (e.g. "9867WSNRWD1981S") — the facilityId field returned by epa_search_tri_releases. A 12-digit EPA Registry ID matches no TRI records.
chemical_nameNoOptional filter to restrict results to a specific chemical (partial match, case-insensitive)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
messageNoRecovery hint when no releases are found — suggests alternative years or checking the facility ID. Absent when releases are returned.
releasesNoPer-chemical annual TRI release records for the queried facility
facilityIdNoTRI facility ID queried
epa_search_facilitiesSearch EPA Facilities
Read-onlyIdempotent
Inspect

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name. Pair with state for best results.
limitNoMaximum number of facilities to return (1–100)
stateNo2-letter US state abbreviation (e.g. "WA", "CA")
latitudeNoLatitude in decimal degrees. Pair with longitude and radius_miles for proximity search.
programsNoRestrict results to facilities registered in these environmental programs. CAA=air, CWA=water, RCRA=waste, TRI=toxic releases, SDWA=drinking water.
zip_codeNo5-digit ZIP code to search within
longitudeNoLongitude in decimal degrees. Pair with latitude and radius_miles for proximity search.
active_onlyNoWhen true, return only active facilities
radius_milesNoSearch radius in miles around the given latitude/longitude (max 100). Requires latitude and longitude.
has_violationNoWhen true, return only facilities with recent significant violations

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
messageNoRecovery hint when no results are found — echoes applied filters and suggests how to broaden the search. Absent when results are returned.
facilitiesNoMatching EPA facilities
totalCountNoTotal facilities matched before the limit was applied
epa_search_superfundSearch Superfund Sites
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name (partial match within state)
limitNoMaximum number of sites to return (1–200)
stateNo2-letter US state abbreviation to filter sites
latitudeNoLatitude for proximity search (use with longitude and radius_miles)
zip_codeNo5-digit ZIP code to filter sites
longitudeNoLongitude for proximity search (use with latitude and radius_miles)
npl_statusNoFilter by NPL (National Priorities List) status: listed=final NPL, not-listed=not on NPL, proposed=proposed for listing, all=include allall
radius_milesNoSearch radius in miles from the given coordinates. Required when using latitude+longitude.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
sitesNoMatching Superfund sites
messageNoRecovery hint when no sites are found. Absent when sites are returned.
totalCountNoNumber of sites returned (may be less than available if limit applied)
epa_search_tri_releasesSearch TRI Releases by Region
Read-onlyIdempotent
Inspect

Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name and county, TRI facility ID, chemical name, and the one-time / non-routine release quantity; set include_release_breakdown to add routine on-site releases by medium (air, water, land, and underground-injection), at the cost of a slower call. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoReporting year. Defaults to all available years in the state. TRI data lags ~18 months.
limitNoMaximum number of release records to return (1–200)
stateYes2-letter US state abbreviation (required, e.g. "WA", "TX")
countyNoCounty name to narrow results within the state, e.g. "King". Case-insensitive partial match on the bare name, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS; check countyName on each record); a trailing "County", "Parish", or "Borough" is dropped before matching.
chemical_nameNoOptional filter to restrict results to a specific chemical (partial match, case-insensitive)
include_release_breakdownNoAdd routine on-site releases by medium (air, water, land, underground injection) to each record. Costs one extra upstream request, which can add about 20 seconds when EPA has not cached it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied. Present only when truncated.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of release records returned. Present only when truncated.
stateNoState queried
messageNoRecovery hint when no releases are found. Absent when releases are returned.
releasesNoTRI release records for facilities in the queried state and filters
truncatedNoTrue when the result list was capped at the limit — more records may exist. Absent below the limit.
epa_search_violationsSearch EPA Enforcement Cases
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of cases to return (1–100)
stateNo2-letter US state abbreviation to filter cases (e.g. "TX", "CA")
programNoFilter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances
zip_codeNo5-digit ZIP code to filter cases near that area
case_typeNoFilter by case type: civil (regulatory violations), criminal (willful violations), or allall
date_filed_endNoEnd date for case filing date range (ISO 8601: YYYY-MM-DD)
date_filed_startNoStart date for case filing date range (ISO 8601: YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
casesNoMatching enforcement cases
errorNoPresent when the call failed. Absent on success.
messageNoRecovery hint when no cases are found — echoes filters and suggests broadening. Absent when cases are returned.
totalCountNoTotal cases matched before the limit was applied
epa_search_water_systemsSearch Drinking Water Systems
Read-onlyIdempotent
Inspect

Search drinking water systems (SDWIS) by state or ZIP code. Returns system name, PWSID, population served, primary water source, and activity status. With has_violation, returns only systems with an open violation — one SDWIS has not marked returned to compliance or closed out when the system was deactivated. At least one of state or zip_code is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of systems to return (1–200)
stateNo2-letter US state abbreviation (e.g. "WA", "CA")
pws_typeNoFilter by public water system type: community=permanent residences, non-transient=regular non-residents (schools, businesses), transient=occasional users (campgrounds)
zip_codeNo5-digit ZIP code of the water system's address of record — often its owner's or operator's office, which can be far from the area the system serves
has_violationNoWhen true, return only systems with an open SDWIS violation (not yet returned to compliance). Works with state, zip_code, or both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoPresent when the has_violation check read only part of what it needed — the first 1,000 open violation records for the state, the first 1,000 systems in the ZIP, or the first 1,000 open violation records for a group of the ZIP’s systems — so violating systems outside that part may be missing from the results.
messageNoRecovery hint when no systems are found. Absent when systems are returned.
systemsNoMatching public water systems
totalCountNoNumber of systems returned

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedepa_get_ejscreen
    • First observedepa_get_facility
    • First observedepa_get_tri_releases
    • First observedepa_search_facilities
    • First observedepa_search_superfund
    • First observedepa_search_tri_releases
    • First observedepa_search_violations
    • First observedepa_search_water_systems

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides AI agents with structured access to U.S. EPA environmental data including nearby regulated facilities, chemical releases, water violations, and hazardous waste sites for any U.S. location. Enables comprehensive environmental impact analysis through the EPA Envirofacts API with geocoding support and distance-based filtering.
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.