Command Palette

Search for a command to run...

UnylyUnyly
Browse all

UnofficialMCP4Vaillant

FreeNot checked

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, ho

GitHubEmbed

About

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.

README

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.

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": "[email protected]",
        "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.

from github.com/holger1411/unofficialMCP4Vaillant

Installing UnofficialMCP4Vaillant

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/holger1411/unofficialMCP4Vaillant

FAQ

Is UnofficialMCP4Vaillant MCP free?

Yes, UnofficialMCP4Vaillant MCP is free — one-click install via Unyly at no cost.

Does UnofficialMCP4Vaillant need an API key?

No, UnofficialMCP4Vaillant runs without API keys or environment variables.

Is UnofficialMCP4Vaillant hosted or self-hosted?

A hosted option is available: Unyly runs the server in the cloud, no local setup required.

How do I install UnofficialMCP4Vaillant in Claude Desktop, Claude Code or Cursor?

Open UnofficialMCP4Vaillant on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare UnofficialMCP4Vaillant with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs