carbon-footprint-mcp
Integrates with Xero to ingest financial exports for calculating organizational carbon footprints, mapping activities to EPA emission factors and generating reports.
Carbon Footprint Calculator (MCP Server)
An MCP (Model Context Protocol) server for calculating organizational carbon footprints from bank statements, financial exports, and structured activity data using EPA GHG emission factors.
Privacy and security first
Runs 100% locally on your machine or server
Sends no financial data to external APIs or cloud providers
Stores no data by default
Exposes read-only calculation and reporting tools
Works with Claude Desktop, Cursor, and other MCP clients
Why This Exists
If you are preparing ESG reporting, investor diligence materials, or internal sustainability reviews, getting to a usable emissions baseline is usually slow and manual.
This server helps turn raw bank statements, Xero or QBO exports, and structured operational inputs into a carbon footprint report in minutes. It maps activities to EPA-aligned emission factors and produces both HTML and Markdown outputs.
The user experience is designed to work for organizations in any country, while the current electricity benchmarking still uses EPA eGRID regional factors under the hood.
Related MCP server: carbonstop-mcp
What It Does
Ingests bank CSVs, Xero or QBO exports, and structured activity data.
Helps categorize transactions into likely emission sources such as electricity, fuel, travel, shipping, and waste.
Computes Scope 1, Scope 2, and Scope 3 emissions using EPA GHG emission factors.
Scores carbon intensity by revenue and headcount when those inputs are provided.
Generates polished HTML and Markdown reports.
Emission Factor Source
All emission factors are based on the EPA GHG Emission Factors Hub (January 2025), including eGRID 2023 electricity factors and IPCC AR5 global warming potentials.
Covered categories include stationary combustion, mobile combustion, electricity, steam or heat, transportation, waste disposal, business travel, employee commuting, and refrigerants.
Installation
Claude Desktop
Install
uv.Open Claude Desktop settings and edit the MCP config.
Add this server:
{
"mcpServers": {
"carbon-footprint": {
"command": "uvx",
"args": ["carbon-footprint-mcp"]
}
}
}Restart Claude Desktop.
Claude Code or Cursor
claude mcp add carbon-footprint -- uvx carbon-footprint-mcpLocal Development
git clone https://github.com/MayankTalwar0/carbon-footprint-mcp.git
cd carbon-footprint-mcp
pip install -e .
carbon-footprint-mcpAvailable MCP Tools
Tool | Description |
| Computes GHG emissions from structured activity data across all 3 scopes. |
| Renders a polished HTML and Markdown report and saves it to disk. |
| Lists available fuel, eGRID, and waste emission factors. |
Supported Emission Categories
Scope | Category | Input Required |
1 | Stationary Combustion | Fuel type and quantity |
1 | Mobile Combustion | Fuel type and gallons |
1 | Refrigerant Leakage | Gas type, leaked kg, and GWP |
2 | Purchased Electricity | kWh and eGRID subregion |
2 | Purchased Steam or Heat | mmBtu |
3 | Transportation and Distribution | Vehicle type and distance |
3 | Waste Disposal | Material, short tons, and disposal method |
3 | Business Travel | Travel mode and passenger-miles |
3 | Employee Commuting | Commute mode and passenger-miles |
Carbon Intensity Scoring
Score | tCO2e per $1M Revenue | Interpretation |
Excellent | < 5 | Best-in-class for low-footprint operations |
Good | 5-20 | Low intensity |
Moderate | 20-100 | Typical for services and tech |
High | 100-500 | Heavy operations |
Very High | > 500 | Very high intensity |
License
MIT
Built By SlickBooks
Built by Mayank, founder of SlickBooks.
Available Tools
3 toolscomputeEmissionsA
Computes greenhouse gas emissions from structured activity data.
IMPORTANT: After calling this tool, you MUST call generateEmissionsReport with the
full output of this tool. Do not present results to the user without first saving
the report files. The _required_next_step field in the response will remind you.
Args:
inputs_json: A JSON string containing categorized activity data.
Required fields vary by scope:
- Scope 1: stationary_combustion, mobile_combustion, refrigerants
- Scope 2: electricity_kwh, egrid_subregion, steam_mmbtu
- Scope 3: business_travel, employee_commuting, transportation, waste
Optional: annual_revenue, headcount (for scoring), period, source
Returns:
JSON string containing computed emissions by scope, totals, breakdown,
carbon intensity scores, and a _required_next_step instruction.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds behavioral context: the required next step and the structure of output (through scope details). It does not explicitly mention idempotency or side effects, but the computation nature makes that less critical. Overall, it provides good transparency for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a bold IMPORTANT note and bullet-like list for args, which enhances readability. It is slightly verbose but every sentence contributes value. Front-loading the purpose helps quickly grasp intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of emissions computation and the presence of an output schema, the description covers input structure, required follow-up, and scope breakdown. It is complete enough for an agent to understand how to invoke and proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only has 'inputs_json' with no description, but the description compensates fully by detailing required fields per scope, optional fields, and format. This adds enormous meaning beyond the bare schema, enabling correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes greenhouse gas emissions from structured activity data. The verb 'computes' and resource 'emissions' are specific. Sibling tools generateEmissionsReport and listEmissionFactors are distinct, so no confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call generateEmissionsReport after and not present results without saving. It provides a clear workflow and references the _required_next_step field, giving strong guidance on when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateEmissionsReportA
Generates a carbon footprint report in HTML + Markdown and saves to disk.
Args:
emissions_json: JSON string - the direct output from computeEmissions.
output_dir: Directory to save reports to. Default is current directory.
Returns:
JSON with paths to both report files and the markdown content inline.
| Name | Required | Description | Default |
|---|---|---|---|
| emissions_json | Yes | ||
| output_dir | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must stand alone. It discloses side effects (saves to disk) and return format (paths + inline markdown). Missing details on overwrite behavior, directory existence, and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise: one sentence for purpose, followed by clear parameter and return descriptions. No redundant information, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two simple parameters and output schema existence, the description covers the main use case well. Lacks details on file overwrite behavior and required permissions, but is sufficient for a straightforward report generation tool within a sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description fully carries the burden. It adds crucial meaning: emissions_json is 'the direct output from computeEmissions', and output_dir is 'Directory to save reports to' with default. This goes well beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates a carbon footprint report in HTML+Markdown and saves to disk. It specifies the verb 'generates' and resource 'report', and implicitly distinguishes from siblings by being the report generation step after computeEmissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance that emissions_json should be the output of computeEmissions, and explains the default output_dir. Does not mention when not to use or alternatives, but sibling tools provide context for intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listEmissionFactorsA
Lists available emission factors for reference.
Args:
category: One of 'fuels', 'egrid', 'waste', or 'all'.
Returns:
JSON string listing available factors.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool returns a JSON string listing factors, implying read-only behavior, but does not explicitly confirm no side effects or data dependencies. More disclosure would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two lines of content, front-loaded with purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema (present), the description covers purpose, parameter values, and return type. It could mention that the output is a list of factor names or IDs, but overall it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'category' has no schema description coverage (0%), but the description lists the allowed values ('fuels', 'egrid', 'waste', 'all'), adding crucial meaning beyond the schema. It does not explain what each category represents, but the baseline is high due to compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists emission factors for reference, using a specific verb and resource. It distinguishes from sibling tools (computeEmissions, generateEmissionsReport) which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing factors but lacks explicit guidance on when to use this vs alternatives. No exclusion criteria or context for when not to use it.
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.
3 tool updates
v0.1.0- First observed
computeEmissions - First observed
generateEmissionsReport - First observed
listEmissionFactors
TDQS
Scored across 3 tools
Each tool has a clear, distinct purpose: computing emissions, generating reports, and listing emission factors. No functional overlap exists.
All tool names follow a consistent camelCase verb_noun pattern: computeEmissions, generateEmissionsReport, listEmissionFactors.
Three tools is appropriate for a focused carbon footprint calculator, covering computation, reporting, and reference without being too few or too many.
The tool set covers core workflow steps (compute, report, reference). Minor gaps like update/delete for reports or scenario comparison are not essential for the core purpose.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
A MCP server for the Frankfurter API for currency exchange rates.
MCP server for VC pitch-deck scoring, thesis-fit matching, and deal-flow management.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that provides access to Northwood Capital Partners' portfolio carbon data, enabling MCP-compatible agents to query emissions, analyze decarbonization gaps, and simulate reduction initiatives through natural language.5-

carbonstop-mcpofficial
AlicenseBqualityDmaintenanceMCP server enabling AI assistants to automatically perform carbon footprint modeling, product queries, and emission analysis via the Carbonstop Cloud API.813 npmMIT- AlicenseNot gradedqualityCmaintenanceClimatiq MCP server that calculates carbon footprints using emission factors, enabling users to list unit types and compute environmental impact.9 npmMIT
- AlicenseNot gradedqualityFmaintenanceMCP server for accessing and managing Banktivity personal finance data, enabling account, transaction, and budget operations through natural language.3MIT