Skip to main content
Glama
octopus-mcp

octopus-mcp

by DanielChicot

octopus-mcp

PyPI CI

Unofficial. Not affiliated with Octopus Energy. Uses the public REST API and the community-known Kraken GraphQL endpoint; the latter is unofficial and may break without notice.

A Model Context Protocol server that lets Claude analyse your Octopus Energy account: usage, costs, tariff comparisons, Saving Sessions, Octoplus rewards.

Works with Claude Code, Claude Desktop, and any MCP-compatible client.

Prerequisites

  • Python 3.11 or newer

  • An Octopus Energy account in the UK

  • A smart meter sending half-hourly readings (so consumption data is available via the API)

Related MCP server: monzo-mcp

Install

The server is published on PyPI as octopus-mcp. You can install it with uv (recommended) or plain pip.

With uv (recommended)

If you don't have uv yet:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Then install the MCP server and save credentials:

uv tool install octopus-mcp
octopus-mcp configure   # interactive; writes to your OS keychain

With pip

pip install octopus-mcp
octopus-mcp configure

Wire it into your MCP client

Claude Code

In Claude Code, register this repo as a plugin marketplace and install the octopus plugin from it:

/plugin marketplace add DanielChicot/octopus-mcp
/plugin install octopus@octopus-mcp

The plugin auto-registers the MCP server (no manual config-file edits needed) and adds four slash commands (/octopus:bill, /octopus:compare, /octopus:peaks, /octopus:saving-sessions) plus an analysis skill that Claude triggers automatically on energy-related questions.

Claude Desktop, Cursor, and other MCP clients

Add this entry to your client's MCP config:

{
  "mcpServers": {
    "octopus": {
      "command": "uvx",
      "args": ["octopus-mcp"]
    }
  }
}

(If you installed with pip instead of uv, replace "command": "uvx", "args": ["octopus-mcp"] with "command": "octopus-mcp", "args": ["serve"].)

The config file lives at:

Platform

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Restart your MCP client after editing the config.

Credentials

You need:

Optional (only some Kraken queries):

  • OCTOPUS_EMAIL / OCTOPUS_PASSWORD

Resolution order: shell env > .env > OS keyring > error. The recommended path is octopus-mcp configure which writes to the OS keyring so secrets never sit in plaintext config.

Tools

Tool

What it does

bill_summary(period)

Total kWh and £ per fuel for a period

usage_breakdown(period, group_by)

Aggregated kWh by hour/day/week/month

peak_hours(period, top_n)

Top-N highest-usage half-hours

compare_tariff(target_product_code, period, fuel)

Replay your usage against another Octopus tariff

current_tariff()

What you're on now: unit rate, standing charge

saving_session_history()

Octoplus saving sessions joined and rewards earned

get_account(), list_products(), get_product(), get_consumption_raw(), kraken_query()

Thin getters / escape hatches

Slash commands (Claude Code plugin)

  • /octopus:bill [period] — bill summary as a markdown table

  • /octopus:compare <product-code> [period] — tariff comparison with caveats

  • /octopus:peaks [period] [top_n] — highest-usage half-hours

  • /octopus:saving-sessions — Octoplus history

How it works

  • A SQLite cache at ~/Library/Caches/octopus-mcp/ (or your platform's equivalent) holds your historical consumption and tariff data, refreshed incrementally.

  • All cost figures are in integer pence inc-VAT (no float drift), with a derived pounds string for display.

  • Tariff comparison is a pure tariff swap model — caveats list what it does and doesn't model. See the design doc.

Known limitations (v0.1)

  • Gas SMETS2 m³ vs kWh: if your gas meter reports in m³, values won't be normalised — expect implausibly small numbers and multiply by ~11.18 to convert. v0.2 will detect and apply calorific conversion automatically.

  • Region-aware tariff lookup: compare_tariff currently picks the first region's tariff variant from a target product. v0.2 will use your postcode-derived region.

  • TTLs are hardcoded: no config.toml support yet.

  • No background sync: consumption is fetched lazily on demand.

Privacy

The MCP runs on your machine. No data leaves your computer except direct calls to api.octopus.energy. Credentials live in your OS keychain. Logs at ~/Library/Logs/octopus-mcp/server.log redact secrets.

Contributing

See CONTRIBUTING.md. Run pre-commit run --all-files before pushing.

License

MIT — see LICENSE.

Available Tools

11 tools
bill_summaryC

Total cost (£/pence) per fuel for a period

Inputs: period (required). Returns: object

compare_tariffC

Replay actual usage against another Octopus tariff

Inputs: target_product_code (required), period (required), fuel. Returns: object

current_tariffB

Currently active tariff per fuel

Inputs: no named parameters. Returns: object

get_accountA

Account details + meters + tariff history

Inputs: no named parameters. Returns: object

get_consumption_rawC

Half-hourly consumption rows for a meter

Inputs: fuel (required), mpan_or_mprn (required), serial_number (required), period_from (required), +1 more. Returns: result

get_productB

Detail for one product code

Inputs: code (required). Returns: object

kraken_queryC

Escape hatch: run an arbitrary Kraken GraphQL query

Inputs: query (required), variables. Returns: object

list_productsB

Browse Octopus product catalogue

Inputs: no named parameters. Returns: result

peak_hoursC

Top-N highest-usage half-hours

Inputs: period (required), top_n. Returns: object

saving_session_historyC

Octoplus saving sessions joined and points/kWh earned

Inputs: no named parameters. Returns: object

usage_breakdownC

Aggregated kWh by hour/day/week/month

Inputs: period (required), group_by. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool targets a distinct aspect: billing, tariffs, account details, consumption data, product catalog, and saving sessions. The only potential overlap is between get_consumption_raw and usage_breakdown, but they differ in granularity (raw vs aggregated). kraken_query is clearly a fallback.

    Naming Consistency4/5

    Tools follow snake_case, but verb placement varies: some start with verbs (compare_tariff, get_account), others with nouns (bill_summary, peak_hours). Still, all names are descriptive and readable, with no mixing of conventions.

    Tool Count5/5

    11 tools cover account management, tariffs, consumption, billing, and saving sessions without overwhelming. Each tool serves a clear purpose, and the count feels right for an energy provider MCP server.

    Completeness4/5

    Core operations (account info, tariff details, consumption data, billing) are covered. Missing features like tariff switching or payment actions may be addressed by the kraken_query escape hatch, but the primary user needs are met.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Connects Claude Desktop to the Enphase Developer API v4 for read-only access to solar production, consumption, battery, and EV charger data, with optional write tools for battery settings and EV charging.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Read-only Monzo banking integration for Claude Code that allows querying balances, transactions, pots, and spending analysis through natural conversation.
      32 PyPI
      4
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to query UK energy tariffs and products via the Octopus Energy public API.
      141 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables Claude or any MCP client to read live and historical Sunsynk inverter, battery, and solar data, plus inverter settings, through the Sunsynk Connect cloud API. It is read-only and lets users ask natural-language questions about generation, consumption, charging, and configuration.
      7
      MIT