Skip to main content
Glama
unofficialMCP4Vaillant

unofficialMCP4Vaillant

by holger1411

unofficialMCP4Vaillant

An unofficial MCP (Model Context Protocol) server that exposes a Vaillant heat pump's data to AI assistants like Claude. Query outdoor and room temperatures, hot water status, energy consumption, COP estimates, schedules, and diagnostics through natural conversation.

This project is not affiliated with, endorsed by, or sponsored by Vaillant Group. "Vaillant" is a registered trademark of Vaillant Group; it is used here only to describe what the server connects to.

Disclaimer: This project uses an unofficial, reverse-engineered API via myPyllant and is not affiliated with Vaillant Group. The API may change or break at any time. Use at your own risk.

Features (v1, read-only)

  • Status snapshot — outdoor / room / DHW temperatures, water pressure, per-zone setpoints, per-circuit flow temperature, special functions.

  • Hardware inventory — controller, firmware, all heat generators and auxiliary devices, serial numbers.

  • Energy report — consumption, environment energy, heat generated per device per operation mode, with a derived COP estimate and quality flag.

  • Diagnostics — trouble codes, heating curve, bivalence points, holiday mode.

Write/control operations are explicitly out of scope for v1.

Related MCP server: zont-mcp

Prerequisites

  • A MyVaillant account with at least one claimed system.

  • Python 3.10–3.13 (myPyllant does not yet support 3.14).

  • Claude Desktop or any MCP-compatible client.

Installation

git clone https://github.com/holger1411/unofficialMCP4Vaillant.git
cd unofficialMCP4Vaillant
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e .

Configuration

cp .env.example .env
# edit .env and set VAILLANT_USERNAME, VAILLANT_PASSWORD,
# and (if not in Germany or not the Vaillant brand) VAILLANT_BRAND / VAILLANT_COUNTRY.

Variable

Default

Description

VAILLANT_USERNAME

required

MyVaillant account email

VAILLANT_PASSWORD

required

MyVaillant account password

VAILLANT_BRAND

vaillant

One of vaillant, sdbg, bulex, glow-worm

VAILLANT_COUNTRY

germany

Country slug (see myPyllant.const.COUNTRIES)

VAILLANT_DEFAULT_SYSTEM_ID

empty

Override picked system when more than one exists

VAILLANT_CACHE_ENABLED

true

Disable for debugging

VAILLANT_LOG_LEVEL

INFO

DEBUG / INFO / WARNING / ERROR

Claude Desktop

Add to your claude_desktop_config.json (see claude_desktop_config_snippet.json for a template):

{
  "mcpServers": {
    "unofficial-mcp4vaillant": {
      "command": "/absolute/path/to/unofficialMCP4Vaillant/.venv/bin/python",
      "args": ["-m", "vaillant_mcp_server"],
      "env": {
        "VAILLANT_USERNAME": "your-email@example.com",
        "VAILLANT_PASSWORD": "your-password"
      }
    }
  }
}

Available Tools

Tool

Description

vaillant_get_status

Current temperatures, water pressure, modes, per-zone/DHW state

vaillant_get_devices

Static hardware inventory

vaillant_get_energy_report

Energy consumption + COP estimate over a time range

vaillant_get_diagnostics

Trouble codes, heating curve, holiday mode

Time ranges accepted: today, yesterday, week (ISO Mon–today), month, year, custom. All ranges are resolved in the home's local timezone, not the host's.

Architecture

  • Single long-lived MyPyllantAPI instance, owned by a VaillantClient. Concurrent reads are lock-free; the lock is held only during initial login and re-login.

  • On 401/403, the client transparently re-authenticates and retries the call once. The old API instance stays usable for in-flight callers and is closed after they drain.

  • Transient errors (5xx, timeouts, connection resets) retry up to 3× with jittered exponential backoff. Rate limits (429) raise a dedicated error honoring Retry-After.

  • Per-tool TTL cache (status 60 s, devices 24 h, energy_report 5 min, diagnostics not cached). Failures are never cached.

  • All logs go to stderr through a SecretRedactor filter that scrubs credentials, tokens, serial numbers, and UUIDs.

Security

See SECURITY.md. Report security issues via GitHub Private Vulnerability Reporting, not as public issues.

Development

pip install -e '.[dev]' || pip install -r requirements-dev.txt
pytest
ruff check .
mypy

See CONTRIBUTING.md for fixture-capture and live-test workflows.

Credits

This project would not exist without:

License

MIT.

Available Tools

4 tools
vaillant_get_devicesA

Static hardware inventory: home name, controller model, firmware, plus all heat-generators, backup heaters, ventilation, gateway. Read-only.

Inputs: system_id.

vaillant_get_diagnosticsB

Diagnostic snapshot split into engineering_config (heating curve, bivalence points, controller type) and volatile_state (DTCs, holiday, system_off). Read-only.

Inputs: system_id.

vaillant_get_energy_reportB

Energy consumption and generation per device per operation_mode for a given time range, in the home's local timezone. Includes a derived cop_estimate (heat_generated / consumed_electrical) with a quality flag.

Inputs: end_date, system_id, start_date, time_range, +1 more.

vaillant_get_statusA

Current snapshot of the Vaillant heat pump system: outdoor temperature, water pressure, energy manager state, plus per-zone, per-circuit, per-DHW, per-ventilation details. Read-only.

Inputs: system_id.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool targets a distinct aspect: devices for hardware inventory, diagnostics for configuration and faults, energy report for consumption data, and status for live system state. No overlap in purpose.

    Naming Consistency5/5

    All tools follow a consistent pattern: 'vaillant_get_<resource>', using snake_case and a uniform verb-noun structure.

    Tool Count5/5

    Four tools is well-scoped for a read-only monitoring server covering essential areas: inventory, diagnostics, energy, and live status.

    Completeness4/5

    Covers all key read-only needs for a heat pump system. Minor gap: no historical trending beyond energy report, and no tool for firmware updates or config changes, but those are likely write operations outside scope.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      A Model Context Protocol server that enables AI assistants like Claude to interact directly with Home Assistant, allowing them to query device states, control smart home entities, and perform automation tasks.
      29
      351
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      An MCP server that connects AI assistants to the ZONT heating system via the official REST API. It enables users to monitor device states, control heating modes, and perform diagnostics using natural language.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP (Model Context Protocol) server that exposes Polestar 2 vehicle data to AI assistants like Claude. Query your car's battery status, vehicle info, and health data through natural conversation.
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      A lean Model Context Protocol (MCP) server that gives AI assistants like Claude structured access to a SolarEdge PV installation via the official SolarEdge Monitoring API.
      4
      MIT