Skip to main content
Glama
emicyx

bongocat-mcp

by emicyx

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

embedded

Selbst kompilierte BongoCat-Version (integrierter Steuerkanal)

Lokaler HTTP-Steuerkanal (127.0.0.1 zufälliger Port + Bearer-Token)

Einfach die selbst erstellte Version starten; mcp-server.json wird automatisch gefunden

cdp

Fertige Tauri-Builds: offizielle Releases, Skin-Neuverpackungen (Frontend unverändert, nur Modellress Zeit ausgetauscht)

WebView2-CDP-Injektion: fertigen Build mit Debugport starten → **TAURI_INTERNALS**.invoke('plugin:event | emit') aufrufen, um native Ereignisse zu synthetisieren

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

mver

BongoCatMver-Builds: C++/SFML-Skin-Version (manuell geändert img/ + config.json)

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 mver_dir lässt sich die Skin-Bindung auflösen

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_dir automatisch 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.json auf 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 aufbauen

  • Bei 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 umschalten

  • Hinweis: 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.py

ZCode-Plugin (bongocat-notify)

Im Verzeichnis zcode-plugin/ befindet sich ein lokaler Plugin-Markt + Plugin, mit dem Zcode diesen MCP-Server anbindt:

  • MCP-Anbindung: .mcp.json registriert server.py als STDIO-MCP-Server (Werkzeugname mcp__bongo-cat__*), sodass der Agent die Katze direkt steuern kannst; der /bongo-test-Befehl führt einen vollständigen Test über die gesamte Kette durch

  • Task-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_status live gelesen und anhand des Namens-Keywords gematcht, bei Skin-Wechselstautomatch automatisch angepasst; der Hook läuft über Dashboard-HTTP-API (python dashboard.py muss 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.json registriert server.py als STDIO-MCP-Server (Werkzeugname ebenfalls bongocat__*); der Befehl /bongo-test ist ein Self-Test über die ganze Kette

  • Task-Benachrichtigung: Das Ereignismodell unterscheidet sich – Claude Code besitzt keine PermissionRequest- / PostToolUseFailure-Ereignisse; wartende Genehmigungen werden über Notification ausgedrückt (nach message -Keywords müssen Hinweise gefiltert), Werkzeugfehler werden knapp aus tool_response von PostToolUse abgeleitet

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) registriert server.py als STDIO-MCP-Server; der bongo-test-Skill (skills/*/SKILL.md, eigene Codex-Prompts sind veraltet, Skills sind die offiziellen Nachfolger) führt über die gesamte Kette

  • Task-Benachrichtigung: Codex-Hooks entsprechen den ZCode-Ereignissen fast eins zu eins – PermissionRequest ist ein natives Ereignis; Werkzeugfehler gibt es nicht PostToolUseFailure, sofern sie konservativ aus tool_response von PostToolUse bestimmt 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-localdiese 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

driver

leer = automatische Erkennung; embedded / cdp / mver explizit setzen

app_path

cdp: Pfad zur BingoCat.exe / bongo-cat.exe

app_paths

cdp: zusätzliche Kandidate-Listenpfade

cdp_port

cdp: Debugport, Standard 9223

mver_dir

mver: Skinverzeichnis (enthält config.json), für Tastenzureibung und Empfangsport

mver_port

mver: Empfangsport; leer = aus network.receive_port der Skin-config.json lesen

host

Zielhost, Standard 127.0.0.1

embedded_config / embedded_port / embedded_token

embedded: überschreibt automatisch die automatische Erkennung

dashboard_host / dashboard_port

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

ping

die Überprüfung

get_status

Treiber/Fähigkeiten/Modellinformationen/Fensterstate✅ Verhalten

list_expressions / list_motions

Expression-/Bewegungsliste

⚠️ benötigt Modulmaterial

set_expression(index, duration)

Expression wechseln (nach duration Sekunden selbstständig zurück auf Original, 0 = beibehalten)

⚠️ benötigt Modulmaterial

play_motion(motion)

Motion abspielen

⚠️ benötigt Modulmaterial

press_key / release_key

Taste gedrückt/losgelöst

type_text(text)

Zeichen für Zeichen Tippen

set_hand(left,right)

Katze-Besamung

set_parameter(id, value)

Live-2D-Parameter

show_bubble / hide_bubble

Chatblase (verschwindet automatisch 8 Sekunden nach der Tippen-Tippen; duration=0 = aufhquadrat)

set_window_visible(visible)

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; VK 0x01/0x02 = linke/rechte Maustaste

  • bytes[256..311]: 14 floats, fl[8]=0.8×光标x/屏幕宽度, fl[9]=0.8×光标y/屏幕 Höhe

  • Konstante Slots 0x90/0xF0/0xF3/0xF6/0xFB = 0x01

  • Tastaturkombinationen 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 png table 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:

  • ping

  • get_cat_status

  • list_expressions / list_motions

  • set_expression(index, duration)

  • play_motion(motion)

  • press_key / release_key

  • type_text(text)

  • set_hand(left, right)

  • set_parameter(id, value)

  • show_bubble / hide_bubble

  • set_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

embedded

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; mcp-server.json wird automatisch erkannt

cdp

Fertige Tauri-Buils: offizielle Release, Skin-Neuverpackungen (Frontend unverändert, nur Modellressourcen getauscht)

WebView2-CDP-Injektion: Fertig-App mit Debug-Port starten → **TAURI_INTERNALS**.invoke('plugin:event | emit') aufrufen, um native Ereignisse zu synthetisieren

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

mver

BongoCatMver-Fertigversionen: C++/SFML-Skin-Version (img/ + config.json manuell angepasst)

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; mver_dir in der Konfiguration kann die Skin-Zuordnung auflösen

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_dir automatisch 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.json auf 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 aufbauen

  • Neu 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 einstellen

  • Hinweis: 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.py

ZCode-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.json registriert server.py als stdio-MCP-Server (Werkzeugnamen mcp__bongo-cat__*), sodass ein Agent die Katze direkt steuern kann; der Befehl /bongo-test prüft die gesamte Kette durch

  • Task-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_status live 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.py muss 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.json registriert server.py als stdio-MCP-Server (Werkzeugnamen ebenfalls mcp__bongo-cat__*); /bongo-test prüft die gesamte Kette

  • Task-Benachrichtigung: Das Ereignismodell ist anders – Claude Code hat keine PermissionRequest-/PostToolUseFailure-Ereignisse; Warte auf Genehmigung wird über Notification ausgedrückt (anhand von message-Schüsselwissen gefiltert), Werkfehler werden konservativ aus tool_response bei PostToolUse ermittelt

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) registriert server.py als stdio-MCP-Server; der bongo-test-Fertigkeit (skills/*/SKILL.md – die eigenen Prompt-Erweiterungen von Codex sind veraltet, Skills sind der offizielle Ersatz) prüft die gesamte Kette

  • Task-Benachrichtigung: Die Codex-Hooks entsprechen den ZCode-Events fast eins zu eins – PermissionRequest ist standardmäßig vorhanden; Werkzeugfehler gibt es kein PostToolFetchFailure, sondern werden konservativ über tool_response in PostToolUse bestimmt. 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

driver

leer = automatische Erkennung; embedded / cdp / mver erzwingen

app_path

cdp: Pfad zu bongo-cat.exe

app_paths

cdp: zusätzliche Kandidatenliste

cdp_port

cdp: Debug-Port, Standard 9223

mver_dir

mver: Gefälle-Verzeichnis (enthalten) für Tastenbindung und Empfangsport

mver_port

mver: Empfangsport; leer = aus config.json network.receive_port des Skins lesen

host

Zielhost, Standard 127.0.0.1

embedded_config/embedded_port/embedded_token

embedded: Überschreibt die automatische Erkennung

dashboard_host / dashboard_port

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.json

  • Werkzeug-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/cdp kollidieren nicht, mver zeigt 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

ping

Health-Check

get_cat_status

Treiber/Fähigkeiten/Modellinfo/Fenstersichtbarkeit

list_expressions / list_motions

Ausdrücke/Gesten auflisten

⚠️ erfordert Modellmaterial

set_expression(index, duration)

expression (nach duration Sekunden automatische Rückkehr, 0 = bleiben)

⚠️ erfordert Modellmaterial

play_motion(motion)

gesture

⚠️ erfordert Modellmaterial

press_key / release_key

Taste niederhalten/Rücknahmeanimation

set_text(text)

Tippen Text als Einzelzeichen

set_hand(left, right)

Katzenpacke nach unten drücken

set_parameter(id, value)

Live2D-Parameter

show_bubble / hide_bubble

Chatballon (verschwindet nach 8 Sekunden nach der Type-Tippen automatisch; mit duration=0 dauerhaft)

set_window_visible(visible)

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; VK 0x01/0x02=Maus links/rechts

  • 14 float-W Holds:**, fl[8]=0.8×**tycoon x**/Screen width, fl[9]=0.8 y/screen

  • Const slot 0x90/0xF0/0xF3/0xF6/0xFB = 0x01

  • Tastenkombinationen 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)

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • F
    license
    A
    quality
    A
    maintenance
    Cross-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

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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