VisBug MCP Bridge
1 line summary: This server exposes MCP tools to inspect and manage the VisBug edit buffer (captured visual changes) without writing to project files.
get_changes: return captured visual edits (selector, property, old/new value, tag, page URL) with optional type filter (style,attribute,text,node-added,node-removed).apply_changes: mark edit indices as applied in the local buffer (no file changes).clear_changes: completely clear the captured-changes buffer.
Captures visual CSS and text edits made in VisBug on localhost and applies them as structured CSS diffs to project files.
Click on "Deploy 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 Bridge apply 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.
Что это
Recorder-only (модель mambari/visbug-mcp): расширение не пишет в файлы проекта. VisBug меняет DOM на странице → bridge сохраняет сырые мутации → вы копируете буфер → Cursor вносит правки в код по контракту.
Было (до v0.13) | Сейчас (v0.26) |
auto-apply, Actions v2, undo | Удалено (recorder-only) |
«Начать запись» / «Стоп» | Не нужно — live-захват при drag |
Только inline | + |
Длинный селектор | Короткий селектор + write-recipes v0.26 ( |
| Не нужно — вставка буфера в чат |
Related MCP server: cursor-agent-mcp
Архитектура
Chrome (VisBug + расширение)
│ WebSocket ws://127.0.0.1:4844
▼
┌─────────────────┐ ~/.visbug-mcp/projects/<id>/changes.json
│ ws-daemon.js │ ◄──────────────────────────────► src/server.js (MCP stdio)
│ (фон) │ └─ опционально в Cursor
└─────────────────┘src/ws-daemon.js— WebSocket на127.0.0.1:4844. Принимает live-мутации от content-script, дедуплирует, пишет в per-project store.src/server.js— MCP (stdio):get_changes/apply_changes/clear_changes. Запись в файлы не выполняет.extension/— Chrome MV3: observer наlocalhost, popup «Скопировать» / «Очистить», красные направляющие с px.
Безопасность
WebSocket только
127.0.0.1— данные не уходят в интернетStore:
~/.visbug-mcp/projects/<projectId>/changes.jsonна вашем ПКВнешних HTTP-запросов нет
Установка
Полная инструкция: docs/INSTALL.ru.md
В Cursor: /visbug-mcp-start
git clone https://github.com/samsebeingener/visbug-mcp-ru.git
cd visbug-mcp-ru
npm install
npm run setupnpm run setup регистрирует workspace + localhost origin, запускает daemon и копирует в проект:
команды
/visbug-mcp-start,/visbug-mcp-update;rule
.cursor/rules/visbug-buffer-apply.mdc— подсказка агенту при вставке буфера.
Расширения Chrome
VisBug (официальный)
visbug-mcp —
chrome://extensions→ режим разработчика → Загрузить распакованное → папкаextension/в клоне репо
Демон (если setup не запустил)
Одна команда на Windows, macOS и Linux:
npm run daemon:startЛоги в терминале (не фон): npm run daemon.
Safari не подходит — Chrome / Arc / Brave / Edge.
MCP в Cursor (опционально)
npm run setup добавляет запись в ~/.cursor/mcp.json. Для записи VisBug MCP не обязателен — достаточно popup «Скопировать».
После правок — Reload Window в Cursor.
Обновление
npm run updategit pull, npm install, перезапуск daemon, копирование недостающих команд и rule во все workspace из config (без перезаписи существующих).
Как пользоваться
Рабочий цикл (v0.26)
Запустите сайт на
http://localhost:…, откройте в Chrome.Убедитесь, что origin зарегистрирован (
/visbug-mcp-startилиnpm run setup).Popup: зелёная точка = daemon online.
Правьте layout в VisBug (красные направляющие с px — в расширении).
Popup → «Скопировать правки» → вставьте в чат Cursor.
Агент правит исходники (см. apply-buffer-contract).
Popup → «Очистить правки» (опционально).
Отдельная команда для apply не нужна.
Как Cursor понимает буфер
Слой | Где |
Футер в буфере | Добавляется при «Скопировать» (путь к контракту) |
Rule |
|
Контракт |
Кратко для агента: контейнер vs ребёнок, фильтр шума VisBug, bake left/top/transform, не копировать left 1:1 в transform.
Несколько проектов
Bridge сопоставляет точный origin с workspace. Пример: localhost:3001 → Next, localhost:3002 → static HTML. Незарегистрированный origin — запись блокируется.
Popup
Индикатор | Значение |
🟢 Bridge подключён | Можно править в VisBug |
🔴 Daemon не запущен |
|
| Накопленные мутации |
Кнопка | Действие |
Скопировать правки | Буфер + футер для Cursor |
Очистить правки | Сброс store текущего проекта |
MCP-инструменты (опционально)
Инструмент | Назначение |
| Текст буфера (как в popup) |
| Пометить индексы как применённые в store (после ручного patch в коде) |
| Очистить буфер |
Пример строки в буфере:
[0] section.hero-section … > h1… → стиль: left = -163px (было: не задано)Техническое поведение
Live-захват + layout-delta (v0.14)
Content-script пишет inline-мутации VisBug. При отпускании drag дополнительно:
[#method-quote] → смещение: Δx=0px Δy=-65px (viewport 1440×900)Δ — разница getBoundingClientRect() до/после drag; не зависит от того, писал ли VisBug только top без left. Агент: apply-buffer-contract.md.
Auto-stamp (v0.26)
Если у элемента, получившего записанную мутацию, нет ни id, ни data-vb*, content-script сам ставит ему data-visbug-id="vb-<tag>-<NN>" (например vb-div-01) — атрибут вне фильтра обсервера, петли нет. В буфере появляется секция stamps: (vb-div-01 → исходный DOM-path), рецепт идёт на стабильный #vb-div-01 с confidence high и warning stamp-pending. При первом apply агент обязан перенести этот id в исходный HTML (и использовать #vb-* в CSS) — с этого момента цель стабильна навсегда, без ручной разметки. Подробности: §11 apply-buffer-contract.md.
Store (v2)
~/.visbug-mcp/projects/<projectId>/changes.json:
{
"version": 2,
"workspace": "/abs/path/to/site",
"changes": [ … ]
}Парсер и шум
src/parser.js — дедуп по selector|type|property, фильтр overlay #visbug-mcp-guides-root и UI VisBug. Сырые left/top/transform не переводятся автоматически — bake делает агент по контракту.
Полезные команды
npm run health # daemon, extension version, config
npm run setup # первичная настройка + rule в workspace
npm run update # git pull + sync commands/rule
npm run daemon:start # фоновый демон (Windows / macOS / Linux)
npm run daemon # демон на переднем плане (логи)
npm run daemon:watch # разработка с --watch
npm test # unit-тестыСтруктура проекта
visbug-mcp-ru/
├── src/
│ ├── ws-daemon.js # WebSocket, буфер
│ ├── server.js # MCP stdio
│ ├── parser.js # мутации → changes, формат буфера
│ ├── project-store.js # per-project store v2
│ └── config.js
├── extension/ # Chrome: content-script, popup, guides
├── shared/
│ └── apply-buffer-contract.md # контракт для Cursor-агента
├── prompts/
│ └── buffer-for-cursor.md
├── .cursor/
│ ├── commands/ # visbug-mcp-start, visbug-mcp-update
│ └── rules/ # visbug-buffer-apply.mdc → копируется в workspace
├── scripts/
│ ├── setup.mjs
│ ├── update.mjs
│ ├── sync-cursor-artifacts.mjs
│ ├── start-ws-daemon.mjs
│ ├── start-ws-daemon.sh
│ └── start-ws-daemon.ps1
├── docs/
│ └── INSTALL.ru.md
└── test/Roadmap
Идеи auto-apply, layout-solver — в архиве спецификаций (не в репо). Актуальные планы: точность записи (transition, keyboard, JS-inline) и предсказуемость применения через Cursor.
Что на русском
Popup расширения
Строки буфера («стиль», «было», «текст»)
Описания MCP-инструментов
Лицензия и upstream
Разработка Никита Куликов на базе идей mambari/visbug-mcp.
VisBug — GoogleChromeLabs/ProjectVisBug.
Available Tools
3 toolsapply_changesA
Помечает правки как применённые в буфере (~/.visbug-mcp/changes.json). Файлы проекта не меняет — их пишет auto-apply после «Стоп» или вы через /visbug-apply.
Inputs: ids.
clear_changesA
Полностью очищает буфер захваченных правок.
Inputs: no named parameters.
get_changesA
Возвращает визуальные правки, захваченные VisBug на localhost. Для каждой записи: CSS-селектор, свойство, старое и новое значение, HTML-тег, URL страницы.
Inputs: filter.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_changes retrieves captured changes, apply_changes marks them as applied, and clear_changes empties the buffer. There is no overlap or ambiguity between them.
All tool names follow a consistent verb_noun pattern with underscores: get_changes, apply_changes, clear_changes. The verbs are imperative and the noun is uniform, providing a predictable and clear naming scheme.
With only 3 tools, the set is perfectly scoped for managing a single buffer of visual changes. Each tool serves a necessary and distinct function, and no tool feels extraneous or missing for this focused purpose.
The tool set covers the core operations for managing the changes buffer: reading, marking as applied, and clearing. While there is no tool to revert individual changes or directly apply them to files, those functions are intentionally handled externally, making the set complete for its defined scope.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Visual regression testing over MCP: upload screenshots, review diffs, approve. No CI needed.
Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.
Edit and publish your FramerToNextJS sites (converted Framer or AI-built) from Claude, Cursor or Codex. 19 tools: read pages, rewrite copy, restyle elements, add sections and pages, design Studio sites, manage CMS collections and items, then publish to your own host. OAuth with a read-only option, and MCP runs no model on FNJ's side. Requires an FNJ plan (Lifetime or any AI builder plan).
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables Cursor (MCP client) to interact with an active Figma document through a local WebSocket bridge and Figma plugin, providing tools to read and modify canvas elements like text and frames.6ISC
- AlicenseNot gradedqualityDmaintenanceMCP bridge from OpenCode to Cursor agent CLI, enabling code review, debugging, and planning via Cursor cloud.13 npmMIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that captures rendered UI, diagnoses design tells and consistency drift, and generates redesign diffs from natural language art direction, all within Cursor.7 npm2MIT
- FlicenseAqualityDmaintenanceCaptures visual changes made with VisBug in the browser and exposes them to Claude Code via MCP, allowing developers to apply design modifications to source files directly from natural language.32-