bongocat-mcp
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., "@bongocat-mcpmake the cat celebrate and show 'Build OK!'"
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.
bongocat-mcp
A standalone controller that unifies various "BongoCat cats" into MCP tools—fully decoupled from the BongoCat repository, so MCP clients / LLMs such as astrbot can actively control the cat's key-press animations / typing / expressions / chat bubbles, without requiring the cat to be recompiled. Comes with a local web dashboard for viewing status and editing configuration.
Full design docs: Requirements docs/requirements.md · Architecture docs/architecture.md.
Supports three cats (auto-detected, or force-specified via config)
driver | Target cat | Principle | Prerequisites | |
| Self-compiled BongoCat (built-in control channel) | Local HTTP control channel (127.0.0.1 random port + Bearer token) | Just launch the self-compiled build; auto-discovers | |
| Tauri-based releases: official release, skin-repackaged builds (frontend unchanged, only model assets swapped) | WebView2 CDP injection: launch the release with a debug port → | emit')` to synthesize native events | No config needed; if the cat is running but the debug port is not open, auto-restarts and takes over (one brief disconnect); exe path can be specified in config |
| BongoCatMver-based releases: C++/SFML skin builds (hand-modified | Empirically reverse-engineered UDP protocol: transparent mirror layer (60fps forwarding of real keyboard/mouse + AI overlay) | Mver must have network sync enabled and set to receive mode; configuring |
Cost of mver receive mode and the mirror layer: Once Mver enables network receive, it ignores the local keyboard/mouse and only renders network packets. The mver driver's send thread reads real keyboard/mouse at 60fps (
GetAsyncKeyState/GetCursorPos) and forwards them, so the cat behaves identically to local mode (about one frame of latency); AI commands are layered on top as an overlay. If the MCP/mirror process stops, the cat loses keyboard/mouse response (restarting restores it); only one Mver instance can run at a time.
Related MCP server: Vox MCP
Auto-onboarding new cats (mver)
Auto-detection: The dashboard status poll probes for a running Mver process every 5 seconds; if the configured cat is not running (or none is configured) and another one is running, it automatically switches
mver_dirto the running cat and rebuilds the driver (switch records are visible in the event log)One-click onboarding: The dashboard's "🚀 One-click onboard new Mver cat" button does it all automatically—locate the running cat → rewrite its
config.jsonat the text level to enable network sync (receive mode, preserving author comments; this is the same file its own settings UI writes, without modifying the program itself) → restart the cat process with elevation → rebuild the driverNewly installed skin builds of Mver default to
network:false(no UDP listening); one-click onboarding fixes it; you can also manually enable network sync in the cat's settings and set it to receive modeNote: only one Mver instance can occupy the receive port at a time
Quick start
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)
The zcode-plugin/ directory is a local plugin marketplace + plugin that connects Zcode to this MCP server:
MCP integration:
.mcp.jsonregistersserver.pyas a stdio MCP server (tool namesmcp__bongo-cat__*), so agents can directly control the cat; the/bongo-testcommand does a full end-to-end self-checkTask notifications: hooks drive the cat's bubble + expression switching on key Zcode events—
Stop(task complete → starry eyes),PermissionRequest(awaiting approval → question),PostToolUseFailure(error → crying),SessionStart/UserPromptSubmit(starting work)Expressions are not hardcoded by index: each time it reads the expression list from
get_cat_statusin real time and matches by name keyword, so it auto-adapts when skins change; hooks go through the dashboard HTTP API (python dashboard.pymust stay running), and silently skip when the dashboard is absent—never blocking the session
Install: Zcode → Settings → Plugin management → Discover → + add local marketplace directory
zcode-plugin/, then install bongocat-notify (see zcode-plugin/bongocat-notify/README.md for details).
Want to develop your own cat notification plugin for ZCode / AstrBot or other clients? See Integration development guide docs/zcode-plugin-dev.md for channel selection, plugin skeleton templates, expression extensibility conventions, and validation methodology.
Claude Code plugin (bongocat-notify)
claude-plugin/ is the Claude Code version of the same "local marketplace + plugin" setup (feature-equivalent to the ZCode version):
MCP integration:
.mcp.jsonregistersserver.pyas a stdio MCP server (tool names alsomcp__bongo-cat__*); the/bongo-testcommand does a full end-to-end self-checkTask notifications: the event model differs—Claude Code has no
PermissionRequest/PostToolUseFailureevents; pending approval is expressed viaNotification(filtered by message keywords for idle prompts), and tool errors are conservatively determined fromPostToolUse'stool_response
Install: claude plugin marketplace add claude-plugin/目录 →
claude plugin install bongocat-notify@bongocat-local, then verify with /mcp after restarting the session
(see claude-plugin/bongocat-notify/README.md for details).
Codex plugin (bongocat-notify)
codex-plugin/ is the OpenAI Codex CLI version of the same plugin (feature-equivalent to the ZCode version):
MCP integration:
.mcp.json(Codex's native direct-connect server format) registersserver.pyas a stdio MCP server; thebongo-testskill (skills/*/SKILL.md—Codex custom prompts are deprecated, skills are the official replacement) does a full end-to-end self-checkTask notifications: Codex hooks map almost one-to-one to ZCode events—
PermissionRequestis a native event; tool errors have noPostToolUseFailure, so they are conservatively determined fromPostToolUse'stool_response; hooks are bundled by the plugin manifest (.codex-plugin/plugin.json), all runningasyncin the background without blocking turns
Install: codex plugin marketplace add codex-plugin/目录 →
codex plugin install bongocat-notify@bongocat-local → Trust each of the 5 hooks one by one in /hooks
(Codex trust review mechanism—untrusted hooks don't run) → verify in a new session with
codex mcp list (see codex-plugin/bongocat-notify/README.md for details).
Configuration (config.json, editable from the dashboard)
Read priority: environment variable BONGOCAT_* > config.json > defaults. On first use, copy
config.example.json to config.json.
Key | Description |
| Empty=auto-detect; |
| cdp: BongoCat.exe / bongo-cat.exe path |
| cdp: additional candidate path list |
| cdp: debug port, default 9223 |
| mver: skin directory (contains config.json), used for key bindings and receive port |
| mver: receive port; empty=read from |
| Target host, default 127.0.0.1 |
| embedded: override auto-discovery |
| Dashboard listen address, default 127.0.0.1:8766 |
Corresponding environment variables: 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 (backward compatible with older versions).
Dashboard
Start with python dashboard.py (auto-opens the browser), includes:
Status overview: current driver, capability matrix (green=supported / gray=not supported by that cat), cat status (model/mode/window), mver mirror thread, 2-second polling refresh
Driver selection: auto / embedded / cdp / mver, switching saves and rebuilds the driver
Config editing: visual editing of all config.json keys
Tool playground: call all commands directly from the web page (expression dropdown, key presses, typing, bubbles, window show/hide, set-hand), with the latest 200 event log entries
The dashboard and astrbot's stdio server each hold independent driver instances and can be used in parallel; embedded / cdp have no conflicts, dual mver mirrors are a benign overlay (two paths with identical state frames), and the chat bubble may be rendered once by each of the two processes.
MCP Tools (14 tools, mapped to 12 unified commands, consistent across all drivers)
Tool | Description | embedded | cdp | mver |
| Health check | ✅ | ✅ | ✅ |
| driver/capabilities/model info/window visibility | ✅ | ✅ | ✅ |
| List expressions/motions | ✅ | ✅ | ⚠️ requires model assets |
| Switch expression (auto-returns to default after duration seconds, 0=keep) | ✅ | ✅ | ⚠️ requires model assets |
| Play motion | ✅ | ✅ | ⚠️ requires model assets |
| Key press/release animation | ✅ | ✅ | ✅ |
| Character-by-character typing animation | ✅ | ✅ | ✅ |
| Cat paw press-down | ✅ | ❌ | ❌ |
| Live2D parameter | ✅ | ❌ | ❌ |
| Chat bubble (auto-dismisses 8 seconds after typing animation, duration=0 stays) | ✅ | ✅ | ✅ |
| Show/hide cat window | ✅ | ✅ | ✅ |
Capabilities are asset-aware: an mver skin only advertises expression/motion capabilities when the model directory actually contains the corresponding asset files; otherwise it honestly reports unsupported (to avoid treating stale leftover config as a real capability).
Security notes
All channels bind only to the local loopback address; the embedded channel uses a random Bearer token on every startup
cdp's WebView2 debug port (default 127.0.0.1:9223) is a local control surface; don't leave a cat running with the debug port open for long periods when not in use
cdp takeover restarts a running cat once; only one cat is supported at a time
Project structure
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 protocol (empirically reverse-engineered notes)
312-byte full state frame, sent continuously at 60fps, no handshake
bytes[0..255]: VK-indexed key states;0x81=pressed (sent continuously for the entire hold duration),0x80=release edge frame,0x00=idle; VK0x01/0x02= mouse left/right buttonsbytes[256..311]: 14 floats,fl[8]=0.8×cursor x/screen width,fl[9]=0.8×cursor y/screen heightConstant slots
0x90/0xF0/0xF3/0xF6/0xFB = 0x01Combo key bindings require timed pressing (hold the modifier first for ≥0.3s, then press the trigger key)
mode: 1=standard, 2=keyboard, 3=gamepad (from BongoCatMverUI source code)
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