- Language
- TypeScript
- Last commit
- 55m ago
- Forks
- 0
- Open issues
- 2
- Registry update
- Oct 16, 2026
Connect
npm$claude mcp add ebb-ai \ -e EBB_DEFAULT_REGION=<ebb-default-region> \ -e EBB_DB_PATH=<ebb-db-path> \ -e ANTHROPIC_API_KEY=<anthropic-api-key> \ -e OPENAI_API_KEY=<openai-api-key> \ -e EBB_EIA_API_KEY=<ebb-eia-api-key> \ -e EBB_ENTSOE_SECURITY_TOKEN=<ebb-entsoe-security-token> \ -e WATTTIME_USERNAME=<watttime-username> \ -e WATTTIME_PASSWORD=<watttime-password> \ -e EBB_ELECTRICITY_MAPS_API_KEY=<ebb-electricity-maps-api-key> \ -- npx -y @ebb-ai/[email protected]
Environment variables
EBB_DEFAULT_REGIONDefault grid region, e.g. GB, US-CAL-CISO, DE
EBB_DB_PATHSQLite queue path (default ~/.ebb-ai/queue.db)
ANTHROPIC_API_KEYsecretDispatch tasks to Anthropic (sync or Batch API)
OPENAI_API_KEYsecretDispatch tasks to OpenAI (sync or Batch API)
EBB_EIA_API_KEYsecretUS EIA grid data (CAISO, ERCOT, ISO-NE, PJM), free key
EBB_ENTSOE_SECURITY_TOKENsecretENTSO-E grid data (EU regions), free token
WATTTIME_USERNAMEWattTime account (US marginal emissions)
WATTTIME_PASSWORDsecretWattTime account password
EBB_ELECTRICITY_MAPS_API_KEYsecretElectricity Maps fallback feed
Security review
Review passedReviewed 51m ago.
- metadata
- scanned
- packages
- 1 checked
No findings.
Tools
This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.
@ebb-ai/mcp
MCP server that lets your agent run non-urgent LLM tasks at the cleanest grid hour before a deadline.
Add it to any MCP host. When a user says "do this tonight" or "by tomorrow", the agent calls schedule_task. ebb-ai then runs the task at the lowest-carbon grid hour before the deadline, and through the provider Batch API when the deadline allows.
- 10 MCP tools (measured), among them
recommend_window,schedule_task,check_queue_status,get_grid_forecast,cancel_task,update_deadline. - Live 72-hour forecast. GB needs no key; other regions use free keys (EIA, ENTSO-E, WattTime, Electricity Maps).
- One signed carbon receipt per task, stored in
~/.ebb-ai/queue.db.
npx -y @ebb-ai/mcp
{ "mcpServers": {
"ebb-ai": { "command": "npx", "args": ["-y", "@ebb-ai/mcp"] }
} }
Proof: one real GB run, 2026-09-30. Forecast peak 183 gCO2/kWh vs recommended window 88 gCO2/kWh, about 52 % lower for this run only (forecast, projected). Receipt at dispatch: 158 gCO2/kWh (measured). Host-specific configs: https://www.ebb-ai.com/docs#install
Run
npx -y @ebb-ai/mcp
The server speaks MCP over stdio. To wire it into an agent client:
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
on macOS (Linux/Windows have similar paths):
{
"mcpServers": {
"ebb-ai": {
"command": "npx",
"args": ["-y", "@ebb-ai/mcp"],
"env": {
"EBB_ELECTRICITY_MAPS_API_KEY": "optional - mock data without it",
"EBB_DEFAULT_REGION": "US-CAL-CISO"
}
}
}
}
Restart Claude Desktop after editing.
Claude Code
Add ebb-ai to your ~/.claude/mcp.json (or workspace .claude/mcp.json):
{
"mcpServers": {
"ebb-ai": {
"command": "npx",
"args": ["-y", "@ebb-ai/mcp"]
}
}
}
OpenClaw
Add to ~/.openclaw/mcp.json:
{
"mcpServers": {
"ebb-ai": {
"command": "npx",
"args": ["-y", "@ebb-ai/mcp"]
}
}
}
Tools exposed (10, measured)
| Tool | Purpose |
|---|---|
get_grid_forecast(region, hours?) | Hour-by-hour carbon intensity for a region; useful before deciding whether to defer. |
recommend_window(deadline, region?, ...) | Plan the cleanest window inside the deadline without queueing anything. |
schedule_task(prompt, deadline, model?, region?, carbon_budget_g?, repeat?, origin_session_id?) | Queue a task to run in the cleanest window inside the deadline. Returns a task_id. repeat defaults to none, also for deadline_kind: "quota_reset". |
check_queue_status(task_id?) | Inspect the queue or one specific task; includes a carbon receipt once the task has completed. |
cancel_task(task_id, series?) | Cancel a queued or scheduled task; on a repeating task, skip it, or end the series with series: true. |
reply_task(task_id, text, deadline?) | Continue a completed task: a new task with the conversation plus this text, same provider and model. |
expedite_task(task_id) | Dispatch a queued or scheduled task now, outside its carbon window. |
update_deadline(task_id, deadline) | Reschedule a task against a new deadline. |
retry_task(task_id) | Re-dispatch a failed task. |
cancel_all(status?) | Cancel every task that is still queued or scheduled. |
Environment variables
These variables configure this MCP server (and the ebb CLI, which reads
the same set). They are read at the server's own entry point and injected into
@ebb-ai/core, which is environment-pure and reads nothing ambient itself.
OpenClaw plugin users: the
@vitalini/ebbOpenClaw plugin reads no environment variables. Configure it through plugin config instead, underplugins.entries.ebb.configin your gateway config — the "Plugin config" column below names the field that replaces each variable. OpenClaw resolves the"${ENV_VAR}"shorthand in those fields, so you can keep exporting the same variables and let the gateway read them on the plugin's behalf.
| Var | Plugin config | Purpose |
|---|---|---|
EBB_ELECTRICITY_MAPS_API_KEY | electricityMapsApiKey | API key from electricitymaps.com. Universal fallback. If unset (and no zone-specific feed is configured), the server falls back to deterministic mock data so you can still run the whole stack locally. |
EBB_EIA_API_KEY | eiaApiKey | Free US EIA key. Enables average-emissions intensity for the US ISO zones (CAISO / ERCOT / ISO-NE / NYISO / PJM / MISO). |
EBB_ENTSOE_SECURITY_TOKEN | entsoeSecurityToken | Free ENTSO-E token. Enables EU zone intensity (FR / DE / ES / IT / NL). |
WATTTIME_USERNAME + WATTTIME_PASSWORD | wattTimeUsername + wattTimePassword | Free WattTime v3 account. Enables marginal-emissions (co2_moer) forecasts for the US ISO zones — takes precedence over EIA where covered, falls through to EIA on any error. The marginal signal is disclosed as signalType: "marginal" on forecasts and receipts. |
EBB_DEFAULT_REGION | defaultRegion | Electricity Maps zone code, default US-CAL-CISO. |
ANTHROPIC_API_KEY | anthropicApiKey | Enables the anthropic provider (batch-capable). |
OPENAI_API_KEY | openaiApiKey | Enables the openai provider (batch-capable). |
GEMINI_API_KEY / GOOGLE_API_KEY | geminiApiKey / googleApiKey | Enables the gemini provider (Generative Language API, sync-only). GEMINI_API_KEY is preferred; GOOGLE_API_KEY is the fallback. |
OLLAMA_HOST | ollamaHost | Enables the local ollama provider (sync-only). Default http://localhost:11434; keyless — set this var to opt the provider in. |
Develop
From the root of a clone of https://github.com/Vitalini/ebb-ai:
pnpm install
pnpm --filter @ebb-ai/mcp build
node packages/mcp-server/dist/server.js
From the server's repository — third-party content, read it before running anything it suggests.
More in AI & LLMs
OpenNodes
io.github.opennodes-io
Discover verified AI inference nodes, get the best node+model per task, pre-price chains.
Paw Pulse
dev.workers.dougalpaw.pawpulse
Heartbeat and tokens/sec monitoring for self-hosted LLM servers (Ollama etc.), with down alerts.
FaceRuler
com.faceruler
PSL score tiers, face shape classification and looksmaxxing term lookup from FaceRuler.
Online Web Directory
net.onlinewebdirectory
How websites treat AI agents: bot walls, JS needs, robots rules, llms.txt. Look up before you fetch.
AI Usage
io.github.MohitBansal321
Reports real token usage and cost from Claude Code and OpenCode data. Nothing leaves your machine.
GroundLens
io.github.groundlens-dev
Guardrails for LLM answers: exact checks against sources, PASS/REVIEW/FAIL, signed records.
Listing from the official MCP Registry · repository facts from GitHub, 54m ago.