Skip to main content
Glama
emicyx

bongocat-mcp

by emicyx

bongocat-mcp

Единый контроллер, который оборачивает различных «BongoCat-котиков» в MCP tools — полностью развязан с репозиторием BongoCat, позволяет MCP-клиентам/LLM (например, astrbot) активно управлять анимациями нажатий / печатью / выражениями / чат-пузырями котика, без перекомпиляции кота. В комплекте локальная веб-панель для просмотра состояния и редактирования конфигурации.

Полная документация по дизайну: требования docs/requirements.md · архитектура docs/architecture.md.

Поддерживаются три вида котиков (автоопределение, возможна принудительная настройка)

driver

Целевой кот

Принцип

Предварительные требования

embedded

Собранная вручную версия BongoCat (встроенный канал управления)

Локальный HTTP-канал управления (127.0.0.1 случайный порт + Bearer token)

Достаточно запустить свою сборку, автоматически находит mcp-server.json

cdp

Готовые сборки на Tauri: официальные release, переупакованные версии скинов (фронтенд не меняется, меняются только ресурсы моделей)

Инъекция WebView2 CDP: запуск готовой сборки с портом отладки → Runtime.evaluate вызывает `TAURI_INTERNALS.invoke('plugin:event | emit')` для синтеза нативных событий

Настройка не требуется; если кот запущен, но порт отладки не открыт — автоматический перезапуск и перехват управления (одно кратковременное прерывание); путь к exe можно указать в конфигурации

mver

Готовые сборки BongoCatMver: скиновые версии C++/SFML (с ручной правкой img/ + config.json)

Эмпирически реверс-инженеренный UDP-протокол: прозрачный зеркальный слой (60fps пересылка реальных клавиатуры/мыши + наложение AI)

В Mver включена сетевая синхронизация и выбран режим приёма; настройка mver_dir позволяет резолвить привязки скина

Цена режима приёма mver и зеркальный слой: после включения сетевого приёма Mver игнорирует локальные клавиатуру и мышь и рендерит только сетевые пакеты. Поток отправки драйвера mver с 60fps считывает реальные клавиатуру/мышь (GetAsyncKeyState/GetCursorPos) и пересылает, поведение кота совпадает с локальным режимом (задержка около одного кадра); AI-команды накладываются как оверлей. После остановки MCP/зеркального процесса кот перестаёт реагировать на клавиатуру и мышь (перезапуск восстанавливает); одновременно может работать только один экземпляр Mver.

Related MCP server: Vox MCP

Автоматическое подключение нового кота (mver)

  • Автоопределение: панель состояния каждые 5 секунд опрашивает запущенные процессы Mver; если настроенный кот не запущен (или не настроен), а запущен другой, mver_dir автоматически переключается на работающего кота и driver пересоздаётся (в журнале событий видны записи переключения)

  • Подключение в один клик: кнопка «🚀 Подключить нового Mver-кота в один клик» на панели выполняет всё автоматически — находит запущенного кота → на текстовом уровне переписывает его config.json, включая сетевую синхронизацию (режим приёма, сохраняя авторские комментарии; пишется тот же файл, что и через собственный интерфейс настроек кота, программа не изменяется) → перезапускает процесс кота с повышенными правами → пересоздаёт driver

  • У свежеустановленных скиновых версий Mver по умолчанию network:false (UDP не слушается); подключение в один клик это исправляет; также можно вручную включить сетевую синхронизацию в настройках кота и выбрать режим приёма

  • Примечание: одновременно только один экземпляр Mver может занимать порт приёма

Быстрый старт

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 (bongocat-notify)

zcode-plugin/ — это локальный маркет плагинов + плагин, который подключает Zcode к этому MCP-серверу:

  • Подключение MCP: .mcp.json регистрирует server.py как stdio-MCP-сервер (имена инструментов mcp__bongo-cat__*), агент может напрямую управлять котом; команда /bongo-test выполняет сквозную самопроверку

  • Оповещения о задачах: hooks на ключевых событиях Zcode запускают пузырь и смену выражения кота — Stop (задача выполнена → звёздные глаза), PermissionRequest (ожидание одобрения → вопрос), PostToolUseFailure (ошибка → плач), SessionStart / UserPromptSubmit (начало работы)

  • Выражения не зашиты индексами: каждый раз список выражений из get_cat_status читается в реальном времени и сопоставляется по ключевым словам в названиях, при смене скина адаптируется автоматически; hook работает через HTTP API панели (нужно, чтобы python dashboard.py работал), если панель недоступна — молча пропускает, никогда не блокирует сессию

Установка: Zcode → Настройки → Управление плагинами → Обнаружить → + добавить локальную директорию маркета zcode-plugin/, установить bongocat-notify (подробности в zcode-plugin/bongocat-notify/README.md).

Хотите разработать собственный плагин оповещений для кота для ZCode / AstrBot или другого клиента? Выбор канала подключения, шаблон каркаса плагина, соглашение о расширяемости выражений и методология верификации — в руководстве по разработке плагинов docs/zcode-plugin-dev.md.

Плагин Claude Code (bongocat-notify)

claude-plugin/ — это версия того же «локального маркета + плагина» для Claude Code (функционально эквивалентна версии ZCode):

  • Подключение MCP: .mcp.json регистрирует server.py как stdio-MCP-сервер (имена инструментов те же mcp__bongo-cat__*), команда /bongo-test — сквозная самопроверка

  • Оповещения о задачах: модель событий отличается — в Claude Code нет событий PermissionRequest / PostToolUseFailure; ожидание одобрения выражается через Notification (по ключевым словам message фильтруются уведомления о простое), ошибки инструментов консервативно определяются по tool_response из PostToolUse

Установка: claude plugin marketplace add claude-plugin/目录claude plugin install bongocat-notify@bongocat-local, после перезапуска сессии проверьте через /mcp (подробности в claude-plugin/bongocat-notify/README.md).

Плагин Codex (bongocat-notify)

codex-plugin/ — версия того же плагина для OpenAI Codex CLI (функционально эквивалентна версии ZCode):

  • Подключение MCP: .mcp.json (нативный формат прямого подключения Codex) регистрирует server.py как stdio-MCP-сервер; навык bongo-test (skills/*/SKILL.md, кастомные prompts в Codex устарели, навыки — официальная замена) выполняет сквозную самопроверку

  • Оповещения о задачах: hooks Codex почти один в один соответствуют событиям ZCode — PermissionRequest является нативным событием; для ошибок инструментов нет PostToolUseFailure, они консервативно определяются по tool_response из PostToolUse; hooks поставляются вместе с манифестом плагина (.codex-plugin/plugin.json) и выполняются в фоне как async, не блокируя ход

Установка: codex plugin marketplace add codex-plugin/目录codex plugin install bongocat-notify@bongocat-localпоследовательно выдайте Trust для этих 5 hook'ов (механизм проверки доверия Codex: без доверия не выполняется) → в новой сессии проверьте через codex mcp list (подробности в codex-plugin/bongocat-notify/README.md).

Конфигурация (config.json, редактируется через панель)

Приоритет чтения: переменные окружения BONGOCAT_* > config.json > значения по умолчанию. При первом использовании можно скопировать config.example.json в config.json.

Ключ

Описание

driver

пусто = автоопределение; embedded / cdp / mver — принудительно

app_path

cdp: путь к BongoCat.exe / bongo-cat.exe

app_paths

cdp: дополнительный список кандидатов в пути

cdp_port

cdp: порт отладки, по умолчанию 9223

mver_dir

mver: каталог скина (содержит config.json), для привязки клавиш и порта приёма

mver_port

mver: порт приёма; пусто = читается из network.receive_port в config.json скина

host

целевой хост, по умолчанию 127.0.0.1

embedded_config / embedded_port / embedded_token

embedded: переопределить автообнаружение

dashboard_host / dashboard_port

адрес прослушивания панели, по умолчанию 127.0.0.1:8766

Соответствующие переменные окружения: 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 (совместимо со старыми версиями).

Панель

python dashboard.py запускает панель (автоматически открывает браузер), включает:

  • Обзор состояния: текущий driver, матрица возможностей (зелёный = поддерживается / серый = данный кот не поддерживает), состояние кота (модель/режим/окно), поток-зеркало mver, обновление по опросу каждые 2 секунды

  • Выбор драйвера: автоматически / embedded / cdp / mver, переключение сохраняется и driver пересоздаётся

  • Редактирование конфигурации: визуальное редактирование всех ключей config.json

  • Площадка для опробования инструментов: вызов всех команд прямо на веб-странице (выпадающий список выражений, нажатия, печать, пузыри, показ/скрытие окна, set-hand), с журналом последних 200 событий

Панель и stdio-сервер astrbot имеют независимые экземпляры driver и могут использоваться параллельно; embedded / cdp не конфликтуют, двойное зеркало mver — безвредное наложение (два потока одинаковых кадров состояния), чат-пузырь может быть отрисован по одному в каждом процессе.

MCP Tools (14 инструментов, отображаются на 12 единых команд, одинаковы для всех driver)

Инструмент

Описание

embedded

cdp

mver

ping

проверка работоспособности

get_cat_status

driver/capabilities/информация о модели/видимость окна

list_expressions / list_motions

список выражений/движений

⚠️ нужны ресурсы модели

set_expression(index, duration)

смена выражения (через duration секунд автоматически возврат к выражению по умолчанию, 0 = сохранять)

⚠️ нужны ресурсы модели

play_motion(motion)

воспроизвести движение

⚠️ нужны ресурсы модели

press_key / release_key

анимация нажатия/отпускания клавиши

type_text(text)

анимация печати посимвольно

set_hand(left, right)

прижать кошачьи лапки

set_parameter(id, value)

параметры Live2D

show_bubble / hide_bubble

чат-пузырь (автоматически исчезает через 8 секунд после анимации печати, duration=0 — постоянно)

set_window_visible(visible)

показать/скрыть окно кота

Возможности — с учётом активов (asset-aware): скин mver объявляет соответствующую возможность, только если в каталоге модели действительно есть файлы ресурсов выражений/движений; в противном случае честно сообщает о неподдержке (чтобы не принимать недействительные устаревшие конфиги за возможности).

Безопасность

  • Все каналы привязываются только к адресу локальной петли; канал embedded при каждом запуске получает случайный Bearer token

  • WebView2-порт отладки cdp (по умолчанию 127.0.0.1:9223) — локальная управляющая поверхность; когда не нужен, не держите кота с открытым портом отладки надолго

  • Перехват cdp перезапускает запущенного кота один раз; одновременно поддерживается только один кот

Структура проекта

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 (заметки по практическому реверс-инжинирингу)

  • Полный кадр состояния 312 байт, непрерывная отправка на 60fps, без рукопожатия

  • bytes[0..255]: состояния клавиш по индексу VK; 0x81 = нажата (отправляется непрерывно всё время удержания), 0x80 = краевой кадр отпускания, 0x00 = свободна; VK 0x01/0x02 = левая/правая кнопка мыши

  • bytes[256..311]: 14 float, fl[8]=0.8×позиция_x/ширина_экрана, fl[9]=0.8×позиция_y/высота_экрана

  • Постоянные слоты 0x90/0xF0/0xF3/0xF6/0xFB = 0x01

  • Для привязки комбинаций клавиш нужно последовательное нажатие (сначала зажать модификатор ≥0.3s, затем нажать клавишу действия)

  • mode: 1=стандартный, 2=клавиатура, 3=геймпад (из исходников BongoCatMverUI)

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