<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Projekt] Entwicklung iobroker.mcp und iobroker.blink]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">Pfingsten habe ich an zwei Adapter-Projekten herumgeschraubt, die ich Euch hier vorstellen möchte — beide sind noch nicht so weit, daß ich sie als richtige ioBroker-Adapter anmelden könnte, aber sie tun jeweils schon das, wofür ich sie konkret gebaut habe. Und ich hätte gerne Mitstreiter, Mit-Meckerer und Mit-Tester.</p>
<p dir="auto"><strong>TL;DR — die beiden Projekte</strong></p>
<ul>
<li><strong>iobroker.mcp</strong> — eine Brücke zwischen ioBroker und LLM-Clients über das Model Context Protocol. Zur Zeit als externer Python-Server (stdio, neben dem LLM-Client installiert), spricht via <code>simple-api</code> mit dem ioBroker. Ziel-Architektur: nativ als ioBroker-Adapter laufend, über HTTP(S) Streamable Transport direkt an LLM-Clients angebunden, keine simple-api-Abhängigkeit mehr. Repo: <a href="https://github.com/McCavity/iobroker-mcp" rel="nofollow ugc">https://github.com/McCavity/iobroker-mcp</a></li>
<li><strong>iobroker.blink</strong> — ein echter Blink-Adapter auf Basis von <code>blinkpy</code> (Python). Zur Zeit nur ein Hotfix-CLI, das aus einem JS-Adapter-Skript via <code>exec()</code> aufgerufen wird (Arm/Disarm via Sunset/Sunrise-Trigger). Ziel-Architektur: vollständiger Adapter mit Long-Running-Bridge, allen Datenpunkten der Networks/Cameras (Arm-Status, Motion, Battery, Snapshot etc.). Auslöser für das Projekt: das alte Setup via HAM-Adapter war seit Wochen kaputt, weil Amazon Blink im Oktober/November 2025 die Auth-Architektur auf OAuth umgestellt hat — das HAM-genutzte Plugin ist seit April 2025 archiviert.</li>
</ul>
<p dir="auto">Beide Projekte sind heute über denselben Diagnose-Faden verbunden, deshalb stelle ich sie zusammen vor.</p>
<blockquote>
<p dir="auto"><strong>Hinweis zur KI-Beteiligung</strong> (gemäß dem <a href="https://forum.iobroker.net/topic/84291/verwendung-von-ki-bitte-immer-deutlich-kennzeichnen">angepinnten Forum-Hinweis</a>): Beide Projekte sind in enger Zusammenarbeit mit einem LLM-basierten Coding-Agent (Claude Code) entstanden — sowohl Architektur-Entscheidungen als auch Code-Anteil. Mein Anteil sind Anforderungen, Domain-Wissen, Live-Tests im eigenen Setup und Review. In den Repos ist die KI-Beteiligung durch <code>Co-Authored-By</code>-Marker in den Commits sowie Hinweise in den READMEs dokumentiert. Auch diesen Forum-Beitrag haben wir gemeinsam in mehreren Iterationen geschrieben.</p>
</blockquote>
<h3>Wie es dazu kam — die Blink-Saga in Kurz</h3>
<p dir="auto">Mein Skript für die Außen-Kameras (Arm 30 Min vor Sonnenuntergang, Disarm 30 Min nach Sonnenaufgang, klassisch über <code>astro</code>-Trigger) ist irgendwann gestorben — Schreibversuche auf den HAM-Datapoint kamen mit <code>ack=false</code> zurück, im HAM-Log stand nur <code>HAPStatus -70402 SERVICE_COMMUNICATION_FAILURE</code>. Ich hatte Debug-Logs im JS-Adapter aktiviert, mit -70402 etwas anzufangen versucht, dann gemerkt, daß auch das HAM-Plugin selbst noch ein eigenes Debug-Level hat, das ich nicht aktiviert hatte — und an dem Punkt ist mir die Lust ausgegangen. Plan-B waren feste Zeitpläne in der Blink-App, suboptimal aber tat irgendwas. Mit Repo-Versionen, Plugin-Source und dem eigentlichen Fehler habe ich mich gar nicht mehr beschäftigt.</p>
<p dir="auto">Pfingst-Sonntag habe ich den Fall an einen LLM-Helfer weitergereicht (Claude Code), den ich vorher mit einem MCP-Server für ioBroker bewaffnet hatte — und das war der Wendepunkt. Damit war der Diagnose-Loop in zwanzig Minuten am Killer-Finding. Nichts davon hätte ich nicht prinzipiell auch selbst tun können. Aber zwischen "kann ich prinzipiell" und "mache ich tatsächlich" liegt halt manchmal das Leben.</p>
<h3>iobroker.mcp — Werkzeug und Stand</h3>
<p dir="auto">Damit der Rest nachvollziehbar ist, ein kurzer Schwenk zum Begriff:</p>
<p dir="auto"><strong>Model Context Protocol (MCP)</strong> ist eine 2024 von Anthropic vorgestellte Spezifikation, mit der LLM-Clients (Claude Code, Codex, OpenCode etc.) strukturiert auf externe Datenquellen und Werkzeuge zugreifen können. Ein <strong>MCP-Server</strong> ist ein kleines Programm, das eine Sammlung von <strong>Tools</strong> bereitstellt — Funktionen mit Name, Beschreibung, Parameter-Schema und Rückgabe. Das LLM sieht diese Tools, kann sie strukturiert aufrufen, bekommt das Ergebnis und arbeitet damit weiter.</p>
<p dir="auto">Konkret an einem ioBroker-Beispiel: ich sage in einem normalen Chat zu Claude <em>"schalte die Blink-Außen-Kameras scharf"</em>. Claude kennt <code>iobroker.mcp</code> und sieht darin das Tool <code>write_state(id, value)</code>. Sie ruft auf:</p>
<pre><code>write_state("ham.0.Blink-Blink-Außen.Blink-Außen-Arm.On", true)
</code></pre>
<p dir="auto">Der MCP-Server übersetzt das aktuell in einen HTTP-Call gegen den <code>simple-api</code>-Adapter (<code>GET /set/&lt;id&gt;?value=true</code>). Die simple-api sitzt im ioBroker, setzt den Datenpunkt im Objektbaum auf <code>true</code> mit <code>ack=false</code>, der jeweilige Adapter reagiert wie sonst auch — fertig.</p>
<p dir="auto"><strong>Aktueller Stand</strong>:</p>
<ul>
<li>FastMCP, Python (~400 Zeilen), MIT-Lizenz, public Repo</li>
<li>Transport: <strong>stdio</strong>, d.h. zur Zeit als Co-Installation neben dem LLM-Client (Mac, Linux-Workstation o.ä.)</li>
<li>Kommunikation mit ioBroker: über <code>simple-api</code> (Voraussetzung: simple-api-Adapter installiert und Instanz aktiv, im LAN ohne Auth)</li>
<li>Acht Tools:</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Tool</th>
<th>Was es macht</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>health_check</code></td>
<td>Erreichbarkeit + Adapter-Version prüfen</td>
</tr>
<tr>
<td><code>read_state(id)</code></td>
<td>Einzelnen Datenpunkt lesen</td>
</tr>
<tr>
<td><code>read_states_bulk(ids[])</code></td>
<td>Mehrere Datenpunkte gleichzeitig (sparsam)</td>
</tr>
<tr>
<td><code>write_state(id, value)</code></td>
<td>Schreibend setzen mit ack=false</td>
</tr>
<tr>
<td><code>toggle_state(id)</code></td>
<td>Bool-Wert umkippen (read+write in einem)</td>
</tr>
<tr>
<td><code>list_objects(pattern)</code></td>
<td>Objekte per Wildcard listen</td>
</tr>
<tr>
<td><code>search_objects(query)</code></td>
<td>Volltextsuche in Object-Namen</td>
</tr>
<tr>
<td><code>query_history(id, options)</code></td>
<td>Historische Werte aus dem History-Adapter ziehen</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>Ziel-Architektur</strong>:</p>
<ul>
<li>Nativ als ioBroker-Adapter laufend (also in der Adapter-Sprache des Ökosystems, also TypeScript/JavaScript — hier fehlt mir noch einiges an Erfahrung, deshalb Bitte um Mit-Hilfe weiter unten).</li>
<li><strong>HTTP(S) Streamable Transport</strong> statt stdio, damit der LLM-Client direkt mit dem Adapter sprechen kann (von überall, nicht nur lokal auf dem MCP-Server-Host).</li>
<li>Keine <code>simple-api</code>-Abhängigkeit mehr — Adapter spricht direkt mit dem ioBroker-Objektbaum und der States-Datenbank.</li>
<li>Authentifizierung optional (Token, später ggf. Pro-User), damit das Ding auch außerhalb LAN nutzbar bleibt.</li>
</ul>
<h3>iobroker.blink — Anlaß, Workaround und Stand</h3>
<p dir="auto"><strong>Anlaß</strong>: HAM-Adapter mit <code>homebridge-blink-for-home</code> als Brücke zu Blink — funktionierte über Jahre, fiel im Herbst 2025 aus. Mit MCP-Server-Unterstützung dann diagnostiziert: das Plugin schweigt sich über sein eigenes Scheitern aus (in <code>log.js</code> sind <code>log.info</code>/<code>log.debug</code> als No-Op definiert), und sobald man <code>logging: "debug"</code> aktiviert, kommt der eigentliche Fehler ans Tageslicht: <code>HTTP 426 An app update is required</code>. Amazon hat eine Mindest-App-Version eingeführt; das Plugin meldet sich noch mit <code>appVersion: 6.18.0 (2210101952)</code> aus Oktober 2022. Plus: das Original-Repo ist seit 24. April 2025 archiviert, der aktive Fork hat das Problem ebenfalls (Issue #2 im <code>Flomentum-Solutions/homebridge-blink-for-home-new</code>), Home Assistant trifft die gleiche Wand (Issue #154477 im HA-Core).</p>
<p dir="auto">Der Grund ist nicht "Version-String veraltet". Amazon hat den Blink-Login komplett auf <strong>OAuth umgestellt</strong> (Access-Token + Refresh-Token statt klassischer Session-Cookies). Ein Plugin-Update mit gepatchtem Version-String würde nichts retten — die ganze Auth-Architektur muß umgeschrieben werden. Im Python-Ökosystem gibt's allerdings schon eine Lösung: <strong>blinkpy</strong> von <a href="https://github.com/fronzbot/blinkpy" rel="nofollow ugc">fronzbot</a> hat den OAuth-Flow im PR #1115 bereits implementiert und wird aktiv gepflegt.</p>
<p dir="auto"><strong>Aktueller Stand (Workaround)</strong>:</p>
<ul>
<li>HAM-Adapter raus (<code>iobroker del ham</code> — 541 npm-Pakete entfernt)</li>
<li><code>blinkpy 0.25.5</code> in einem venv unter <code>/home/iobuser/blink-venv/</code></li>
<li>Mini-CLI <code>blink_control.py</code> mit <code>arm</code>/<code>disarm</code>/<code>status</code> (gut 100 Zeilen)</li>
<li>JS-Skript ruft via <code>exec()</code> mit den astro-Triggern auf</li>
<li>Live verifiziert: Pfingst-Sonntagabend Arm-Trigger gefeuert, gestern früh 06:02 Disarm-Trigger ebenfalls</li>
</ul>
<p dir="auto">Heute morgen habe ich allerdings festgestellt, daß mein <strong>Batterie-Check</strong> noch über den alten HAM-Adapter ging und dort jetzt natürlich ins Leere zeigt — diese Funktionalität ist verloren, bis ein richtiger Adapter da ist. Damit ist klar: das Hotfix-CLI deckt nur die Arm/Disarm-Schedule ab, alles andere fällt aktuell aus.</p>
<p dir="auto"><strong>Ziel-Architektur</strong>:</p>
<ul>
<li>Vollständiger ioBroker-Adapter mit Long-Running-Bridge (vermeidet die 30-60s Cold-Start-Latenz, die das Python-CLI pro Aufruf hat)</li>
<li>Vermutlich Python-Subprozeß für die blinkpy-Anbindung, JSON-RPC oder MQTT als IPC, JS/TS-Adapter-Wrapper drumherum — Architektur noch offen, Vorschläge willkommen</li>
<li>Datenpunkte für alle Networks und Cameras: Arm-Status (lesend + schreibend), Motion-Detection, Battery-Level, Wifi-Strength, Snapshot-Fetch, ggf. Live-View-URL</li>
<li>2FA-Erst-Auth einmalig per Konfig-UI, Token-Refresh dann transparent</li>
</ul>
<h3>Die Bitte</h3>
<p dir="auto">Was ich gebaut habe sind zwei <strong>Prototypen</strong> — der eine läuft schon im Alltag (das MCP-Werkzeug), der andere ist erstmal nur ein Pflaster (das Blink-Hotfix-CLI). Für beide brauche ich Mitstreiter, weil ich an einigen Stellen noch Bedarf habe:</p>
<ul>
<li><strong>JS/TS-Adapter-Entwicklung im Allgemeinen</strong> — ich habe einiges an Python-Code geschrieben, aber das ioBroker-eigene Adapter-Ökosystem ist auf Node-basiert. Wer Lust hat, mir hier auf die Sprünge zu helfen, ist herzlich willkommen.</li>
<li><strong>HTTP(S) Streamable MCP Transport</strong> in einem ioBroker-Adapter — falls jemand das schon mal gemacht oder gesehen hat, Hinweise gerne.</li>
<li><strong>Architektur-Diskussion für iobroker.blink</strong> — Long-Running-Python-Bridge vs. native Node-Implementierung der Blink-API? IPC via MQTT/JSON-RPC/Unix-Socket? Ich habe Meinungen, aber keine endgültigen Antworten.</li>
<li><strong>Test-Setups</strong> für iobroker.blink — wer Blink-Hardware hat und im Adapter-Beta testen würde, gerne melden.</li>
<li><strong>Wunschverhalten</strong> für beide Adapter — was würde Euch sinnvoll erscheinen? Auch "ich würde das so nie nutzen, weil..." ist wertvolles Feedback.</li>
</ul>
<p dir="auto">Sobald die Repos ein bißchen Substanz haben, werde ich für <code>iobroker.blink</code> einen eigenen "Test/Entwicklung"-Thread aufmachen — Hinweis kommt hier dann nochmal. <code>iobroker.mcp</code> läuft erstmal weiter im jetzigen Repo (<a href="https://github.com/McCavity/iobroker-mcp" rel="nofollow ugc">https://github.com/McCavity/iobroker-mcp</a>), Issues / Feature-Requests / PRs nehme ich gerne an.</p>
<p dir="auto">LG</p>
<p dir="auto">McCavity</p>
]]></description><link>https://forum.iobroker.net/topic/84626/projekt-entwicklung-iobroker.mcp-und-iobroker.blink</link><generator>RSS for Node</generator><lastBuildDate>Tue, 26 May 2026 06:26:29 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/84626.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 May 2026 09:20:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Projekt] Entwicklung iobroker.mcp und iobroker.blink on Mon, 25 May 2026 14:55:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mccavity" aria-label="Profile: McCavity">@<bdi>McCavity</bdi></a> das Thema MCP war auch ein Diskussionspunkt im letzten Dev Meeting <a href="https://forum.iobroker.net/topic/84355/meeting-f%C3%BCr-iobroker-core-dev-admin-20.05.26-20-30">https://forum.iobroker.net/topic/84355/meeting-für-iobroker-core-dev-admin-20.05.26-20-30</a></p>
<p dir="auto">Wenn die Aufzeichnung bereitgestellt wurde kannst du es dir dort auch noch einmal anhören was dort besprochen wurde</p>
]]></description><link>https://forum.iobroker.net/post/1341386</link><guid isPermaLink="true">https://forum.iobroker.net/post/1341386</guid><dc:creator><![CDATA[Feuersturm]]></dc:creator><pubDate>Mon, 25 May 2026 14:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to [Projekt] Entwicklung iobroker.mcp und iobroker.blink on Mon, 25 May 2026 14:40:46 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mccavity" aria-label="Profile: McCavity">@<bdi>McCavity</bdi></a></p>
<p dir="auto">Da gibt es schon 2 Ansätze</p>
<p dir="auto"><a href="https://github.com/ioBroker/ioBroker.mcp" rel="nofollow ugc">https://github.com/ioBroker/ioBroker.mcp</a><br />
<a href="https://github.com/Holger-Will/ioBroker.mcp-server" rel="nofollow ugc">https://github.com/Holger-Will/ioBroker.mcp-server</a></p>
<p dir="auto">Der erste ist von Bluefox, den will er nun als Nächstes weiterentwickeln.<br />
Meiner Meinung nach müsste er den folgenden befehlsumfang  abdecken</p>
<p dir="auto">SocketCommand und socketCommandsAdmin</p>
<p dir="auto"><a href="https://github.com/ioBroker/ioBroker.socket-classes/tree/main/src/lib" rel="nofollow ugc">https://github.com/ioBroker/ioBroker.socket-classes/tree/main/src/lib</a></p>
]]></description><link>https://forum.iobroker.net/post/1341385</link><guid isPermaLink="true">https://forum.iobroker.net/post/1341385</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Mon, 25 May 2026 14:40:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Projekt] Entwicklung iobroker.mcp und iobroker.blink on Mon, 25 May 2026 13:57:50 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mccavity" aria-label="Profile: McCavity">@<bdi>McCavity</bdi></a> mit MCP hat sich schon mal <a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-will" aria-label="Profile: holger-will">@<bdi>holger-will</bdi></a> beschäftigt. Such mal im Forum.</p>
]]></description><link>https://forum.iobroker.net/post/1341379</link><guid isPermaLink="true">https://forum.iobroker.net/post/1341379</guid><dc:creator><![CDATA[Jey Cee]]></dc:creator><pubDate>Mon, 25 May 2026 13:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Projekt] Entwicklung iobroker.mcp und iobroker.blink on Mon, 25 May 2026 12:46:22 GMT]]></title><description><![CDATA[<p dir="auto"><em>lol</em> nein, nicht gesehen... ich hab nur im Repo geschaut, ob es was gibt, aber nicht im Forum 🤣</p>
<p dir="auto">Belege letzte Durchsage, ich werde <em>keinen</em> Blink Adapter entwickeln.</p>
<p dir="auto">Wenn jetzt auch noch einer einen MCP Server in der Mache hat, werfe ich das Handtuch ;-)</p>
]]></description><link>https://forum.iobroker.net/post/1341369</link><guid isPermaLink="true">https://forum.iobroker.net/post/1341369</guid><dc:creator><![CDATA[McCavity]]></dc:creator><pubDate>Mon, 25 May 2026 12:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to [Projekt] Entwicklung iobroker.mcp und iobroker.blink on Mon, 25 May 2026 09:42:05 GMT]]></title><description><![CDATA[<p dir="auto">Das soll deine Arbeit nicht schlecht machen, hast du diesen Adapter gesehen?:<br />
<a href="https://forum.iobroker.net/topic/84386/test-adapter-f%C3%BCr-blink-kameras-entwickelt-mit-ki">https://forum.iobroker.net/topic/84386/test-adapter-für-blink-kameras-entwickelt-mit-ki</a></p>
<p dir="auto">Vielleicht auch zusammen tun um an diesem Projekt zu arbeiten?</p>
]]></description><link>https://forum.iobroker.net/post/1341317</link><guid isPermaLink="true">https://forum.iobroker.net/post/1341317</guid><dc:creator><![CDATA[Shadowhunter23]]></dc:creator><pubDate>Mon, 25 May 2026 09:42:05 GMT</pubDate></item></channel></rss>