carbon-footprint-mcp
碳足迹计算器 (MCP 服务器)
一个 MCP (模型上下文协议) 服务器,用于使用 EPA 温室气体排放因子,从银行对账单、财务导出文件和结构化活动数据中计算组织碳足迹。
隐私与安全至上
100% 在您的机器或服务器上本地运行
不会将任何财务数据发送到外部 API 或云服务提供商
默认不存储任何数据
仅提供只读的计算和报告工具
适用于 Claude Desktop、Cursor 和其他 MCP 客户端
为什么存在此项目
如果您正在准备 ESG 报告、投资者尽职调查材料或内部可持续性审查,获取可用的排放基准通常既缓慢又费力。
该服务器有助于在几分钟内将原始银行对账单、Xero 或 QBO 导出文件以及结构化运营输入转化为碳足迹报告。它将活动映射到符合 EPA 标准的排放因子,并生成 HTML 和 Markdown 格式的输出。
用户体验旨在适用于任何国家的组织,而目前的电力基准测试在底层仍使用 EPA eGRID 区域因子。
Related MCP server: carbonstop-mcp
功能特性
摄取银行 CSV、Xero 或 QBO 导出文件以及结构化活动数据。
帮助将交易分类为可能的排放源,如电力、燃料、差旅、运输和废物。
使用 EPA 温室气体排放因子计算范围 1、范围 2 和范围 3 排放。
在提供收入和员工人数输入时,计算碳强度评分。
生成精美的 HTML 和 Markdown 报告。
排放因子来源
所有排放因子均基于 EPA 温室气体排放因子中心(2025 年 1 月),包括 eGRID 2023 电力因子和 IPCC AR5 全球变暖潜势。
涵盖的类别包括固定燃烧、移动燃烧、电力、蒸汽或热力、运输、废物处理、商务差旅、员工通勤和制冷剂。
安装
Claude Desktop
安装
uv。打开 Claude Desktop 设置并编辑 MCP 配置。
添加此服务器:
{
"mcpServers": {
"carbon-footprint": {
"command": "uvx",
"args": ["carbon-footprint-mcp"]
}
}
}重启 Claude Desktop。
Claude Code 或 Cursor
claude mcp add carbon-footprint -- uvx carbon-footprint-mcp本地开发
git clone https://github.com/MayankTalwar0/carbon-footprint-mcp.git
cd carbon-footprint-mcp
pip install -e .
carbon-footprint-mcp可用的 MCP 工具
工具 | 描述 |
| 根据所有 3 个范围的结构化活动数据计算温室气体排放。 |
| 生成精美的 HTML 和 Markdown 报告并将其保存到磁盘。 |
| 列出可用的燃料、eGRID 和废物排放因子。 |
支持的排放类别
范围 | 类别 | 所需输入 |
1 | 固定燃烧 | 燃料类型和数量 |
1 | 移动燃烧 | 燃料类型和加仑数 |
1 | 制冷剂泄漏 | 气体类型、泄漏公斤数和 GWP |
2 | 外购电力 | kWh 和 eGRID 子区域 |
2 | 外购蒸汽或热力 | mmBtu |
3 | 运输和配送 | 车辆类型和距离 |
3 | 废物处理 | 材料、短吨和处理方式 |
3 | 商务差旅 | 旅行方式和乘客英里数 |
3 | 员工通勤 | 通勤方式和乘客英里数 |
碳强度评分
评分 | 每 100 万美元收入对应的 tCO2e | 解读 |
优秀 | < 5 | 低足迹运营的行业最佳 |
良好 | 5-20 | 低强度 |
中等 | 20-100 | 服务业和科技业典型水平 |
高 | 100-500 | 重型运营 |
极高 | > 500 | 极高强度 |
许可证
MIT
由 SlickBooks 构建
由 SlickBooks 创始人 Mayank 构建。
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.
TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
A MCP server for the Frankfurter API for currency exchange rates.
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.86 npmMIT- AlicenseNot gradedqualityBmaintenanceClimatiq MCP server that calculates carbon footprints using emission factors, enabling users to list unit types and compute environmental impact.150 npmMIT
- AlicenseNot gradedqualityFmaintenanceMCP server for accessing and managing Banktivity personal finance data, enabling account, transaction, and budget operations through natural language.3MIT