GreenCalculus

Sourced carbon emission factors + audit-traced calculations an AI can cite.

Documentation

GreenCalculus MCP server

Sourced greenhouse-gas emission factors and audit-traced carbon calculations, as an MCP server. Every value comes back with its exact source cell and a pinned data version — so an agent hands back a number a person can cite and a machine can reproduce, instead of a guess.

Do you need this package?

Probably not. The server is remote, and if your client speaks remote MCP you should point it straight at the URL — nothing to install, nothing to update:

{
  "mcpServers": {
    "greencalculus": {
      "url": "https://mcp.greencalculus.com",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

This package exists for the clients that can only spawn a local stdio process, and for docker run installs. It is a thin bridge: it forwards each JSON-RPC message to the remote server and returns the reply verbatim. No method is special-cased, so new tools appear here without a release.

Use it over stdio

{
  "mcpServers": {
    "greencalculus": {
      "command": "npx",
      "args": ["-y", "greencalculus-mcp"],
      "env": { "GREENCALCULUS_API_KEY": "YOUR_KEY" }
    }
  }
}

Or with Docker — -i is required and -t must be omitted, because the container's stdin/stdout are the transport and a TTY corrupts the stream:

{
  "mcpServers": {
    "greencalculus": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "GREENCALCULUS_API_KEY", "greencalculus/mcp"],
      "env": { "GREENCALCULUS_API_KEY": "YOUR_KEY" }
    }
  }
}

Get a free key at https://greencalculus.com/developers — no card. Discovery (initialize, tools/list) works without one; calling a tool needs it.

Tools

ToolWhat it does
lookup_factorFetch one emission factor by key, with its source and version
search_factorsSearch the corpus by free text
resolve_factorMap a messy real-world description to the best-matching factor
explain_absenceSay why a factor does not exist, rather than returning nothing
calculate_activityActivity → emissions, with unit conversion and GHG Protocol scope
calculate_electricityLocation-based and market-based electricity
calculate_embodiedEmbodied carbon (EN 15978), explicit about missing lifecycle stages
calculate_pcafPCAF financed emissions, with the audit trail
calculate_freightFreight by mode, distance and load
calculate_spendSpend-based EEIO
calculate_business_travelBusiness travel across modes

Configuration

VariableDefaultMeaning
GREENCALCULUS_API_KEYYour API key. GC_API_KEY is accepted as an alias; the explicit name wins.
GREENCALCULUS_MCP_URLhttps://mcp.greencalculus.comOverride the endpoint.
GREENCALCULUS_MCP_TIMEOUT_MS120000Per-request timeout.

Diagnostics go to stderr. Nothing but JSON-RPC is ever written to stdout — a stray byte there corrupts the session.

Develop

npm test                      # unit tests, no network
node bin/greencalculus-mcp.js # reads JSON-RPC on stdin
docker build -t greencalculus/mcp .

Also available

Licence

MIT — see LICENSE. The licence covers this bridge. Emission-factor data returned by the API carries the licence of its underlying source, which is named in every response.