IDM Heat Pump MCP Server
The server provides a minimal interface for configured heat-pump entities, with writes disabled by default.
List all configured heat-pump entities.
Read a configured entity by name.
Write an explicitly allowed entity with a numeric value, only when writes are enabled and permitted.
The schema does not expose the broader README capabilities such as model detection, datapoint metadata, batch snapshots, diagnostics, or web supplement tools.
Integrates with GitHub Copilot to enable reading and writing of IDM heat pump registers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IDM Heat Pump MCP Server What is the current outside temperature?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IDM Heat Pump MCP Server
Ein unabhängiger Model Context Protocol (MCP)-Server, der KI-Assistenten kontrollierten Zugriff auf eine IDM-Wärmepumpe über Modbus TCP ermöglicht. Damit können kompatible MCP-Clients Anlagenwerte abfragen, verständlich anzeigen und – nur nach ausdrücklicher Freigabe – ausgewählte Sollwerte schreiben.
Dieses Community-Projekt steht inkeiner Verbindung, Partnerschaft oder Beauftragung mit der iDM Energiesysteme GmbH und wird von ihr nicht unterstützt oder zertifiziert. „IDM“/„iDM“ und Produktnamen sind Kennzeichen ihrer jeweiligen Inhaber. Dieses Projekt ist keine offizielle Bedienoberfläche und ersetzt weder Herstellerdokumentation noch Fachbetrieb. Siehe DISCLAIMER.md.
Wofür ist das Projekt gedacht?
Eine Wärmepumpe spricht normalerweise kein MCP. KI-Clients wie Claude Desktop, Claude Code, Codex oder unterstützte IDEs können deshalb nicht direkt mit ihr kommunizieren. Dieser Server bildet die Brücke zwischen beiden Welten:
MCP-Client / KI-Assistent
│ lokales MCP über stdio
▼
IDM Heat Pump MCP Server
│ idm-heatpump-api (Modbus TCP im lokalen Netz)
▼
IDM-WärmepumpeDer Server übersetzt sprechende Namen wie outdoor_temp oder hc_a_flow_temp in Modbus-Zugriffe,
dekodiert Werte inklusive Einheit, Enumeration und Skalierung und stellt sie als MCP-Tools und
MCP-Resources bereit. Die komplette Registerkarte (je nach Anlage 100–600 Datenpunkte) und die
automatische Modell-Erkennung stammen aus der Bibliothek
idm-heatpump-api, die auch die Home-Assistant-
Integration idm-heatpump-hass verwendet – beide
pflegen damit dieselbe, an realen Anlagen verifizierte Registerdatenbasis.
Typische Anwendungsfälle sind:
aktuelle Betriebswerte in natürlicher Sprache abfragen („Wie warm ist der Puffer?“),
einen vollständigen Anlagen-Snapshot mit einem Aufruf lesen (
read_all_datapoints),einem KI-Assistenten die verfügbaren Werte samt Einheit, Grenzen und Write-Klasse zeigen,
Diagnosegespräche mit aktuellen Anlagendaten und Fehlercode-Erklärungen unterstützen und
nach bewusster, mehrstufiger Freigabe einzelne Sollwerte ändern – mit trockener Vorprüfung.
Der Server ist kein dauerhaftes Monitoring-System: Er speichert keine Messhistorie, erstellt
keine Diagramme und ersetzt weder Home Assistant noch idm-heatpump-api selbst.
Related MCP server: WinCC OA MCP Server
Was kann der Server?
Modell erkennen: Controller-Familie (Navigator 1.7 / 2.0 / 10 / Pro), aktive Heizkreise, Zonenmodule, Solar, ISC, PV und Kaskade automatisch ermitteln.
Datenpunkte auflisten: Schlüssel, Adresse, Datentyp, Einheit, Skalierung, Wertebereich, Enum-Optionen und Write-Klasse anzeigen.
Live-Werte lesen: Einzelwerte oder alle lesbaren Datenpunkte in einem Batch (mit kurzem Snapshot-Cache) lesen.
Werte verstehen: Enumerationen (z. B. Betriebsmodi) werden mit Label übersetzt, „nicht konfiguriert“-Sentinelwerte als
unusedmarkiert.Fehlercodes erklären: die 2005 Meldungsnummern der Controller-Datenbank mit Benutzer- und Servicetext auflösen.
Kontrolliert schreiben: Schreibpläne ohne Gerätekontakt validieren (
validate_write) und freigegebene Register mit voller Bereichs-, Enum- und Modellprüfung schreiben.Diagnose: Verbindungsstatus, dauerhaft fehlgeschlagene und nicht unterstützte Register sowie zyklische Schreibanforderungen einsehen.
Web-Supplement (optional): über die im Controller gesetzte Web-PIN (
IDM_WEB_PIN) stehen das Navigator-10-WebSocket- bzw. Navigator-2.0-HTTP-Interface bereit: aktive Störungen im Klartext, Softwarestand und Gerätebezeichnung lesen sowie Betriebsmodus, Warmwasser-Sollwert, Uhrzeit setzen und Meldungen quittieren. Web-Schreibaktionen laufen durch dieselbe Write-Klassen-Freigabe wie die äquivalenten Modbus-Register.Hintergrund-Polling (optional): mit
IDM_POLL_INTERVALaktualisiert ein Hintergrundtask den Snapshot, überwacht die Verbindung (Exponential-Backoff bei Störungen) und hält zyklische GLT-Anforderungen (cyclic-Register) vor Ablauf ihrer TTL am Leben.Zwei Transporte: lokales
stdio(Standard) oder Streamable-HTTP (IDM_TRANSPORT=http, bindet standardmäßig an127.0.0.1) – etwa für Container- oder LAN-Betrieb hinter einem abgesicherten Reverse-Proxy. Ein optionaler statischer Bearer-Token (IDM_HTTP_TOKEN) schützt den HTTP-Endpunkt zusätzlich ab.An realer Anlage verifiziert: Modellerkennung (Navigator 10 mit Solar/ISC/PV und nicht zusammenhängenden Heizkreisen), Voll-Snapshot und Diagnose sind gegen eine echte Anlage getestet.
Lokal bleiben: Die Verbindung zur Wärmepumpe erfolgt aus dem eigenen Netzwerk; der Server benötigt keinen Cloud-Zugang.
Verfügbare MCP-Tools
Tool | Zweck | Beispiel |
| Controller-Modell und Anlagenstruktur erkennen | „Erkenne meine Wärmepumpe.“ |
| Datenpunkte mit Metadaten anzeigen (filterbar) | „Welche Werte gibt es zum Warmwasser?“ |
| Aktuellen Wert eines Datenpunkts lesen | „Lies |
| Mehrere Datenpunkte in einem Batch lesen | „Lies Außentemp., Speicher und Vorlauf.“ |
| Kompletten Anlagen-Snapshot lesen | „Gib mir alle aktuellen Werte.“ |
| Schreibplan prüfen, ohne zu schreiben | „Wäre 52 °C Warmwasser erlaubt?“ |
| Freigegebenen Wert setzen (Default: gesperrt) | „Setze |
| Controller-Meldungsnummer erklären | „Was bedeutet Meldung 142?“ |
| Verbindungs- und Registerdiagnose | „Welche Register schlagen fehl?“ |
| Lokales Web-Interface auslesen (Softwarestand, Modell, Infosystem) | „Welche Firmware hat der Navigator?“ |
| Aktive Störungen mit Klartext (Navigator 10) | „Welche Meldungen liegen an?“ |
| Heizkreis-Status mit geräteseitigen Grenzen | „Zeige Heizkreis A mit Sollwerten.“ |
| Controller-eigene Wettervorhersage (myiDM) | „Was sagt die Vorhersage für morgen?“ |
| Momentanleistungen Netz/PV/Haus | „Wie viel PV-Überschuss ist da?“ |
| Betriebsmodus per Web setzen (0–5) | „Stelle auf Nur-Warmwasser.“ |
| Warmwasser-Sollwert per Web setzen | „Setze Warmwasser auf 52 °C.“ |
| Heizkreis-Parameter per Web setzen ( | „Raumsoll HK A auf 21,5 °C.“ |
| Störungen per Web quittieren | „Quittiere alle Meldungen.“ |
| Controller-Uhr stellen | „Synchronisiere die Uhr.“ |
Verfügbare MCP-Resources
Resource | Inhalt |
| Erkanntes Modell und Fähigkeiten |
| Vollständige Datenpunkt-Karte |
| Aktueller Wert eines Datenpunkts |
| Zwischengespeicherter Gesamt-Snapshot |
| Client-Diagnose |
| Web-Supplement-Snapshot (sofern verbunden) |
Welche konkreten Datenpunkte existieren, entscheidet die erkannte Anlage bzw. die Registerkarte
der idm-heatpump-api.
Sicherheitskonzept
Der Server startet grundsätzlich read-only. Ein Schreibzugriff wird nur ausgeführt, wenn alle drei Bedingungen gleichzeitig erfüllt sind:
IDM_ALLOW_WRITES=trueaktiviert Schreiben global,die Write-Klasse des Registers (
volatile,cyclic,eepromoderwrite_only) steht inIDM_WRITE_CLASSES, undist
IDM_WRITABLE_KEYSgesetzt, enthält diese Allowlist den Registernamen.
Darüber hinaus validiert idm-heatpump-api jeden Schreibzugriff gegen Wertebereich, Enumerationen
und Modellverfügbarkeit und drosselt wiederholte EEPROM-Schreibzugriffe (max. einer pro Register
und 60 s) zum Schutz des begrenzt beschreibbaren Controllerspeichers. Mit validate_write oder
dry_run=true lässt sich jeder Schreibplan vorab prüfen, ohne das Gerät zu berühren. Weitere
Hinweise stehen unter Sicherer Betrieb.
Web-Schreibaktionen werden über die Write-Klasse ihres jeweiligen Modbus-Äquivalents kontrolliert:
web_set_system_mode und web_save_dhw_setpoint benötigen eeprom (wie system_mode bzw.
dhw_setpoint), web_acknowledge_notifications benötigt write_only (wie error_acknowledge),
web_set_datetime benötigt volatile. Eine gesetzte IDM_WRITABLE_KEYS-Allowlist greift auch hier.
Voraussetzungen
IDM-Wärmepumpe mit aktiviertem und im LAN erreichbarem Modbus TCP
Python 3.12 oder neuer oder alternativ Docker
ein lokaler MCP-Client mit
stdio-Unterstützung
Schnellstart
python -m venv .venv
source .venv/bin/activate
pip install .
cp .env.example .env
# .env an die eigene Anlage anpassen (mindestens IDM_HOST)
idm-mcpModell und Registerkarten werden beim ersten Aufruf von detect_model automatisch ermittelt;
eine eigene Registerdatei ist nicht erforderlich. Wer die Erkennung überspringen möchte, setzt
IDM_MODEL (z. B. navigator10).
Danach wird die gewünschte KI-Anwendung gemäß der clientbezogenen Anleitung eingerichtet. Ein sinnvoller erster Test im Client ist:
Erkenne meine Wärmepumpe und zeige mir danach alle verfügbaren Datenpunkte. Schreibe keine Werte.
Anschließend kann ein konkreter Messwert gelesen werden:
Lies
outdoor_tempundstorage_tempund erkläre Wert und Einheit. Verändere nichts.
MCP-Client
Eine ausführliche, clientbezogene Anleitung ist unter Claude, ChatGPT, GitHub Copilot, Codex und Z.ai einrichten verfügbar.
Wichtig: Dieser Server verwendet aktuell den lokalen MCP-Transport stdio. Claude Desktop,
Claude Code, Codex CLI und unterstützte IDEs können ihn direkt als lokalen Prozess starten.
Webdienste wie ChatGPT im Browser oder GitHub.com können dagegen keinen Prozess auf dem eigenen
Rechner starten. Dafür wäre ein separat abgesicherter HTTPS-MCP-Gateway erforderlich; der
Modbus-Port der Wärmepumpe darf dafür keinesfalls ins Internet gestellt werden.
Dokumentation / Wiki-Vorlage
Die Seiten unter docs/ können in ein GitHub-Wiki übernommen werden. GitHub-Wikis liegen technisch
in einem separaten Repository und werden nicht automatisch mit diesem Repository veröffentlicht.
Aktuelle Grenzen
Lesen und Schreiben einzelner 16-/32-Bit-Register gemäß Registerkarte der
idm-heatpump-api; keine freien Rohadressen ohne Kartenbezug,Web-Supplement nur gegen lokal erreichbares Web-Interface mit gesetzter PIN; Navigator 1.x hat kein lokales Web-Interface,
keine mitgelieferte Zeitreihen, Statistiken, Diagramme oder lokale Datenbank (das Hintergrund-Polling hält nur den letzten Snapshot vor),
HTTP-Transport ohne eigene Authentifizierung – nur an
127.0.0.1binden oder vor einen Reverse-Proxy mit TLS und Zugangsbeschränkung setzen,keine Authentifizierung innerhalb von Modbus TCP.
Diese Einschränkungen sind bewusst sichtbar dokumentiert, damit der Server nicht mit Fähigkeiten eingesetzt wird, die er derzeit nicht besitzt.
Lizenz
Der Quellcode steht unter der MIT-Lizenz. Sie erlaubt Nutzung, Änderung und Weitergabe unter Beibehaltung des Lizenz- und Copyright-Hinweises und enthält einen Gewährleistungs- und Haftungsausschluss. Der ergänzende Disclaimer erklärt Projektstatus und Betriebsrisiken in verständlicher Form; er ersetzt keine Rechtsberatung.
Available Tools
3 toolslist_entitiesA
List all configured heat-pump entities.
Inputs: no named parameters. Returns: result
read_entityB
Read a configured entity by name.
Inputs: name (required). Returns: result
write_entityC
Write an explicitly allowed entity; writes are disabled by default.
Inputs: name (required), value (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a distinct purpose: list all entities, read one entity by name, and write an entity. There is no overlap or ambiguity between them.
All tool names follow a consistent verb_noun snake_case pattern: list_entities, read_entity, write_entity. The singular/plural usage is natural and predictable.
Three tools is well-scoped for a focused heat-pump entity server. Each tool serves a clear, necessary function without redundancy.
The set covers listing, reading, and writing configured entities, which is the core workflow. Missing create/delete is acceptable since entities are 'configured' externally, though there is no explicit way to discover which entities are writable.
Maintenance
Related MCP Connectors
Home energy for AI assistants: live Power flow, Energy history, solar forecast, and device control.
- DNS-DATA RemoteDeprecatedcom.dns-data
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
Control your Tesla from your AI assistant - climate, charging, access, and security.
Related MCP Servers
- AlicenseAqualityBmaintenanceConnect AI assistants to Victron Energy systems to read real-time solar, battery, grid, and inverter data from your local network via Modbus TCP or MQTT.32134 npm7MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that bridges AI assistants with WinCC OA projects, enabling natural language queries for datapoint search, manager management, and CTL script execution.2MIT
- AlicenseAqualityDmaintenanceAn 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.4MIT
- FlicenseAqualityDmaintenanceEnables monitoring and control of IDM Navigator 2.0 heat pumps via Modbus TCP.13-