# 🌍 Environmental & ESG MCP — EPA, Health, Nonprofits (`nexgendata/environmental-esg-mcp`) Actor

MCP server giving AI agents one-connection access to environmental & ESG data: EPA ECHO facility enforcement & compliance, CDC WONDER/FluView public-health surveillance, and IRS Form 990 nonprofit financials. 3 tools for Claude, Cursor & any MCP client.

- **URL**: https://apify.com/nexgendata/environmental-esg-mcp.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** MCP servers, AI
- **Stats:** 4 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 review scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🌍 Environmental & ESG MCP — EPA, Health, Nonprofits

**One MCP endpoint that gives an AI agent live environmental, health, and nonprofit data** — EPA facility and environmental records, public-health data, and nonprofit / tax-exempt organization information — behind a single Model Context Protocol connection. Point Claude Desktop, Cursor, Windsurf, Cline, or n8n at this server and your agent can answer "which facilities have environmental records in this area?", "what does the public-health data say?", or "look up this nonprofit organization" without you wiring up multiple separate government APIs and credentials.

> **One connection. EPA + health + nonprofit data. Built for AI agents — the MCP server that turns a chatbot into an ESG and public-data analyst.**

### Why use this

- **One endpoint instead of many integrations.** EPA records, health data, and nonprofit lookups normally mean several distinct government data sources, each with its own format and quirks. This MCP bundles them behind one streamable-HTTP connection your agent already understands.
- **Purpose-built for AI agents.** Each tool returns clean, structured JSON an LLM can reason over directly — no scraping or glue code inside the agent.
- **Official public sources.** The underlying data is public environmental, health, and tax-exempt-organization information — the substance of ESG and due-diligence research.
- **Works with the MCP clients you already use.** Claude Desktop, Cursor, Windsurf, Cline, n8n, and any other MCP-compatible host.
- **Pay only for what the agent calls.** Pay-per-event billing per tool call — no subscription, no idle cost.

### Tools

This MCP server exposes **3 tools**:

- **`get_epa_enforcement`** — EPA ECHO facility enforcement & compliance: violations, penalties, and inspections by facility.
- **`get_public_health`** — CDC WONDER / FluView public-health surveillance statistics.
- **`get_nonprofit_990`** — IRS Form 990 nonprofit / tax-exempt organization financials.

### Use cases

- **Agentic ESG research** — Ask your Claude Desktop or Cursor agent to "pull the environmental profile for facilities operated by this company" and let it call the EPA tool and synthesize the result.
- **Due-diligence copilots** — Give a diligence assistant access to environmental and nonprofit lookups so it can vet a counterparty or grantee inside the chat.
- **Grant & philanthropy research** — A nonprofit-research agent looks up tax-exempt organizations to support grant-making decisions and partner vetting.
- **Social / community-risk monitoring** — An automated agent (via n8n) checks environmental and public-health context for a portfolio of locations and flags concerns.
- **ESG reporting support** — An analyst's agent assembles environmental and social data points for an ESG report from one connection rather than several APIs.
- **Cross-domain synthesis** — Because environmental, health, and nonprofit domains sit behind one connection, an agent can combine them in a single reasoning step.

### Connect

This is a **streamable-HTTP MCP server**. Point your MCP client at:

````

https://nexgendata--environmental-esg-mcp.apify.actor/mcp

````

**Claude Desktop / Cursor / Windsurf / Cline** — add the server to your MCP config with the URL above (and your Apify token where the client asks for auth). Example config block:

```json
{
  "mcpServers": {
    "environmental-esg": {
      "url": "https://nexgendata--environmental-esg-mcp.apify.actor/mcp",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
````

**n8n** — use the MCP Client node with the streamable-HTTP transport and the same URL. Once connected, the environmental, health, and nonprofit tools appear in your agent's tool list automatically.

### Pricing

This MCP server runs on Apify's **pay-per-event (PPE)** model — you pay **per tool call** the agent makes, at **$0.10 per call**, plus a sub-cent actor-start event. No subscription, no seat licence, no idle cost.

Worked example:

- An agent that makes 50 tool calls in a research session → **$5.00**
- A diligence run that calls 10 tools across a counterparty → **$1.00**
- A monitoring agent making 200 calls in a day → **$20.00**

Because billing is per tool call, an idle MCP connection that makes no calls costs nothing.

### FAQ

**Q: What is MCP and why does it matter here?**
A: The Model Context Protocol is the open standard that lets AI agents (Claude Desktop, Cursor, etc.) discover and call external tools. This server exposes environmental, health, and nonprofit data *as MCP tools*, so an agent can use them natively without custom integration code.

**Q: Which clients work?**
A: Any MCP-compatible host — Claude Desktop, Cursor, Windsurf, Cline, n8n, and others — using the streamable-HTTP transport and the URL above.

**Q: Where does the data come from?**
A: Public environmental (EPA), public-health, and nonprofit / tax-exempt organization sources, reformatted into agent-friendly JSON tools.

**Q: Do I need separate API keys for each source?**
A: No. The MCP server handles the underlying sources; you only need your Apify token to authenticate the MCP connection.

**Q: Can an AI agent pay for this autonomously?**
A: Yes — the pay-per-event model and Apify's agent-payment support mean an autonomous agent can discover and invoke the server and be billed per tool call.

### Schema stability & versioning

This server follows NexGenData's **additive-only** contract: new tools and new fields may be added over time, but existing tool names and output fields are not renamed or removed without a major-version bump and advance notice. Build agent workflows on these tools with confidence.

### Compliance & legal

- This MCP server reformats **public environmental, health, and nonprofit data**. It is not affiliated with, endorsed by, or sponsored by the EPA, any health agency, or any nonprofit.
- Nothing returned is legal, financial, medical, or investment advice.
- For any regulated or high-stakes decision, **verify against the primary data source**.
- You are responsible for ensuring your downstream use complies with applicable laws and source terms of use.

### Related NexGenData actors

Part of NexGenData's **Environmental / ESG and MCP** clusters — pair this server with:

- [EPA TRI Toxic Release Facilities](https://apify.com/nexgendata/epa-tri-toxic-release-facilities?fpr=2ayu9b)
- [EPA ECHO Enforcement Scraper](https://apify.com/nexgendata/epa-echo-enforcement-scraper?fpr=2ayu9b)
- [OpenFEMA NFIP Flood Insurance Claims](https://apify.com/nexgendata/openfema-nfip-flood-claims?fpr=2ayu9b)
- [CMS Hospital Compare](https://apify.com/nexgendata/cms-hospital-compare?fpr=2ayu9b)
- [NIH RePORTER Grants Scraper](https://apify.com/nexgendata/nih-reporter-grants-scraper?fpr=2ayu9b)
- [Crypto & DeFi MCP](https://apify.com/nexgendata/crypto-defi-mcp?fpr=2ayu9b)

Browse the full 200+ actor catalog at **https://apify.com/nexgendata?fpr=2ayu9b**.

# Actor input Schema

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/environmental-esg-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/environmental-esg-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call nexgendata/environmental-esg-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/environmental-esg-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🌍 Environmental & ESG MCP — EPA, Health, Nonprofits",
        "description": "MCP server giving AI agents one-connection access to environmental & ESG data: EPA ECHO facility enforcement & compliance, CDC WONDER/FluView public-health surveillance, and IRS Form 990 nonprofit financials. 3 tools for Claude, Cursor & any MCP client.",
        "version": "0.0",
        "x-build-id": "I7naYTJ17MjVqo7j9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~environmental-esg-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-environmental-esg-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~environmental-esg-mcp/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-environmental-esg-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~environmental-esg-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-environmental-esg-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {}
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
