Skip to main content
Glama
akkapur

energy-emissions-mcp

by akkapur

energy-emissions-mcp

An MCP server that exposes US energy and emissions data as tools an AI agent can call.

It currently has one tool, get_facility_emissions, which answers questions like "who are the biggest emitters in Harris County, TX?" from the EPA Greenhouse Gas Reporting Program (GHGRP), queried live through the Envirofacts API. No API key needed.

Run it

Requires uv.

uv sync
uv run mcp dev server.py        # opens MCP Inspector to call the tool by hand
uv run pytest                   # offline tests with recorded EPA rows

Add it to Claude Code:

claude mcp add energy-emissions -- uv run --directory "$PWD" mcp run server.py

Related MCP server: Jana MCP Server

The tool

get_facility_emissions(state, county=None, year=2023, limit=25) returns each facility's name, city, county, industry and total CO2e (metric tons), largest first, plus the place's total, the source tables and the exact query URL so answers can cite it.

Totals are direct emissions, matching GHGRP's own facility totals: biogenic CO2 and fuel suppliers' downstream emissions are left out. See docs/ghgrp-notes.md.

Built with the MCP Python SDK v2 and httpx.

Available Tools

1 tool
get_facility_emissionsA

Get greenhouse gas emissions for large industrial facilities in a US state or county, from the EPA Greenhouse Gas Reporting Program (GHGRP).

Use this for questions like "what are the biggest emitters in Harris
County, TX?" or "total reported facility emissions in Ohio in 2022".
Results are sorted largest emitter first.

Do not use this for a place's total emissions footprint: GHGRP covers only
facilities emitting over 25,000 tonnes CO2e a year (power plants,
refineries, factories, landfills), not homes, vehicles or small businesses.

Args:
    state: Two-letter state code, e.g. "TX".
    county: Optional county name, e.g. "Harris" or "Orleans Parish". Leave
        empty for the whole state.
    year: Reporting year, 2010 to 2023. Defaults to 2023, the latest.
    limit: Maximum facilities to list, 1 to 100. Totals always cover every
        matching facility, even those beyond the limit.

Returns totals in metric tons of CO2-equivalent (direct emissions, excluding
biogenic CO2 and fuel suppliers, matching GHGRP's own facility totals),
plus the source and query URL to cite.
NameRequiredDescriptionDefault
yearNo
limitNo
stateYes
countyNo

Output Schema

NameRequiredDescription
yearYes
placeYes
sourceYes
query_urlYes
facilitiesYes
facility_countYes
total_co2e_tonnesYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discloses important behavior: results are sorted largest emitter first, the 25,000-tonne inclusion threshold, that direct emissions exclude biogenic CO2 and fuel suppliers, and that limit does not affect totals. It does not mention rate limits or authentication, though the public EPA source makes that a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then examples, then exclusions, then args, then return semantics — a sensible order. Every sentence earns its place; the Args section is compact but specifies formats, ranges and defaults rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no annotations, and no sibling tools, the description covers scope, exclusions, sorting, units, filters and defaults. An output schema exists, yet the brief note on units and citation URL still adds useful value without redundancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry the load and it does: it gives the two-letter format for state, explains county accepts names like 'Harris' or 'Orleans Parish' and that empty means whole state, bounds year to 2010-2023 with default 2023, and bounds limit to 1-100 with the key semantic that totals always cover every matching facility even beyond the limit. All four parameters gain meaning not present in the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get), a specific resource (greenhouse gas emissions for large industrial facilities), the geographic scope, and the authoritative data source (EPA GHGRP). An agent knows exactly what data comes back and from where without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete example questions the tool answers, then an explicit 'do not use this for' with the reason (GHGRP only covers facilities over 25,000 tonnes CO2e, not homes, vehicles or small businesses). This is a textbook when/when-not pair with no sibling ambiguity to resolve.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 1 tool updatev0.1.0
    • First observedget_facility_emissions

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of misselection between tools. Its description also clearly delimits scope (GHGRP facility-level emitters, not a place's total emissions footprint), preventing misuse.

Naming Consistency4/5

The single name `get_facility_emissions` follows a clean verb_noun snake_case convention that would scale predictably. With only one tool there is no cross-tool consistency to verify, so it falls short of a perfect score.

Tool Count2/5

One tool is very thin for a whole emissions data server; there is no way to discover valid states/counties/years or drill into a specific facility. The single endpoint is well-scoped for its narrow query, but the surface is minimal for the apparent domain.

Completeness3/5

The core query (facility emissions by state/county/year) is well covered, including sorting, limits, totals, and citation metadata. However, notable gaps remain: no discovery of valid states/counties/years, no facility-level detail lookup, and no comparison or trend operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides natural language access to environmental data including air quality measurements, greenhouse gas emissions, and facility records. It enables users to perform geographic searches, trend analysis, and proximity-based queries using data from sources like OpenAQ and Climate TRACE.
    MIT