VisBug MCP Bridge
Captures visual CSS and text edits made in VisBug on localhost and applies them as structured CSS diffs to project files.
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., "@VisBug MCP Bridgeapply my latest VisBug edits"
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.
Архитектура
Chrome (VisBug + расширение)
│ WebSocket ws://127.0.0.1:4844
▼
┌─────────────────┐ ~/.visbug-mcp/changes.json
│ ws-daemon.js │ ◄──────────────────────────────► src/server.js (MCP stdio)
│ (pm2 / фон) │ └─ запускается Cursor
│ │ по запросу
└─────────────────┘src/ws-daemon.js— автономный WebSocket-сервер. Работает в фоне (pm2 или PowerShell-скрипт). Принимает мутации от расширения и сохраняет их в~/.visbug-mcp/changes.json.src/server.js— MCP-сервер (stdio). Запускается Cursor по запросу. Читает и пишет общий файл store. WebSocket не открывает.extension/— расширение Chrome. Content-script наlocalhostнаблюдает за DOM; popup показывает статус и кнопки управления.
Безопасность
WebSocket только
ws://127.0.0.1:4844— данные не уходят в интернетХранилище только
~/.visbug-mcp/changes.jsonна вашем компьютереВнешних HTTP-запросов нет
Related MCP server: MC Figma Bridge
Установка
Полная инструкция: docs/INSTALL.ru.md
В Cursor: команда /visbug-mcp-start (файл .cursor/commands/visbug-mcp-start.md).
git clone https://github.com/samsebeingener/visbug-mcp-ru.git
cd visbug-mcp-ru
npm install
npm run setupnpm run setup — путь к проекту сайта, MCP в Cursor, демон, auto-apply после «Стоп».
Cursor Agent CLI (опционально, для сложных правок): npm run ensure-cli → agent login. На Windows ставится в %LOCALAPPDATA%\cursor-agent\agent.cmd.
1. Зависимости (ручной путь)
git clone https://github.com/samsebeingener/visbug-mcp-ru.git
cd visbug-mcp-ru
npm install2. WebSocket-демон
Windows (PowerShell):
powershell -ExecutionPolicy Bypass -File scripts/start-ws-daemon.ps1macOS / Linux (pm2):
npm install -g pm2
pm2 start src/ws-daemon.js --name visbug-ws
pm2 startup
pm2 saveДемон слушает ws://127.0.0.1:4844 и перезапускается при сбое.
3. Расширения Chrome
VisBug (официальный):
https://chromewebstore.google.com/detail/visbug/cdockenadnadldjbbgcallicgledbeoc
visbug-mcp (наше):
В адресной строке Chrome откройте:
chrome://extensionsВключите режим разработчика (переключатель справа вверху)
«Загрузить распакованное расширение»
Выберите папку
extension/внутри клона репозитория
Полный путь печатает npm run setup, пример:
C:\Users\you\projects\visbug-mcp-ru\extensionНе ищите папку по всему диску — скопируйте путь из терминала после setup или из popup visbug-mcp.
4. MCP в Cursor
Добавьте в ~/.cursor/mcp.json:
"visbug-mcp": {
"command": "node",
"args": ["C:/путь/к/visbug-mcp-ru/src/server.js"]
}После правок mcp.json — Reload Window в Cursor.
Как пользоваться
Режим «Запись» (v0.6.2+)
npm run dev→ откройте сайт наhttp://localhost:…в ChromePopup: зелёная точка (демон online) → Начать запись
Правки в VisBug (стили, текст, layout)
Стоп — завершить запись
После «Стоп» команды в чате не нужны:
auto-apply — демон сам пишет простые правки в файлы проекта (CSS, текст в
.tsx)fallback LLM — если что-то не применилось и установлен
agent, headless Cursor CLI добивает остаток
Логи: ~/.visbug-mcp/auto-apply.log, ~/.visbug-mcp/agent-runs.log
Важно: жмите Стоп до закрытия VisBug.
Запасной путь (ручной)
Скопировать правки в popup или MCP
get_changes→apply_changesв CursorКоманда
/visbug-applyв проекте с.cursor/commands/(если auto-apply не добил всё)
Цикл записи: «Начать запись» (буфер очищается) → правки в VisBug → «Стоп» → snapshot diff → auto-apply в файлы.
Popup Chrome
Индикатор | Значение |
🟢 Подключено к MCP-серверу | Демон онлайн |
🔴 MCP-сервер не запущен | Перезапустите |
✓ Запись в файлы после Стоп | auto-apply включён, workspace задан |
○ CLI agent — не нужен | Норма: CSS уже пишется без CLI |
✓ CLI agent (доп.) | Fallback LLM для сложных правок |
| Неприменённых изменений |
Кнопка | Действие |
Скопировать правки | Копирует форматированный список в буфер обмена |
Очистить правки | Сбрасывает store и storage VisBug |
MCP-инструменты
get_changes
Возвращает захваченные визуальные правки (ещё не применённые).
Параметры:
filter (опционально): "style" | "attribute" | "text" | "node-added" | "node-removed"Пример вывода:
[0] .card > h2 → стиль: font-size = 18px (было: 16px)
[1] .btn--primary → стиль: background = rgb(59, 130, 246) (было: rgb(99, 102, 241))
[2] #hero-title → текст: «Новый заголовок» (было: «Старый заголовок»)apply_changes
Помечает правки как применённые в буфере (после того как вы или auto-apply уже записали их в исходники).
Параметры:
ids (опционально): массив индексов — пусто = пометить все непомеченныеclear_changes
Полностью очищает буфер.
Техническое поведение
Режим «Запись» (snapshot, v0.2+)
Live-мутации выключены намеренно — иначе VisBug при перезагрузке страницы снова накатывает старые правки и засоряет буфер.
«Начать запись» — очистка буфера + снимок DOM «до» (вся страница /
main)Правки в VisBug
«Стоп» — снимок «после», diff →
changes.jsonauto-apply.jsпишет простые CSS/текст в workspaceОстаток —
/visbug-applyв Cursor (без терминала,spawnCli: false)
Дедупликация
Парсер (src/parser.js) хранит Map (seen) по ключу selector|type|свойство. Если одно свойство менялось несколько раз — сохраняется только последнее значение.
Персистентность (file store)
Правки пишутся в ~/.visbug-mcp/changes.json после «Стоп» (snapshot diff). Это общий источник правды между демоном и MCP-сервером.
{
"changes": [
{
"type": "style",
"selector": ".card > h2",
"property": "font-size",
"oldValue": "16px",
"newValue": "18px",
"tag": "H2",
"url": "http://localhost:3001/",
"timestamp": 1711234567890,
"applied": false
}
]
}Фильтрация шума
Парсер автоматически игнорирует:
внутренние селекторы VisBug (
#vibe-annotations-root,vis-bugи т.д.)scoped CSS-переменные Vue (
--dc13a441-…)классы Vue Router (
router-link-active, transitions)мутации
node-added/node-removed(рендер Vue)длинные начальные тексты (дамп первого рендера)
атрибуты
contenteditable(внутреннее использование VisBug)
Полезные команды
# Проверка установки
npm run health
# Cursor Agent CLI (fallback LLM)
npm run ensure-cli
agent login
# Статус демона (pm2)
pm2 status visbug-ws
# Логи в реальном времени
pm2 logs visbug-ws
# Перезапуск
pm2 restart visbug-ws
# Разработка с автоперезагрузкой
npm run daemon:watch
# Очистить store вручную
echo '{"changes":[]}' > ~/.visbug-mcp/changes.jsonСтруктура проекта
visbug-mcp-ru/
├── assets/
│ ├── cover-banner.png # обложка README
│ └── social-preview.jpg # превью при шаринге (копия баннера)
├── src/
│ ├── ws-daemon.js # WebSocket-демон (фон)
│ ├── server.js # MCP stdio (Cursor)
│ ├── auto-apply.js # запись правок в файлы без LLM
│ ├── auto-agent.js # fallback: headless agent после auto-apply
│ ├── cli-resolver.js # поиск agent / agent.cmd (Windows)
│ └── parser.js # парсинг, дедупликация, формат
├── extension/
│ ├── manifest.json # Chrome Manifest v3
│ ├── content-script.js # DOM + WebSocket-клиент
│ ├── popup.html # интерфейс popup (RU)
│ ├── popup.js
│ └── background.js
├── scripts/
│ ├── setup.mjs # npm run setup
│ ├── ensure-agent-cli.mjs # npm run ensure-cli
│ ├── health-check.mjs # npm run health
│ └── start-ws-daemon.ps1 # демон на Windows
├── README.md # этот файл
├── README.ru.md # краткая версия
└── FORK.ru.md # заметки о форкеЧто переведено на русский
Popup расширения Chrome
Описания MCP-инструментов и ответы сервера
Формат строк в
get_changesи буфере обмена («было», «текст», «CSS»)
Лицензия и upstream
Основано на mambari/visbug-mcp. VisBug — GoogleChromeLabs/ProjectVisBug.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/samsebeingener/visbug-mcp-ru'
If you have feedback or need assistance with the MCP directory API, please join our Discord server