Skip to main content
ClaudeWave
rozetyp avatar
rozetyp

emission-factors-mcp

View on GitHub

Keyless MCP server for US grid carbon and power cost by ZIP: EPA eGRID Scope 2 (location + market-based), Scope 1 fuels, site comparison, cleanest hours, hourly intensity, rates and tariffs.

MCP ServersOfficial Registry1 stars0 forks● TypeScriptMITUpdated today
ClaudeWave Trust Score
95/100
✓ Verified
Passed
  • ✓Open-source license (MIT)
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Last scanned: 10/19/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/rozetyp/emission-factors-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "emission-factors-mcp": {
      "command": "node",
      "args": ["/path/to/emission-factors-mcp/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/rozetyp/emission-factors-mcp and follow its README for install instructions.
Use cases

MCP Servers overview

# emission-factors MCP server

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![MCP](https://img.shields.io/badge/Model_Context_Protocol-server-8A2BE2)](https://modelcontextprotocol.io)
[![No key required](https://img.shields.io/badge/auth-none%20(keyless)-brightgreen)](https://emission-factors.com)

Give Claude, Cursor, Cline, or any [MCP](https://modelcontextprotocol.io) client live access to **US electricity data by ZIP code** - grid-carbon emission factors, retail rates, hourly grid carbon intensity, power-plant emissions, and utility tariffs.

Backed by [emission-factors.com](https://emission-factors.com), which wraps EPA eGRID, EIA-861, EIA-930, EPA CAMD, and OpenEI URDB into one ZIP-keyed API.

**Free. No API key, no signup.** The API is rate-limited per IP (2,000 requests/hour).

---

## What you can ask

Once connected, your agent can answer things like:

- *"My HQ in ZIP 94105 uses 1.2M kWh/year. What's our Scope 2 carbon footprint and annual electricity cost?"*
- *"Compare Denver, Austin, and Columbus for a new data center on grid carbon intensity and electricity price."*
- *"What hour of the day is cleanest to run a 500 kW batch job in California this week?"*
- *"Enrich this list of 40 store ZIP codes with each site's emission factor and carbon-free percentage."*
- *"Which are the dirtiest power plants in Texas by CO2 over the last week?"*
- *"Rank Ashburn VA, Abilene TX and The Dalles OR for a 10 MW data center on carbon and power cost."*
- *"Our plant burns 40,000 therms of gas and 3,000 gallons of diesel a year - what's our Scope 1?"*
- *"What's the actual PG&E residential tariff for 94105, not the state average?"*

## Why use it

- **Scope 2 carbon accounting** - GHG Protocol location- and market-based emission factors for 33,700+ US ZIP codes (CDP, CSRD, California SB 253 inputs).
- **Site selection** - compare candidate locations on both carbon intensity *and* electricity cost in one conversation.
- **Demand-response and load-shifting analysis** - hourly grid carbon from EIA-930 (fixed per-fuel factors on in-BA generation: for timing, not inventory reporting).
- **Plant-level emissions** - EPA CAMD data for fossil units over 25 MW: per-facility summaries or unit-hour records, published quarterly.
- **Agents and automation** - a clean tool surface so an LLM can fetch authoritative government data instead of hallucinating factors.

---

## Quick start

There are two ways to run this. Most people want **Option A**.

### Option A - Remote server (recommended, zero install)

Nothing to install, always up to date. The hosted endpoint is `https://emission-factors.com/mcp` (Streamable HTTP, no key).

**Claude (web, desktop app, mobile)** - [**Add to Claude**](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Emission%20Factors&connectorUrl=https%3A%2F%2Femission-factors.com%2Fmcp). The link opens Claude's custom-connector dialog with the name and URL filled in; select **Add**, then **Connect**. By hand: Customize -> Connectors -> Add custom connector, URL `https://emission-factors.com/mcp`, OAuth fields empty.

**Claude Code**

```bash
claude mcp add --transport http emission-factors https://emission-factors.com/mcp
```

**Cursor** - add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "emission-factors": {
      "url": "https://emission-factors.com/mcp"
    }
  }
}
```

**Cline / Continue / Zed / other clients** - add a remote (Streamable HTTP) MCP server with URL `https://emission-factors.com/mcp`. No key needed.

> Claude Desktop's `claude_desktop_config.json` only starts local (stdio) servers - a `"url"` entry there does nothing. Use the connector link above, or Option B.

### Option B - Local stdio server (this package)

Runs the server as a local process that proxies the same public API. Useful for clients that only support stdio transport, or if you want to self-host.

Run straight from GitHub (builds on install, requires Node 18+):

```json
{
  "mcpServers": {
    "emission-factors": {
      "command": "npx",
      "args": ["-y", "github:rozetyp/emission-factors-mcp"]
    }
  }
}
```

Or clone and run from source:

```bash
git clone https://github.com/rozetyp/emission-factors-mcp.git
cd emission-factors-mcp
npm install        # builds dist/ via the prepare script
```

```json
{
  "mcpServers": {
    "emission-factors": {
      "command": "node",
      "args": ["/absolute/path/to/emission-factors-mcp/dist/index.js"]
    }
  }
}
```

Optional environment variable: `EMISSION_FACTORS_API_BASE` (defaults to `https://emission-factors.com`) if you run your own instance of the API.

---

## Tools

Eleven tools, keyed by US ZIP code (or a direct code where noted). The remote server and this stdio build expose the same set.

| Tool | Purpose | Key inputs |
|------|---------|------------|
| `lookup_emission_factor` | EPA eGRID CO2e + full generation mix for a ZIP | `zip` |
| `lookup_by_coordinates` | Same, resolved from lat/lon via Census geocoder | `lat`, `lon` |
| `lookup_batch` | Emission factors for up to 100 ZIPs at once | `zips[]` |
| `calculate_emissions` | Scope 2 CO2e for a ZIP + kWh, location-based and market-based (Green-e residual mix) | `zip`, `kwh`, `renewable_kwh` |
| `hourly_intensity` | Hourly grid carbon intensity (EIA-930, ~24h lag) | `zip` or `ba`, `hours` |
| `plant_emissions` | Plant emissions (EPA CAMD): facility summaries or unit-hour records | `facility_id` or `state`, `days` |
| `utility_tariff` | Utility-specific tariff, not state average (OpenEI URDB) | `zip`, `utility`, or `eiaid` |
| `electricity_rate` | State-average retail rate by sector (EIA-861) | `zip` |
| `compare_sites` | Rank 2-25 candidate sites on grid carbon, $/kWh and cleanest daily window | `zips[]`, `annual_kwh`, `sector` |
| `cleanest_hours` | Cleanest N-hour window of the day to run a flexible load, in local time | `zip` or `ba`, `duration` |
| `calculate_fuel_emissions` | Scope 1 CO2e for fuels burned on site (EPA GHG Emission Factors Hub) | `items[]`: `fuel`, `quantity`, `unit` |

All tools return JSON. See [full API docs](https://emission-factors.com/api-docs) for exact response shapes.

---

## Data sources

| Data | Source | Notes |
|------|--------|-------|
| Grid emission factors | EPA eGRID2023 Rev2 (+ eGRID2024 from Cornerstone via year=2024) | Annual, location-based, 27 subregions |
| Residual mix (market-based Scope 2) | Green-e Residual Mix 2025 (2023 data) | Per eGRID subregion |
| Fuel combustion factors (Scope 1) | GHG Emission Factors Hub 2026 (Cornerstone, successor to EPA's Hub); EPA 2025 via `edition` | 63 fuels, AR6 GWPs (AR5 for 2025) |
| Retail electricity rates | EIA Form 861 | State-level monthly average by sector |
| Hourly grid carbon intensity | EIA-930 | Derived from hourly fuel mix, ~24h lag |
| Plant-level emissions | EPA CAMD | fossil units >25 MW, published quarterly (45+ days after quarter end) |
| Utility-specific tariffs | OpenEI URDB (NREL) | ZIP matched to its utility by EIA ID |
| ZIP / lat-lon resolution | US Census (ZCTA + Geocoder) | ZIP -> eGRID subregion mapping |

## Rate limits and auth

- **No API key, no signup.** Every request is anonymous.
- **2,000 requests/hour per IP.** Generous for interactive use; if you hit it you get an HTTP 429 with a `retryAfter` hint.
- The external-data endpoints are cached server-side (24h rates, 1h hourly intensity, 7d tariffs, 24h plant emissions), so repeated calls are fast and don't burn upstream quotas.

## Also available

- **REST API** - the same data over plain HTTP: `curl "https://emission-factors.com/api/lookup?zip=94105"`. See the [API docs](https://emission-factors.com/api-docs) and [OpenAPI spec](https://emission-factors.com/openapi.json).
- **Hosted MCP setup guide** - [emission-factors.com/mcp-setup](https://emission-factors.com/mcp-setup)
- **Machine-readable summary for agents** - [emission-factors.com/llms.txt](https://emission-factors.com/llms.txt)

---

## Development

```bash
npm install        # install deps and build (prepare -> tsc)
npm run build      # compile TypeScript to dist/
npm run dev        # watch mode
npm start          # run the built server over stdio
```

Quick smoke test with the MCP Inspector:

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

The server is a thin proxy: each tool maps to one `/api/*` endpoint on emission-factors.com, validates inputs, and returns the JSON response. There is no local state and no key handling.

## License

MIT - see [LICENSE](LICENSE). Data belongs to its respective US government sources (EPA, EIA, Census) and NREL/OpenEI; this project and the API are an unofficial wrapper, not affiliated with those agencies.
carbon-accountingclaudeclimateclinecursoregrideiaelectricityemission-factorsepaesgghg-protocolgrid-carbon-intensitymcpmcp-servermodel-context-protocolscope-1scope-2sustainabilityzip-code

What people ask about emission-factors-mcp

What is rozetyp/emission-factors-mcp?

+

rozetyp/emission-factors-mcp is mcp servers for the Claude AI ecosystem. Keyless MCP server for US grid carbon and power cost by ZIP: EPA eGRID Scope 2 (location + market-based), Scope 1 fuels, site comparison, cleanest hours, hourly intensity, rates and tariffs. It has 1 GitHub stars and its last recorded update is dated 2026-10-19.

How do I install emission-factors-mcp?

+

You can install emission-factors-mcp by cloning the repository (https://github.com/rozetyp/emission-factors-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is rozetyp/emission-factors-mcp safe to use?

+

Our security agent has analyzed rozetyp/emission-factors-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains rozetyp/emission-factors-mcp?

+

rozetyp/emission-factors-mcp is maintained by rozetyp. The last recorded GitHub activity is dated 2026-10-19, with 0 open issues.

Are there alternatives to emission-factors-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy emission-factors-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: rozetyp/emission-factors-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/rozetyp-emission-factors-mcp)](https://claudewave.com/repo/rozetyp-emission-factors-mcp)
<a href="https://claudewave.com/repo/rozetyp-emission-factors-mcp"><img src="https://claudewave.com/api/badge/rozetyp-emission-factors-mcp" alt="Featured on ClaudeWave: rozetyp/emission-factors-mcp" width="320" height="64" /></a>

More MCP Servers

emission-factors-mcp alternatives