ipsymcon-mcp-server
Click on "Install 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., "@ipsymcon-mcp-serverlist children of root object"
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.
ipsymcon-mcp-server
MCP-Server für IP-Symcon — lässt Claude/Agenten eine IP-Symcon-Hausautomation nicht nur abfragen und steuern, sondern entwickeln: Objektbaum lesen, PHP-Skripte lesen/ändern/anlegen, Variablen lesen, Geräte schalten. Über die IP-Symcon JSON-RPC-API.
Stack: Python + FastMCP. Companion-Modul für IP-Symcon-seitiges Log-Lesen: SymconMCPBridge (MIT).
Sicherheitsmodell (wichtig)
Lese-Tools sind immer verfügbar.
Schreib-/Dev-Tools (
ips_set_value,ips_request_action,ips_run_script,ips_set_script_content,ips_create_script,ips_call) brauchen die UmgebungsvariableIPS_ENABLE_WRITE=true. Default ist aus — der bewusste Riegel, damit ein Agent nicht unbemerkt in die laufende Hausautomation schreibt.Empfehlung: Schreibzugriff zuerst gegen eine Test-/Staging-Instanz, vorher Backup. (Dry-Run + automatisches Snapshot-Backup vor Änderungen sind als nächster Ausbauschritt geplant.)
Related MCP server: Home Assistant MCP Server (HA-mcp)
Voraussetzungen in IP-Symcon
JSON-RPC-Zugang ist standardmäßig aktiv unter
http://<host>:3777/api/.Einen Benutzer mit Zugriff anlegen (Systemsteuerung → Benutzerverwaltung) → in
IPS_USER/IPS_PASSWORDeintragen. Hat die Installation keine Authentifizierung, bleiben beide leer.
Installation
cd ~/workspace/ipsymcon-mcp-server
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env # dann .env mit echten Werten füllenSkills als Claude-Plugin
Die fünf Skills unter skills/ sind als Claude-Code-Plugin gebündelt
(.claude-plugin/plugin.json) und lassen sich damit installieren,
statt sie von Hand nach ~/.claude/skills/ zu kopieren.
⚠️ Das Plugin liefert nur die Skills, nicht den Server. Der MCP-Server wird weiterhin wie oben
installiert und in der eigenen MCP-Konfiguration eingetragen — er braucht ein venv und eine .env
mit der IPS-Adresse, beides kann ein Plugin nicht mitbringen. Ohne laufenden Server sind die
Skills wirkungslos. (Ein .mcp.json im Plugin wird erst sinnvoll, wenn der Server per uvx
installierbar ist — steht auf der Roadmap.)
Konfiguration (.env)
Variable | Bedeutung |
| JSON-RPC-Endpunkt, z. B. |
| Basic-Auth-Zugangsdaten (leer, falls keine Auth) |
|
|
| optional: Pfad zu einer YAML mit mehreren benannten Instanzen (s. u.) |
⚠️
https://verwenden, sobaldIPS_USER/IPS_PASSWORDgesetzt sind. Basic Auth überträgt Benutzer und Passwort nur base64-kodiert — überhttp://liest sie jeder mit, der im selben Netz hängt, samt aller Schaltbefehle. IP-Symcon liefert auf Port 3777 standardmäßig unverschlüsseltes HTTP aus; TLS ist also eine bewusste Entscheidung, kein Automatismus.⚠️
chmod 600für.envund die echteinstances.yaml— beide enthalten Zugangsdaten im Klartext.✅ Seit 2026-08-15 lässt sich das pro Instanz begrenzen. In der Instanzen-YAML kann jede Instanz ein
enable_write: true|falsetragen. Beide Tore müssen zustimmen — die Env-Variable und das Instanz-Flag.enable_write: trueerlaubt nie etwas allein;enable_write: falseentzieht Schreibrechte aber auch bei gesetzter Env-Variable. Damit ist die Empfehlung, nur gegen eine Testinstanz freizuschalten, erstmals umsetzbar: Migrationsziel offen, bewohntes Haus dicht. Ohne Angabe erbt eine Instanz die Env-Variable — bestehende Setups laufen unverändert.⚠️
ips_export_subtreeexportiert Instanz-Konfigurationen nur noch auf ausdrückliche Anforderung (include_configuration=true, Default aus). Diese Blöcke tragen regelmäßig Zugangsdaten von Integrationen (FritzBox, Hue, Cloud-Keys) — sie aus einem als read-only markierten Werkzeug herauszugeben machte aus reinem Lesen einen Abfluss von Zugangsdaten in den Modellkontext.
⚠️
IPS_ENABLE_WRITE=trueist mehr als „Variablen setzen". Damit sind auchips_create_script,ips_run_scriptundips_calloffen — das ist Codeausführung auf dem IP-Symcon-Server mit dessen Rechten. Die „erst planen, dann ausführen"-Regel ist eine Anweisung an das Sprachmodell, kein technischer Riegel: Der Server prüft nur dieses eine Boolean. Wer den MCP-Client kontrolliert, hat bei offenem Gate vollen Zugriff auf die Haussteuerung.
Mehrere Instanzen (Multi-Instance)
Für mehrere IP-Symcon-Ziele (z. B. home + ein Migrations-Ziel linux): eine YAML-Datei anlegen (Vorlage: instances.example.yaml) und IPS_INSTANCES_FILE darauf zeigen lassen.
default: home
instances:
home:
url: https://192.168.1.10:3777/api/
user: ""
password: ""
linux:
url: https://192.168.1.20:3777/api/Jedes Tool nimmt dann einen optionalen instance-Parameter (home/linux); ohne Angabe → default. Abwärtskompatibel: ohne IPS_INSTANCES_FILE gilt das einzelne IPS_URL als implizite Default-Instanz — bestehende Setups laufen unverändert. Die echte YAML enthält Credentials → wie .env aus git heraushalten (instances.yaml ist gitignored).
Start / Test
# direkt starten (stdio)
.venv/bin/python -m ipsymcon_mcp
# mit MCP Inspector testen
.venv/bin/python -m mcp dev ipsymcon_mcp/server.pyRegistrierung in Claude Code
claude mcp add ipsymcon -s user -- /Users/<user>/workspace/ipsymcon-mcp-server/.venv/bin/python -m ipsymcon_mcp(Umgebungsvariablen aus .env werden geladen; alternativ per -e IPS_URL=... etc. übergeben.)
Tools (v0.1)
Lesen (immer verfügbar):
Tool | IPS-Funktion | Zweck |
| GetValue | aktuellen Variablenwert lesen |
| IPS_GetVariable (+Wert+Name) | Variablen-Metadaten (Typ, Profil, Zeitstempel) |
| IPS_GetObject | Objekt-Metadaten + Parent/Children (Tree-Navigation) |
| IPS_GetChildrenIDs | direkte Kinder mit id/name/typ (Baum durchblättern, Start: 0) |
| IPS_GetObjectIDByName | Objekt-ID per exaktem Namen finden |
| IPS_GetObjectIDByName (Pfad-Walk) | Variablenwert per Objektpfad lesen ( |
| IPS_GetObject/-GetChildrenIDs (rekursiv) | ganzen Teilbaum auf einmal als verschachteltes |
| GetValue (n×) | Werte mehrerer Variablen als Snapshot festhalten |
| GetValue (n×) | Snapshot gegen Live-Werte diffen → was hat sich geändert (Wirkungskontrolle) |
| IPS_GetObject/-Variable/-ScriptContent/-Event/-Instance/-Link | Teilbaum → reiches JSON für Backup/Migration (Variable Typ+Profil+Wert, Skript-Content, Event/Instanz/Link-Detail) |
| IPS_GetScriptContent | PHP-Quelltext eines Skripts lesen |
Schreiben/Entwickeln (nur mit IPS_ENABLE_WRITE=true):
Tool | IPS-Funktion | Zweck |
| SetValue | Variablenwert direkt setzen |
| RequestAction | Aktor schalten (löst Action aus) |
| IPS_RunScript | Skript ausführen (fire-and-confirm, ohne Ausgabe) |
| IPS_RunScriptWaitEx | Skript ausführen und die Ausgabe zurückgeben — Basis fürs agentische bauen→ausführen→prüfen→nachbessern. Optionale |
| IPS_SetScriptContent | PHP-Quelltext überschreiben |
| IPS_CreateScript (+Parent/Name/Content) | neues PHP-Skript anlegen |
| IPS_CreateCategory | Kategorie anlegen (Objektbaum strukturieren) |
| IPS_CreateVariable (+Profil) | typisierte Variable anlegen ( |
| IPS_CreateEvent | Event-Hülle anlegen ( |
| IPS_CreateCategory/-Variable/-Script (+SetParent/Name/Profil/Wert/Content) | Teilbaum aus |
| beliebig | Generischer Gateway für volle API-Abdeckung (z. B. IPS_CreateInstance, IPS_SetEventCyclic) |
Hinweis zu
ips_run_script_capture: IP-Symcon erfasst die Ausgabe des Skripts (was esecho/returnwird nicht zurückgegeben (kommt leer). Das Skript muss sein Ergebnis alsoechoen.
Skill (Playbook für Claude Code)
Mitgeliefert in skills/ipsymcon/ — das Domänen-Können auf den Tools: Plan-First-Sicherheitsworkflow (read → plan → approve → execute → report), Tool-Übersicht, IPS-Objektmodell. Aufgeteilt nach dem Prinzip Anweisung im Skill, Workflow separat:
SKILL.md— die Direktive: die eine Regel (vor Schreibzugriff planen), die 22 Tools, Struktur-Primer.references/workflow.md— die detaillierten Workflows + Plan-/Report-Templates + Fallstricke.references/ips-functions.md—ips_call-Funktions-Cheat-Sheet (Event-Trigger, Profile, Instanzen).
Dazu der eigenständige Migrations-Skill skills/ips-migration/ — Greenfield-Migration eines Teilbaums auf eine andere Instanz (Export → Plan-First mit Modul-Check/Referenz-Scan/Flags → Zwei-Pass: anlegen, dann Referenzen via ID-Map verdrahten → Verify), aufbauend auf ips_export_subtree/ips_import_subtree.
Und der Cleanup-Skill skills/ips-cleanup/ — IPS-Health-Review + Phase 0 der Migration: Error-Scan (Instanzen mit Status ≥ 200) → Triage → 3-Vektor-Dependency-Analyse (Kinder · Links · ConnectionID) → Plan-First-Cascade-Delete + sicheres Fixen (Credentials werden geflaggt, nie geraten) → Verify. Erprobte Scan-Snippets mitgeliefert.
Claude Code: nach ~/.claude/skills/ipsymcon/ (bzw. …/ips-migration/) kopieren oder dorthin symlinken. So wachsen Tools (MCP) und Playbook (Skill) im selben Repo/Release im Gleichschritt.
Die Runbooks kommen auch über die MCP-Schnittstelle (v0.5)
Skill-Ordner und Claude-Code-Plugin setzen beide voraus, dass jemand sie installiert. Wer den Server ohne das Plugin einbindet — anderer Client, anderer Rechner, jemand anderes — bekommt 22 Tools und keinen Hinweis darauf, dass es Betriebsanweisungen dazu gibt. Die wichtigste davon ist kein Komfort, sondern ein Sicherheitsverhalten: Plan zeigen, bevor geschrieben wird.
Deshalb liefert der Server sie zusätzlich selbst aus — über zwei MCP-Primitives:
Weg | Charakter | Inhalt |
| Push — landet ungefragt im Systemprompt, auch ohne Plugin | Zweck · die harte Schreibgrenze · ein Zeiger auf die Runbooks |
| Pull — auf Abruf | ein Prompt je Runbook, in Claude Code als |
/mcp__ipsymcon__ipsymcon Einstieg: Objektbaum, Skripte, Variablen, Events
/mcp__ipsymcon__ips-automation Eine NEUE Automation entwerfen
/mcp__ipsymcon__ips-cleanup Rote Logs, tote Instanzen, verwaiste Objekte
/mcp__ipsymcon__ips-migration Teilbaum auf eine andere Instanz umziehen
/mcp__ipsymcon__ips-refactor Umstrukturieren ohne VerhaltensänderungDie Entwurfsregel dahinter ist wichtiger als die Funktion: im Server steht kein Skill-Text. Die Prompts lesen die SKILL.md-Dateien (plus references/) zur Laufzeit aus skills/. Eine Kopie wäre ein zweiter Stand, der irgendwann vom ersten abweicht — und der Server hätte dann eine Sicherheitsregel behauptet, die im Repo längst anders lautet. Eine Datei, drei Auslieferungswege (Skill-Ordner · Plugin · MCP). Ein Test prüft genau das: Datei ändern → Prompt-Ausgabe muss sich mitändern.
Fehlt skills/ (etwa bei reiner Paketinstallation ohne Repo), meldet der Prompt das mit Bezugsquelle, statt leer zurückzukommen.
Roadmap
Runbooks über die MCP-Schnittstelle (v0.5) —
instructionsiminitialize-Handshake (Push: Zweck + Schreibgrenze + Zeiger auf die Runbooks, kommt auch ohne installiertes Plugin an) plus ein Prompt je Runbook (/mcp__ipsymcon__<name>). Kein Skill-Text im Server: die Prompts lesenSKILL.md+references/zur Laufzeit ausskills/— eine Datei, drei Auslieferungswege (Skill-Ordner · Plugin · MCP). Am echten Protokoll verifiziert, 10 Tests inkl. „Datei ändern → Prompt-Ausgabe ändert sich mit".Multi-Instanz-Support (v0.4) — benannte Verbindungen über
IPS_INSTANCES_FILE(YAML), optionalerinstance-Parameter je Tool (über_Base), Default-Instanz, abwärtskompatibel zum einzelnenIPS_URL. TDD + Live-Test (Default + benannte Instanz + unbekannte Instanz). Treiber: IPS-Migration auf Linux — aus Alt- und Neu-Instanz lesen, vergleichen, migrieren, verifizieren.ips_run_script_capture(v0.2) — Skript viaIPS_RunScriptWaitExausführen und die Ausgabe zurückgeben (echo, nichtreturn— siehe Hinweis oben). Grundlage für agentisches Entwickeln (bauen → ausführen → Ergebnis prüfen → nachbessern). Optionale$_IPS-Parameter. Unit-Tests + Live-Test grün.ips_read_log— Log-Abruf über das Companion-Modul SymconMCPBridge: ein residenter MessageSink mit gefiltertem Ring-Buffer (KL_ERROR/KL_WARNING/…), der die öffentliche FunktionMCPB_GetLog($id, level, count, filter)per JSON-RPC bereitstellt.ips_read_logruft dann nur diese Funktion (kein Inline-PHP, kein Logfile-Parsen). Hintergrund: IP-Symcon hat kein direktes „getMessages" (Meldungsfenster = Live-Abo);IPS_GetLogDir()gäbe nur die rohe Logdatei.Companion-Modul SymconMCPBridge (MIT, released) — IP-Symcon-seitiges Modul, das Kernel-Log-Meldungen als gefilterten Ring-Buffer über JSON-RPC bereitstellt. Basis für
ips_read_logund tiefere Bridge-/Helper-Funktionen. Installation via Module Control (Git-Repo).Dedizierte Tools:
ips_create_variable,ips_create_event,ips_create_category(v0.2 — TDD + Live-Test). Detail-Config (Trigger/Cyclic/Schedule) viaips_call.Dry-Run-Modus + automatisches Snapshot-Backup vor Schreibzugriffen
Beobachtungs-/Navigations-Tools (v0.3, aus dem Community-Vergleich):
ips_get_object_tree(ganzer Teilbaum),ips_get_variable_by_path(Pfad statt ID),ips_snapshot_variables+ips_diff_variables(Wirkungskontrolle build→run→diff). TDD + Live-Test.ips_export_subtree— Backup-Hälfte: Teilbaum → reiches JSON (Variable Typ+Profil+Wert, Skript-Content, Event/Instanz/Link-Detail). Deterministisch, read-only. TDD + Live-Test.ips_import_subtree(v0.4 — TDD + Live-Round-Trip) — Restore-/Migrations-Hälfte: cat/var/script mechanisch anlegen, alte→neue ID-Map zurückgeben; Instanzen/Events/Links bewusstskipped. Deterministisches Struktur-Primitiv.Migrations-Skill
skills/ips-migration/— agentische Adaption (Greenfield v1): Export → Plan-First (Modul-Check + Referenz-Scan + Flags) → Zwei-Pass (anlegen → Referenzen via ID-Map verdrahten) → Verify. Semantisches Matching auf bestehende Ziel-Objekte + Bewertung/Refactoring = spätere Skills.Cleanup-Skill
skills/ips-cleanup/— IPS-Health-Review + Vor-Migrations-Cleanup (Phase 0): Error-Scan (Status ≥ 200) → Triage → 3-Vektor-Dependency-Analyse (Kinder/Links/ConnectionID) → Plan-First-Cascade-Delete + sicheres Fixen (Credentials geflaggt) → Verify. Scan-Snippets mitgeliefert, live validiert.Evaluations (mcp-builder Phase 4)
Gegenstück: Home-Assistant Dev-MCP (zweite Backend-Schicht des Fusionsprojekts)
Maintainer
Schimmi — https://schimmilab.de Issues und Pull Requests willkommen.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with SIEMENS PLC S7-1500/1200 controllers through their JSON-RPC API, supporting authentication, tag browsing, variable read/write operations, alarm management, and diagnostic buffer access.11
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Home Assistant to control smart home devices, query entity states, and manage automations using natural language. It provides over 90 tools for comprehensive system management, including dashboard configuration, service execution, and automation debugging.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to control and manage Homey Pro smart home devices, flows, and analytics through natural language.12MIT
- AlicenseAqualityDmaintenanceEnables monitoring and control of SwitchBot devices (temperature sensors, plugs, bots) via Claude Desktop or Home Assistant.1022MIT
Related MCP Connectors
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Schimmilab/ipsymcon-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server