emission-factors MCP server

MCP serverDev tools

Keyless US grid carbon + power cost by ZIP: eGRID Scope 2, Scope 1 fuels, site ranking, clean hours

Use emission-factors MCP server in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add emission-factors MCP server and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the lookup emission factor tool from emission-factors MCP server

Details

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

emission-factors MCP serverStart free

Install emission-factors MCP server

The server’s own address, for the clients that take one directly. Or connect ahel once and every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user emission-factors-mcp-server 'https://emission-factors.com/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://emission-factors.com/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=emission-factors-mcp-server&config=eyJ1cmwiOiJodHRwczovL2VtaXNzaW9uLWZhY3RvcnMuY29tL21jcCJ9

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://emission-factors.com/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add emission-factors-mcp-server --url 'https://emission-factors.com/mcp'

    Run it once, then sign in with codex mcp login emission-factors-mcp-server if the server asks for an account.

From the project's README

As published by rozetyp/emission-factors-mcp in README.md.

Give Claude, Cursor, Cline, or any MCP 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, 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-based emission factors for all 33,616 US ZIP codes (CDP, CSRD, California SB 253 inputs).
  • Site selection - compare candidate locations on both carbon intensity and electricity cost in one conversation.
  • Time-weighted / demand-response analysis - hourly grid carbon from EIA-930 for load-shifting and post-hoc Scope 2.
  • Plant-level emissions - EPA CAMD hourly data for ~1,300 fossil units, a paywall-free alternative to commercial datasets.
  • 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)

Point your client at the hosted MCP endpoint. Nothing to install, always up to date.

Claude Desktop - edit claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows), then restart Claude:

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

Cursor - Settings -> MCP -> Add new MCP server, using the same URL.

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

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+):

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

Or clone and run from source:

git clone https://github.com/rozetyp/emission-factors-mcp.git
cd emission-factors-mcp
npm install        # builds dist/ via the prepare script
{
  "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.

ToolPurposeKey inputs
lookup_emission_factorEPA eGRID CO2e + full generation mix for a ZIPzip
lookup_by_coordinatesSame, resolved from lat/lon via Census geocoderlat, lon
lookup_batchEmission factors for up to 100 ZIPs at oncezips[]
calculate_emissionsScope 2 CO2e for a ZIP + kWh, location-based and market-based (Green-e residual mix)zip, kwh, renewable_kwh
hourly_intensityHourly grid carbon intensity (EIA-930, ~24h lag)zip or ba, hours
plant_emissionsHourly unit-level plant emissions (EPA CAMD)facility_id or state, days
utility_tariffUtility-specific tariff, not state average (OpenEI URDB)zip, utility, or eiaid
electricity_rateState-average retail rate by sector (EIA-861)zip
compare_sitesRank 2-25 candidate sites on grid carbon, $/kWh and cleanest daily windowzips[], annual_kwh, sector
cleanest_hoursCleanest N-hour window of the day to run a flexible load, in local timezip or ba, duration
calculate_fuel_emissionsScope 1 CO2e for fuels burned on site (EPA GHG Emission Factors Hub)items[]: fuel, quantity, unit

All tools return JSON. See full API docs for exact response shapes.


Data sources

DataSourceNotes
Grid emission factorsEPA eGRID2023 Rev2 (+2024 preliminary)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)EPA GHG Emission Factors Hub 202563 fuels, AR5 GWPs
Retail electricity ratesEIA Form 861State-level monthly average by sector
Hourly grid carbon intensityEIA-930Derived from hourly fuel mix, ~24h lag
Plant-level emissionsEPA CAMD~1,300 fossil units >25 MW, ~21 day lag
Utility-specific tariffsOpenEI URDB (NREL)~85% of US utilities
ZIP / lat-lon resolutionUS 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


Development

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:

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

Tools it offers (11)

What this server listed when ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.

  • lookup_emission_factor
  • lookup_by_coordinates
  • lookup_batch
  • calculate_emissions
  • hourly_intensity
  • plant_emissions
  • utility_tariff
  • electricity_rate
  • compare_sites
  • cleanest_hours
  • calculate_fuel_emissions

Signals

GitHub stars
1
Last commit
Oct 2026
Advanced
Delivery
emission-factors MCP server → your ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
io-github-rozetyp-emission-factors
Source
github.com/rozetyp/emission-factors-mcp
Hosted endpoint
https://emission-factors.com/mcp