Skip to main content
Glama
VisBug MCP Bridge

VisBug MCP Bridge


Что это

Recorder-only (модель mambari/visbug-mcp): расширение не пишет в файлы проекта. VisBug меняет DOM на странице → bridge сохраняет сырые мутации → вы копируете буфер → Cursor вносит правки в код по контракту.

Было (до v0.13)

Сейчас (v0.26)

auto-apply, Actions v2, undo

Удалено (recorder-only)

«Начать запись» / «Стоп»

Не нужно — live-захват при drag

Только inline top/left

+ layout-delta + visbugSrc / src: + per-file summary

Длинный селектор

Короткий селектор + write-recipes v0.26 (before/after/snap) + auto-stamp vb-*

/visbug-apply

Не нужно — вставка буфера в чат


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 setup

npm run setup регистрирует workspace + localhost origin, запускает daemon и копирует в проект:

  • команды /visbug-mcp-start, /visbug-mcp-update;

  • rule .cursor/rules/visbug-buffer-apply.mdc — подсказка агенту при вставке буфера.

Расширения Chrome

  1. VisBug (официальный)

  2. 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 update

git pull, npm install, перезапуск daemon, копирование недостающих команд и rule во все workspace из config (без перезаписи существующих).


Как пользоваться

Рабочий цикл (v0.26)

  1. Запустите сайт на http://localhost:…, откройте в Chrome.

  2. Убедитесь, что origin зарегистрирован (/visbug-mcp-start или npm run setup).

  3. Popup: зелёная точка = daemon online.

  4. Правьте layout в VisBug (красные направляющие с px — в расширении).

  5. Popup → «Скопировать правки» → вставьте в чат Cursor.

  6. Агент правит исходники (см. apply-buffer-contract).

  7. Popup → «Очистить правки» (опционально).

Отдельная команда для apply не нужна.

Как Cursor понимает буфер

Слой

Где

Футер в буфере

Добавляется при «Скопировать» (путь к контракту)

Rule

<workspace>/.cursor/rules/visbug-buffer-apply.mdc (из setup / update)

Контракт

shared/apply-buffer-contract.md

Кратко для агента: контейнер 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 не запущен

npm run daemon:start

N правок в буфере

Накопленные мутации

Кнопка

Действие

Скопировать правки

Буфер + футер для Cursor

Очистить правки

Сброс store текущего проекта

MCP-инструменты (опционально)

Инструмент

Назначение

get_changes

Текст буфера (как в popup)

apply_changes

Пометить индексы как применённые в store (после ручного patch в коде)

clear_changes

Очистить буфер

Пример строки в буфере:

[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 tools
apply_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

    A4.3/5.0

    Scored across 3 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables 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.
      6
      ISC
    • A
      license
      Not graded
      quality
      B
      maintenance
      An 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 npm
      2
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Captures 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.
      3
      2
      -