“What are the Agile prices tomorrow evening? Any negative ones?”
get_unit_ratesOpen source · MIT · Unofficial · Model Context Protocol
octopus-mcp connects Claude and other AI assistants to your Octopus Energy account. Ask about your usage, costs and Agile prices in plain English, find the cheapest time to run things, and let the assistant manage EV charging and Saving Sessions when you allow it.
docker pull ghcr.io/mattoddie/octopus-mcpAsk anything
The assistant picks the right tools, runs them against Octopus's APIs and explains what it found. No exporting CSVs or squinting at graphs in the app to find a number.
“What are the Agile prices tomorrow evening? Any negative ones?”
get_unit_rates“When's cheapest to run the dishwasher tonight?”
get_accountfind_cheapest_slots“How much did electricity cost me last month?”
get_accountget_consumption“How much gas did we use this week, in kWh?”
get_consumption“Will the car be at 80% by 7am? Make it 90%.”
get_dispatchesset_charge_preferences“Any Saving Sessions coming up? Sign me up.”
get_saving_sessionsjoin_saving_sessionFull coverage
Grouped into 6 toolsets you can switch on and off, so the assistant only sees what you need: 18 read and 4 write tools.
account4The account overview (properties, meter points with MPAN/MPRN and serial numbers, current tariffs), the balance, bills and transactions.
consumption2Smart meter consumption for electricity import and export and gas, totalled by half-hour, hour, day, week or month with cost estimates, and live demand from a Home Mini.
tariffs6Public tariff data: products on sale, prices by region, half-hourly unit rates (Agile, Go and others), standing charges, the cheapest times to use electricity, and the region for a postcode.
intelligent5Intelligent Octopus: connected cars and chargers, planned and completed charging slots, and (with writes) the charging target and ready-by time, bump charges and smart control.
octoplus3Octoplus rewards: points balance, Saving Sessions with their rewards and results, and (with writes) joining a session.
raw2Raw API escape hatches for anything the other tools don't cover: GraphQL queries (mutations only with writes enabled) and REST GET requests.
read write ·Full tool reference →
Safe by default
Octopus API keys can't be made read-only, so octopus-mcp enforces it: tools that aren't allowed aren't registered at all. The assistant can't see them, so it can't call them or be talked into calling them.
18 tools, always on
get_consumption · get_unit_rates · find_cheapest_slots · list_bills …4 tools with OCTOPUS_ALLOW_WRITES=true
set_charge_preferences · bump_charge · set_smart_charging · join_saving_sessionNot possible at all
switching tariff · payments and direct debits · personal details · your API keyBuilt with care
Half-hourly prices, UK time, clock changes, gas in cubic metres: octopus-mcp gets the details right so the answers are.
Every half-hour is priced at the rate of the tariff you were on at the time, plus standing charges, so Agile, Go, Cosy and Tracker are costed properly.
Finds the cheapest block for a job, the runners-up and the cheapest half-hours, and says what it costs against running it now.
SMETS2 gas meters report m³. octopus-mcp knows which yours uses, converts with the standard formula, and says what it assumed.
No OAuth dance. Kraken tokens are fetched, renewed and kept in memory, and neither the key nor a token ever appears in output or logs.
A ~20 MB distroless image for amd64 and arm64. Non-root, read-only filesystem and no volume, because nothing is stored.
The test suite runs every tool against a mock of the REST API and both GraphQL APIs, so changes never need a real account.
5 guided prompts turn common jobs into one step. In Claude Code they're slash commands, such as /mcp__octopus__plan_cheap_usage.
compare_tariffsenergy_reportev_charging_checkplan_cheap_usagesaving_session_checkWorks with your Octopus account
Uses your own API key with Octopus's public customer APIs. Price and tariff lookups need no account at all. When a tool doesn't cover something, raw API tools do, limited to reads unless writes are on. Compatibility →
Works with your assistant
Run it once and share it, or start it per session with docker run -i. It keeps no state, so run as many as you like. Client setup →
Quick start
In your Octopus account, open Personal details → API access. Copy the API key and your account number.
mkdir octopus-mcp && cd octopus-mcp
curl -fsSLO https://raw.githubusercontent.com/mattoddie/octopus-mcp/main/compose.yaml
curl -fsSL https://raw.githubusercontent.com/mattoddie/octopus-mcp/main/example.env -o .env
# set OCTOPUS_API_KEY, OCTOPUS_ACCOUNT
# and MCP_AUTH_TOKEN in .env
docker compose up -dclaude mcp add --transport http octopus \
http://<docker-host>:8080/mcp \
--header "Authorization: Bearer <token>"Then ask: “What's my electricity price right now?”
Free, open source and MIT licensed. Contributions and bug reports are welcome.