Skip to main content
Glama
trippborstel-hub

northwood-carbon MCP server

northwood-carbon MCP server

An MCP (Model Context Protocol) server that exposes Northwood Capital Partners' portfolio carbon data as tools any MCP-compatible agent (Claude Desktop, Claude Code, etc.) can call.

Turns carbon questions like "Which three portcos are furthest behind their 2030 targets, and what's the cheapest initiative for each?" into tool calls, not data wrangling.

Tools

Tool

Purpose

list_portcos

All 10 portcos with sector, status, revenue, facilities, data grade

get_portco_emissions

Scope 1 / Scope 2 emissions for a portco, filterable by year + scope

gap_to_target

Gap analysis vs SBTi-aligned 42% by 2030 pathway

list_initiatives

Decarbonization levers with reduction, capex, status

simulate_reduction

What-if: apply initiatives, return projected emissions + capex

Install

# Clone
git clone <repo-url> northwood-carbon-mcp
cd northwood-carbon-mcp

# With uv (recommended)
uv sync

# Or with pip
pip install -e .

Run

uv run server.py
# or
python server.py

The server speaks MCP over stdio, so you don't run it directly in most cases — you register it with a client that spawns it.

Connect to Claude Desktop / Claude Code

Add to your MCP config (~/.claude/mcp.json or Claude Desktop settings):

{
  "mcpServers": {
    "northwood-carbon": {
      "command": "uv",
      "args": ["--directory", "/path/to/northwood-carbon-mcp", "run", "server.py"]
    }
  }
}

Restart the client. The five tools appear automatically.

Example session

You: What are Meridian's 2024 Scope 1 emissions?

Claude → get_portco_emissions(portco="meridian", year=2024, scope=1)
       ← {"emissions": {"2024": {"scope1": 750.0}}, "units": "tCO2e", ...}

Claude: Meridian Business Solutions emitted 750 tCO2e in Scope 1 during 2024,
        primarily natural gas for space heating across 16 offices.
You: Which portcos are off-track for 2030 and what's the cheapest initiative for each?

Claude → list_portcos()
       → gap_to_target(portco=<each>)   × 10
       → list_initiatives(portco=<off-track one>, status="planned") × 3
       ← synthesizes ranked answer with capex + reduction per lever

Data

Static snapshot in data.json, sourced from the Northwood engagement's Week 3 carbon inventory and Week 4 decarbonization work. Drop in a live DB connection by replacing the DATA = json.loads(...) line with a query layer — the tool surface stays identical.

Structure

.
├── server.py       — FastMCP server, 5 tools, ~200 LOC
├── data.json       — Static data (PORTCOS, TRAJECTORY, INITIATIVES, RISK_SUMMARY, ESG_SCORES, FACILITIES)
├── pyproject.toml
└── README.md
-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/trippborstel-hub/northwood-carbon-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server