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.
README
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
myPyllantand 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": "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
MyPyllantAPIinstance, owned by aVaillantClient. 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 honoringRetry-After. - Per-tool TTL cache (
status60 s,devices24 h,energy_report5 min,diagnosticsnot cached). Failures are never cached. - All logs go to stderr through a
SecretRedactorfilter 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:
- signalkraft/mypyllant — the reverse-engineered Python library that does all the actual API work. (PyPI)
- Model Context Protocol — the open protocol that makes this server interoperable across AI assistants.
- holger1411/polestar-mcp — pattern reference for the long-lived async client + TTL cache layout.
License
MIT.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.