bongocat-mcp
bongocat-mcp
Ein eigenständiger Controller, der die verschiedenen „BongoCat“-Katzen vereinheitlicht als MCP-Tools kapselt – vollständig vom BongoCat-Repository entkoppelt –, damit MCP-Clients (z. B. astrbot) und LLMs die Tastenanimationen, das Tippen, die Gesichtsausdrücke und die Chatblasen der Katze aktiv steuern können, ohne die Katze neu kompilieren zu müssen. Außerdem wird ein lokales Web-Dashboard mitgeliefert, um den Status einzusehen und die Konfiguration zu bearbeiten.
Vollständiges Designdokument: Anforderungsdokument docs/requirements.md · Architekturdokument docs/architecture.md.
Unterstützt drei Katzen (automatische Erkennung, auch per Konfiguration erzwungen)
driver | Zielkatze | Funktionsprinzip | Voraussetzungen | |
| Selbst kompilierte BongoCat-Version (integrierter Steuerkanal) | Lokaler HTTP-Steuerkanal (127.0.0.1 zufälliger Port + Bearer-Token) | Einfach die selbst erstellte Version starten; | |
| Fertige Tauri-Builds: offizielle Releases, Skin-Neuverpackungen (Frontend unverändert, nur Modellress Zeit ausgetauscht) | WebView2-CDP-Injektion: fertigen Build mit Debugport starten → | Keine Konfiguration nötig; wenn die Katze läuft, aber der Debugport nicht geöffnet ist, wird sie automatisch neu gestartet und übernommen (ein kurzes Abreißen); den Programmpfad kann man in der Konfiguration angeben | |
| BongoCatMver-Builds: C++/SFML-Skin-Version (manuell geändert | Reverse-Engineering des UDP-Protokolls: transparente Spiegelschicht (leitet echte Tastatur- und Mauseingaben mit 60 fps weiter + KI-Overlay als zusätzliche Ebene) | Mver muss Netzwerksynchronisation aktivieren und auf Empfangsmodus gestellt sein; mit |
Kosten des mver-Empfangsmodus und Spiegelschicht: Wenn mver den Netzwerkempfang aktiviert, ignoriert es die lokale Tastatur und Maus und rendert nur Netzwerkpakete. Der Sende-Thread des mver-Treibers liest mit 60 fps die echte Tastatur-/Maus-Eingabe (
GetAsyncKeyState/GetCursorPos) und leitet sie weiter, sodass sich die Katze wie im lokalen Modus verhält (Verzögerung etwa einen Frame). KI-Befehle werden als Overlay überlagert. Wenn der MCP-/Spiegelprozess stoppt, reagiert die Katze nicht mehr auf Tastatur und Maus (nach einem Neustart ist sie wiederhergestellt). Es darf jeweils nur eine Mver-Instanz existieren.
Related MCP server: Vox MCP
Neue Katzen automatisch einbinden (mver)
Automatische Erkennung: Der Status-Poll pending des Dashboards erfasst alle 5 Sekunden laufende Mver-Prozesse; wenn die konfigurierte Katze nicht läuft (oder nichts konfiguriert ist), sondern eine andere läuft, wird
mver_dirautomatisch auf die laufende Katze umgestellt und der Treiber neu aufgebaut (die Umschaltung ist im Ereignisprotokoll sichtbar)Ein-Klick-Anbindung: Die Schaltfläche „🚀 Ein-Klick-Anbindung einer neuen Mver-Katze“ des Dashboards erledigt automatisch: laufende Katze lokalisieren → ihre
config.jsonauf Textebene neu schreiben, um Netzwerksynchronisation zu aktivieren (Empfangsmodus, Kommentare des Autors bleiben erhalten; dasselbe Prof-Menü wie das Einstellungsmenü des Werkzeugs schreibt dieselbe Datei, das Programm selbst wird nicht verändert). → Katze-Prozess beenden und neu starten → Treiber neu aufbauenBei neu installierten Skin-Versionen von mver ist
network:false(kein UDP-Hören) eingestellt; Defekt per Ein-Klick beheben; alternativ kann man in den Katzen-Einstellungen die Netzwerksynchronisation aktivieren und auf empfangsmodus umschaltenHinweis: Es darf nur eine Mver-Instanz den Empfangsport belegen
Schnellstart
python -m venv .venv
.venv\Scripts\activate # Windows;macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
# 方式一:仪表盘(推荐日常使用,自动打开浏览器)
python dashboard.py # 默认隐藏窗口后台运行
python dashboard.py --stop # 停止后台仪表盘
python dashboard.py --visible # 前台调试模式(终端可见)
# 方式二:MCP stdio server(供 astrbot 拉起)
python server.py
# 方式三:只让接收模式的 Mver 恢复键鼠跟随(不开 AI)
python mver-mirror.py # 默认隐藏窗口后台运行
python mver-mirror.py --stop # 停止隐藏运行的镜像
python mver-mirror.py --visible # 前台调试模式(Ctrl+C 退出)
# 本地回归测试(自动探测 driver;或传 embedded / cdp / mver)
python test_client.pyZCode-Plugin (bongocat-notify)
Im Verzeichnis zcode-plugin/ befindet sich ein lokaler Plugin-Markt + Plugin, mit dem Zcode diesen MCP-Server anbindt:
MCP-Anbindung:
.mcp.jsonregistriertserver.pyals STDIO-MCP-Server (Werkzeugnamemcp__bongo-cat__*), sodass der Agent die Katze direkt steuern kannst; der/bongo-test-Befehl führt einen vollständigen Test über die gesamte Kette durchTask-Benachrichtigung: Hooks reagieren auf Flaggschiff-Ereignisse in ZCode mit Katzenblase und Expression-Umschaltung –
Stop(Aufgabe abgeschlossen → Sternchenaugen),PermissionRequest(wartend auf Genehmigung → fragend),PostToolUseFailure(Fehler → weinend),SessionStart/UserPromptSubmit(Arbeitsbeginn)Expressions werden nicht als Index hartgecodet: Jedes Mal wird die Expression-Liste von
get_cat_statuslive gelesen und anhand des Namens-Keywords gematcht, bei Skin-Wechselstautomatch automatisch angepasst; der Hook läuft über Dashboard-HTTP-API (python dashboard.pymuss laufen). Wenn das Dashboard nicht vorhanden ist, wird es still übersprungen, die Session wird nie blockiert
Installation: Zcode → Einstellungen → Plugin-Verwaltung → Entdecken → + lokales Marktverzeichnis zcode-plugin/ hinzufügen und bongocat-notify installieren (Näheres – siehe README zcode-plugin/bongocat-notify/README.md).
Du möchtest für ZCode / AstrBot oder andere Clients ein eigenes Katzen-Notify-Plugin entwickeln? Die Wahl des Anbindungskanals, die Plugin-Skelettvorlage, die Erweiterungskonventionen für Expressions und die Validierungsmethode findest du unter Anbindungsentwicklungsanleitung docs/zcode-plugin-dev.md.
Claude Code-Plugin (bongocat-notify)
claude-plugin/ ist die Claude-Code-Variante desselben „lokalen Marktes + Plugins“ (funktional gleichwertig zur ZCode-Variante):
MCP-Anbindung:
.mcp.jsonregistriertserver.pyals STDIO-MCP-Server (Werkzeugname ebenfallsbongocat__*); der Befehl/bongo-testist ein Self-Test über die ganze KetteTask-Benachrichtigung: Das Ereignismodell unterscheidet sich – Claude Code besitzt keine
PermissionRequest- /PostToolUseFailure-Ereignisse; wartende Genehmigungen werden überNotificationausgedrückt (nachmessage-Keywords müssen Hinweise gefiltert), Werkzeugfehler werden knapp austool_responsevonPostToolUseabgeleitet
Installation: claude plugin marketplace add claude-plugin/目录 → claude plugin install bongocat-notify@bongocat-local und nach einem Neustart der Sitzung mit /mcp überprüfen (Details in claude-plugin/bongocat-notify/README.md).
Codex-Plugin (bongocat-notify)
codex-plugin/ ist die OpenAI-Codex-CLI-Version desselben Plugins (funktionale Äquivalent zur ZCode-Version):
MCP-Anbindung:
.mcp.json(rein natives Serverformat für Codex) registriertserver.pyals STDIO-MCP-Server; derbongo-test-Skill (skills/*/SKILL.md, eigene Codex-Prompts sind veraltet, Skills sind die offiziellen Nachfolger) führt über die gesamte KetteTask-Benachrichtigung: Codex-Hooks entsprechen den ZCode-Ereignissen fast eins zu eins –
PermissionRequestist ein natives Ereignis; Werkzeugfehler gibt es nichtPostToolUseFailure, sofern sie konservativ austool_responsevonPostToolUsebestimmt werden; Hooks werden über das Plugin-Manifest (.codex-plugin/plugin.json) mitgeliefert und laufen asynchron im Hintergrund, ohne den Turn zu blockieren
Installation: codex plugin marketplace add codex-plugin/目录 → codex plugin install bongocat-notify@bongocat-local → diese 5 Hooks in /hooks einzeln mit „Trust” bestätigen (Codex-Trust-Review-Mechanismus – ohne Vertrauen wird nicht ausgeführt) → neue Sitzung codex mcp list – überprüfen (Details in codex-plugin/bongocat-notify/README.md).
Konfiguration (config.json, über das Dashboard editierbar)
Lesepriorität: Umgebungsvariable BONGOCAT_* > config.json > Standardwert. Für die erste Verwendung kann man config.example.json nach config.json kopieren.
Schlüssel | Beschreibung |
| leer = automatische Erkennung; |
| cdp: Pfad zur BingoCat.exe / bongo-cat.exe |
| cdp: zusätzliche Kandidate-Listenpfade |
| cdp: Debugport, Standard 9223 |
| mver: Skinverzeichnis (enthält |
| mver: Empfangsport; leer = aus |
| Zielhost, Standard 127.0.0.1 |
| embedded: überschreibt automatisch die automatische Erkennung |
| Dienste-Listen-Port des Dashboards, Standard 127.0.0.1:8766 |
Die umgebungsvariablen: BONGOCAT_MCP_DRIVER, BONGOCAT_APP_PATH, BONGOCAT_CDP_PORT, BONGOCAT_MVER_DIR, BONGOCAT_MVER_PORT, BONGOCAT_MCP_HOST, BONGOCAT_MCP_CONFIG, BONGOCAT_MCP_PORT, BONGOCAT_MCP_TOKEN (kompatibel mit alten Versionen).
Dashboard
python dashboard.py startet (öffnet Browser automatisch) und enthält:
Statusübersicht: aktueller Fahrermodus (Driver), Fähigkeitsmatrix (Grün = unterstützt / Grau = diese Katze unterstützt nicht), Katzenstatus (Modell / Modus / Fenster), Mver-Mirror-Thread, Polling-Refresh alle 2 Sekunden
Fahrereinstellung: automatisch / embedded / cdp / mver; Umschalten speichert und erstellt den Treiber neu
Konfigurationseditor: visualisiert Bearbeitung aller Schlüssel von
config.json
Werkzeug-Sandbox: Alle Befehle können direkt auf der Webseite aufgerufen werden (Expression-Dropdown, Tastatureingabe, Tippen, Sprachblase, Fenster anzeigen/verbergen, set-hand) – mit den letzten 200 Ereignisprotokoll-Einträgen
Das Dashboard und der Stdio-Server von astarkbot halten jeweils eine eigene Treiber-Instanz; sie können parallel verwendet werden. Bei magivir/dem; cdp gibt es keine Konflikte; eine doppelte mver-Spiegelung ist eine gutartige Überlagerung (zwei identische Statusdaten), die Chatblase können eventuell in beiden Prozessen je einmal gerendert werden.
MCP-Tools (14 Tools, 12 einheitliche Befehle) – bei allen Treibern identisch)
Werkzeug | Beschreibung | embedded | cdp | mver |
| die Überprüfung | ✅ | ✅ | ✅ |
| Treiber/Fähigkeiten/Modellinformationen/Fensterstate✅ Verhalten | ✅ | ✅ | ✅ |
| Expression-/Bewegungsliste | ✅ | ✅ | ⚠️ benötigt Modulmaterial |
| Expression wechseln (nach | ✅ | ✅ | ⚠️ benötigt Modulmaterial |
| Motion abspielen | ✅ | ✅ | ⚠️ benötigt Modulmaterial |
| Taste gedrückt/losgelöst | ✅ | ✅ | ✅ |
| Zeichen für Zeichen Tippen | ✅ | ✅ | ✅ |
| Katze-Besamung | ✅ | ❌ | ❌ |
| Live-2D-Parameter | ✅ | ❌ | ❌ |
| Chatblase (verschwindet automatisch 8 Sekunden nach der Tippen-Tippen; | ✅ | ✅ | ✅ |
| Katzen-Fenster anzeigen/verbergen | ✅ | ✅ | ✅ |
Fähigkeiten sind Anlage-bewusst: mver-Skins geben die entsprechende Fähigkeit erst dann bekannt, wenn die Dateien für Expressions/Befindlichkeiten tatsächlich im Modellverzeichnis uns vorhanden sind; andernfalls melden sie ehrlich „nicht unterstützt“ (damit ungültige, zunächst stillgelegte Werte nicht als Fähigkeit angesehen werden).
Sicherheitshinweise
Alle Kanäle sind ausschließlich an das lokale Loopback gebunden; der eingebettete Kanal verwendet bei jedem Start ein zufälliges Bearer-Token
Der WebView2-fehlerdebugport von cdp (Standard 127.0.0.1:9223) ist ein lokales Kontroll-Interface; eine Katze mit offenen debug sleep nicht längere Zeit unbeobachtet stehen
Das cdp-Übernimmt startet eine laufende Katze einmal neu; gleichzeitig wird nur eine Katze unterstützt
Projektstruktur
bongocat-mcp\
bongocat_mcp\ # 核心包
config.py # 统一配置(env > config.json > 默认)
detect.py # driver 探测/切换
dispatch.py # 命令调度(能力门控 + 事件日志)
drivers\ # embedded_http / cdp_webview2 / mver_udp / win32_utils
bubble\overlay.py # bridge 自绘聊天气泡窗
server.py # MCP stdio 入口
dashboard.py # FastAPI 仪表盘
web\index.html # 仪表盘前端(原生单页,无构建)
mver-mirror.py # Mver 独立镜像进程
zcode-plugin\ # ZCode 插件(本地市场 + bongocat-notify)
claude-plugin\ # Claude Code 插件(本地市场 + bongocat-notify)
codex-plugin\ # Codex CLI 插件(本地市场 + bongocat-notify)
docs\ # 需求/架构/接入文档;验证截图为本地存档不入库Mver-UDP-Protokoll (Reverse-Engineering-Notizen
312-Byte-Samuelle-Statustraum, ununterbrochen mit 60 fps gesendet, ohne Handshake
bytes[0..256]: VK-Index-Tastenstatus;0x81= gedrückt (werden während des gesamten Haltens kontinuierlich gesendet),0x80= Release-Kante,0x00= idle; VK0x01/0x02= linke/rechte Maustastebytes[256..311]: 14 floats,fl[8]=0.8×光标x/屏幕宽度,fl[9]=0.8×光标y/屏幕 HöheKonstante Slots
0x90/0xF0/0xF3/0xF6/0xFB = 0x01Tastaturkombinationen müssen zeitliche Drückung signalisieren (erste Modifier-Taste ≥0,3s halten, dann auslöschtaste drücken)
mode: 1=Standard, 2=Tastatur, 3=Gamepad (aus BongoCatMverUI-Quellcode)
Now review the output for potential issues:
We translated
pngtable use "gesundheitsprüfung". Fine.We used "Instanz" fine.
We in table "embedded_config / embedded_port / embedded_token" - row with "首先" no.
Need check "default 127.0.0.1:8766" is okay.
Need maybe not use "wrench" etc.
Potential mistake: In "MCP tools" table, for row get_cat_status: get_status? I wrote "get_statusstatus"? Let's fix! The tool is get_cat_status, not get_status. In the table:
get_status is wrong. Let me correct in final: get_cat_status. Also the description "die Überprüfung" is wrong. It should be "Treiber/Fähigkeiten/Modellinfo/Fenster sichtbar" etc. I wrote "get_status" because table may be mis-typed. Need fix final output.
Also "get_status" status won't be correct.
Let's ensure table row names exactly:
pingget_cat_statuslist_expressions/list_motionsset_expression(index, duration)play_motion(motion)press_key/release_keytype_text(text)set_hand(left, right)set_parameter(id, value)show_bubble/hide_bubbleset_window_visible(visible)
I will correct in final.
Also "BongoCat" as product name in "BongoCatMver" no space. Keep.
Need maybe in quotes ## Konfiguration (config.json, über das Dashboard editierbar) okay.
"Treiber" title "MCP-Tools (14 Tools, 12 einheitliche Befehle)" Actually original says "全部 driver 一致" -> "identisch für alle Treiber". Good.
Now, exact phrase "映射到 12 个统一命令" = "der auf 12 einheitliche Befehle abgebildet wird" -> My heading "einheitliche Befehle" lacks "映射". Better: "14 Tools, die auf 12 einheitliche Befehle abgebildet werden, für alle Treiber identisch". Since it's a heading, concise: "MCP-Tools (14 Tools, dahinter 12 einheitliche Befehle, für alle Treiber identisch)". Good.
Need maybe "ink" not "Bubble".
Also, in note "de-DE", "man kann"? Use "kann man" etc. Good.
Let's now correct final candidate.
Potential "德语" vs "key" in tables: Should translate "清" no.
Now, in "new cat auto" bullet 2: "文本级 `config.json` rewrite" -> "text-level rewrite", German "auf Textebene umschreiben." Good.
Need "Mver" vs "独立" not.
Okay final will be a cleaned version.
Let's now# bongocat-mcp
Ein eigenständiger Controller, der die verschiedenen „BongoCat“-Katzen vereinheitlicht als MCP-Tools kapselt – vollständig vom BongoCat-Repository entkoppelt –, sodass MCP-Clients wie astrbot und LLMs die Tastenanimationen, das Tippen, die Gesichtsausdrücke und die Chatblasen der Katze aktiv steuern können, ohne dass die Katze neu kompiliert werden muss. Zusätzlich gibt es ein lokales Web-Dashboard, um den Status einzusehen und die Konfiguration zu bearbeiten.
Vollständiges Design-Dokument: Anforderungsdokument docs/requirements.md · Architektur- und Implementierungsdokument docs/architecture.md.
Unterstützt drei Katzen (automatische Erkennung, auch per Konfiguration erzwungen)
driver | Zielkatze | Funktionsprinzip | Voraussetzungen | |
| Selbst kompilierte BongoCat-Version (integrierter Steuerkanal) | Lokaler HTTP-Steuerkanal (127.0.0.1 mit zufälligem Port + Bearer-Token) | Einfach die selbst kompilierte Version starten; | |
| Fertige Tauri-Buils: offizielle Release, Skin-Neuverpackungen (Frontend unverändert, nur Modellressourcen getauscht) | WebView2-CDP-Injektion: Fertig-App mit Debug-Port starten → | Keine Konfiguration nötig; wenn die Katze läuft, aber ohne Debug-Port, wird sie automatisch neu gestartet und übernommen (einmal kurz unterbrochen); der EXE-Pfad kann in der Konfiguration angegeben werden | |
| BongoCatMver-Fertigversionen: C++/SFML-Skin-Version ( | Reverse-Engineertiges UDP-Protokoll: transparente Spiegelungsebene (echte Tastatur/Maus mit 60 fps weiterleiten + AI-Overlay darüber) | Mver muss Netzwerksynchronisation aktiviert haben und auf Empfangsmodus stehen; |
Kosten des mver-Empfangsmodus und die Spiegelungsebene: Wenn Mver den Netzwerkempfang aktiviert, ignoriert es die lokale Tastatur und Maus und rendert nur noch Netzwerkpakete. Der Sende-Thread des mver-Treibers liest mit 60 fps die echten Tastatur-/Mauseingaben (
GetAsyncKeyState/GetCursorPos) und leitet sie weiter – das Verhalten entspricht dem lokalen Modus (Verzögerung etwa ein Frame). KI-Befehle werden als Overlay darübergelegt. Stoppt der MCP-/Spiegelungsprozess, reagiert die Katze nicht mehr auf Tastatur und Maus (nach Neustart ist sie wiederhergestellt); es kann immer nur eine einzige Mver-Instanz laufen.
Neue Katzen automatisch anbinden (mver)
Automatische Erkennung: Das Status-Polling des Dashboards erkennt alle 5 Sekunden einen laufenden Mver-Prozess; ist die konfigurierte Katze nicht aktiv (oder keine konfiguriert), aber eine andere läuft, wird
mver_dirautomatisch auf die laufende Katze umgestellt und der Treiber neu aufgebaut (der Wechsel ist im Ereignisprotokoll sichtbar)Ein-Klick-Anbindung: Die Schaltfläche „🚀 Mver-Katze mit einem Klick anbinden“ erledigt automatisch: laufende Katze finden → deren
config.jsonauf Textebene umschreiben, um die Netzwerksynchronisation zu aktivieren (Empfangsmodus, Autorenkommentare bleiben erhalten; es wird dieselbe Datei geschrieben wie über das eigene Einstellungsfenster, das Programm selbst bleibt unverändert) → Katzenprozess beenden und neu starten → Treiber neu aufbauenNeu installierte Skin-Versionen von Mver haben standardmäßig
network:false(kein UDP-Hören); die Ein-Klick-Anbindung behebt das; man kann in den Katzen-Einstellungen aber auch manuell die Netzwerksynchronisation aktivieren und den Empfangsmodus einstellenHinweis: Nur eine Mver-Instanz darf gleichzeitig den Empfangsport verwenden
Schnellstart
python -m venv .venv
.venv\Scripts\activate # Windows;macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
# 方式一:仪表盘(推荐日常使用,自动打开浏览器)
python dashboard.py # 默认隐藏窗口后台运行
python dashboard.py --stop # 停止后台仪表盘
python dashboard.py --visible # 前台调试模式(终端可见)
# 方式二:MCP stdio server(供 astrbot 拉起)
python server.py
# 方式三:只让接收模式的 Mver 恢复键鼠跟随(不开 AI)
python mver-mirror.py # 默认隐藏窗口后台运行
python mver-mirror.py --stop # 停止隐藏运行的镜像
python mver-mirror.py --visible # 前台调试模式(Ctrl+C 退出)
# 本地回归测试(自动探测 driver;或传 embedded / cdp / mver)
python test_client.pyZCode-Plugin (bongocat-notify)
Das Verzeichnis zcode-plugin/ enthält einen lokalen Plugin-Markt + Plugin, über den ZCode an diesen MCP-Server angebunden wird:
MCP-Anbindung:
.mcp.jsonregistriertserver.pyals stdio-MCP-Server (Werkzeugnamenmcp__bongo-cat__*), sodass ein Agent die Katze direkt steuern kann; der Befehl/bongo-testprüft die gesamte Kette durchTask-Benachrichtigung: Hooks steuern bei wichtigen ZCode-Ereignissen Katzenblase und Gesichtsausdruck –
Stop(Aufgabe fertig → Sternen),PermissionRequest(wartet auf Freigabe → fragend),PostToolUseFailure(Fehler → weinend),SessionStart/UserPromptSubmit(Arbeitsbeginn)Ausdrücke sind nicht fest als Index gesetzt: Jedes Mal wird die Ausdrucksliste von
get_cat_statuslive gelesen und passend über Name-Schlüsselwort gemappt; so passt es sich beim Skin-Weered automatisch an. Der Hook läuft über die HTTP-API des Dashboards (python dashboard.pymuss laufen); ist das Dashboard nicht da, wird still übersprungen – die Sitzung wird nie blockiert
Installation: ZCode → Einstellungen → Plugin-Verwaltung → Entdecken → + und lokales Marktverzeichnis zcode-plugin/ auswählen und bongocat-notify installieren (Details in zcode-plugin/bongocat-notify/README.md).
Du möchtest für ZCode / AstrBot oder einen anderen Client dein eigenes Katzen-Benachrichtigungs-Plugin entwickeln? Anbindungskanal-Wahl, Plugin-Skeleton-Vorlage, Erweiterbarkeitskonventionen für Ausdrücke und die Validierungsmethodik findest du unter Anbindungs-Entwicklungsanleitung docs/zcode-plugin-dev.md.
Claude Code-Plugin (bongocat-notify)
claude-plugin/ ist die Claude-Code-Version desselben „lokaler Markt + Plugin“-Aufbaus (funktionell gleichwertig zur ZCode-Version):
MCP-Anbindung:
.mcp.jsonregistriertserver.pyals stdio-MCP-Server (Werkzeugnamen ebenfallsmcp__bongo-cat__*);/bongo-testprüft die gesamte KetteTask-Benachrichtigung: Das Ereignismodell ist anders – Claude Code hat keine
PermissionRequest-/PostToolUseFailure-Ereignisse; Warte auf Genehmigung wird überNotificationausgedrückt (anhand von message-Schüsselwissen gefiltert), Werkfehler werden konservativ austool_responsebeiPostToolUseermittelt
Installation: claude plugin marketplace add claude-plugin/目录 → claude plugin install bongocat-notify@bongocat-local, dann nach Sitzungs-Neustart mit /mcp prüfen (Details in claude-plugin/bongocat-notify/README.md).
Codex-Plugin (bongocat-notify)
codex-plugin/ ist die OpenAI-Codex-CLI-Version desselben Plugins (funktionell gleichwertig zur ZCode-Version):
MCP-Anbindung:
.mcp.json(natives Codex-Server-Format) registriertserver.pyals stdio-MCP-Server; derbongo-test-Fertigkeit (skills/*/SKILL.md– die eigenen Prompt-Erweiterungen von Codex sind veraltet, Skills sind der offizielle Ersatz) prüft die gesamte KetteTask-Benachrichtigung: Die Codex-Hooks entsprechen den ZCode-Events fast eins zu eins –
PermissionRequestist standardmäßig vorhanden; Werkzeugfehler gibt es keinPostToolFetchFailure, sondern werden konservativ übertool_responseinPostToolUsebestimmt. Die Hooks werden über das Plugin-Manifest (.codex-plugin/plugin.json) gebündelt und laufen vollständig asynchron im Hintergrund, ohne den Turn zu blockieren
Installation: codex plugin marketplace add codex-plugin/目录 → codex plugin install bongocat-notify@bongocat-local → unter /hooks die 5 Hooks einzeln mit Trust bestätigen (Codex vertrauensprüft und führt sie sonst nicht aus) → in einer neuen Sitzung mit codex mcp list prüfen (Details in codex-plugin/bongocat-notify/README.md).
Konfiguration (config.json, über das Dashboard bearbeitbar)
Lesepriorität: Umgebungsvariablen BONGOCAT_* > config.json > Standardwerte. Bei der Erstverwendung kann config.example.json in config.json kopiert werden.
Schlüssel | Beschreibung |
| leer = automatische Erkennung; |
| cdp: Pfad zu |
| cdp: zusätzliche Kandidatenliste |
| cdp: Debug-Port, Standard 9223 |
| mver: Gefälle-Verzeichnis (enthalten) für Tastenbindung und Empfangsport |
| mver: Empfangsport; leer = aus |
| Zielhost, Standard 127.0.0.1 |
| embedded: Überschreibt die automatische Erkennung |
| Dashboard-Listenadresse, Standard 127.0.0.1:8766 |
Entsprechende Umgebungsvariablen: BONGOCAT_MCP_DRIVER, BONGOCAT_APPLICATION_PATH, BONGOCAT_CDP_PORT, BONGOCAT_MVER_DIR, BONGOCAT_MVER_PORT, BONGOCAT_MCP_HOST, BONGOCAT_MCP_CONFIG, BONGOCAT_MCP_PORT, BONGOCAT_MCP_TOKEN (mit älteren Versionen kompatibel).
Dashboard
python dashboard.py startet (öffnet den Browser automatisch) und enthält:
Statusübersicht: aktueller Treiber, Könnsmatrix (Grün = unterstützt / Grau = von der Katze nicht unterstützt), Katzenzustand (Modell/Betriebsart/Fenster), Mver-Spiegelungs-Thread, Polling alle 2 Sekunden
Treiberwahl: automatisch / embedded / cdp / mver; Umschalten speichert und baut den Treiber neu
Konfigurationseditor: visuelle Bearbeitung aller Schüssel in
config.jsonWerkzeug-Testumgebung: Direkt auf der Webseite alle Befehlen aufrufen (Ausdrucks-Dropdown, Tastendrücke, Tippen, Blase, Blasen, Fenster ein-/ausblenden,
set-chart), inklusive der letzten 200 Events
Dashboard und Stdio-Server von AstrBot halten jeweils unabhängige Treiberinstanzen vor und können parallel verwendet werden;
embedded/cdpkollidieren nicht,mverzeigt bei doppelter Spiegelung eine harmlose Überlagerung (zwei identische Statussbanken), jedoch kann die Chatblase in zwei Prozesse jeweils eine Alarmierung erhalten.
MCP-Tools (14 Tools, abgebildet auf 12 einheitliche Befehle, alle Treiber identisch)
Werkzeug | Bedeutung | embedded | cdp | mver |
| Health-Check | ✅ | ✅ | ✅ |
| Treiber/Fähigkeiten/Modellinfo/Fenstersichtbarkeit | ✅ | ✅ | ✅ |
| Ausdrücke/Gesten auflisten | ✅ | ✅ | ⚠️ erfordert Modellmaterial |
| expression (nach | ✅ | ✅ | ⚠️ erfordert Modellmaterial |
| gesture | ✅ | ✅ | ⚠️ erfordert Modellmaterial |
| Taste niederhalten/Rücknahmeanimation | ✅ | ✅ | ✅ |
| Tippen Text als Einzelzeichen | ✅ | ✅ | ✅ |
| Katzenpacke nach unten drücken | ✅ | ❌ | ❌ |
| Live2D-Parameter | ✅ | ❌ | ❌ |
| Chatballon (verschwindet nach 8 Sekunden nach der Type-Tippen automatisch; mit | ✅ | ✅ | ✅ |
| Katzenfenster ein-/ausblenden | ✅ | ✅ | ✅ |
Die Könner sind asset-bewusst: Der mver-Skin wirbt nur dann eine bestimmte Können, wenn die Expressions-/Motionsdateien im Modellverzeichnis tatsächlich existieren; andernfalls wird ehrlich gemeldet, dass es nicht unterstützt wird (so wird eine ungültig Alt-Konfiguration nicht als Auslieferum anerkannt).
Sicherheitshinweise
Alle Kanäle binden ausschließlich an den Loopback der Maschine; der eingebetteste Kanal generiert bei jedem Start ein zufälliges Bearer-Token
Der
cdp-WebView2-Debug-Port (Standard 127.0.0.1:9223) ist eine lokale Kontrollfläche; lasse eine Katze mit offenem Debug-Port nicht lang unbeaufsichtigt, wenn du sie nicht brauchst Ein Crash-Test:cdp-Übernahme startet die laufende Katze einmal neu; es kann immer nur eine Katze gesteuert werden
Projektordner
bongocat-mcp\
bongocat_mcp\ # 核心包
config.py # 统一配置(env > config.json > 默认)
detect.py # driver 探测/切换
dispatch.py # 命令调度(能力门控 + 事件日志)
drivers\ # embedded_http / cdp_webview2 / mver_udp / win32_utils
bubble\overlay.py # bridge 自绘聊天气泡窗
server.py # MCP stdio 入口
dashboard.py # FastAPI 仪表盘
web\index.html # 仪表盘前端(原生单页,无构建)
mver-mirror.py # Mver 独立镜像进程
zcode-plugin\ # ZCode 插件(本地市场 + bongocat-notify)
claude-plugin\ # Claude Code 插件(本地市场 + bongocat-notify)
codex-plugin\ # Codex CLI 插件(本地市场 + bongocat-notify)
docs\ # 需求/架构/接入文档;验证截图为本地存档不入库Mver-UDP-Protokoll (Reverse-Engineering-Notizen)
312-Byte-Vollstateframe, 60 fps am Stück gesendet, kein Handshake
bytes[0..255]: Tastenstatus per VK-Index;0x81=gedrückt (sent during the whole press durable durchgehend),0x80=Loslassungs-Kante,0x00=leer; VK0x01/0x02=Maus links/rechts14 float-W Holds:**,
fl[8]=0.8×**tycoon x**/Screen width,fl[9]=0.8 y/screenConst slot
0x90/0xF0/0xF3/0xF6/0xFB = 0x01Tastenkombinationen müssen zeitlich abgestuft gedrückt werden (Modifier zuerst halten ≥0,3 Sekunden, dann triggende Taste drücken)
mode: 1=Standard, 2=Mstep, 3=Gamepad (from BongoCatMverUI source)
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
- AlicenseAqualityDmaintenanceDrive Electron apps from AI agents via MCP - click, type, drag, screenshot, eval JS, and more.39233MIT
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude Code and Cursor to use multiple AI models (Gemini, GPT, Grok, DeepSeek, Kimi, Ollama) via a unified chat tool with conversation memory.3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables LLMs to see and control a computer — screen capture, window management, mouse and keyboard automation — with a structured plan-execute workflow for complex desktop automation.GPL 3.0
- FlicenseAqualityAmaintenanceCross-platform desktop automation MCP server that lets AI agents capture screenshots, run OCR with UI-element classification, control mouse/keyboard, and launch programs on Linux, macOS, and Windows.20
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
MCP server for AI dialogue using various LLM models via AceDataCloud
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/emicyx/bongocat-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server