ofershap/real-browser-mcp

ofershap/real-browser-mcp

от ofershap
Управляет вашим реальным Chrome: кликает, заполняет формы, снимает скриншоты и проверяет результат. Работает с вашими сессиями и корпоративным SSO.

Real Browser MCP

real-browser-mcp

Agentic browsers give agents a new browser. Coding agents need yours.

MCP + Chrome extension for the Chrome you already have open:
cookies, SSO, staging sessions, the bug you already reproduced.

Chrome Extension   MCP Server   Add to Cursor   Agent Rules

CI npm version npm downloads License: MIT Agent Plugins TypeScript

Demo


Everyone is building "agentic browsers." Most of them hand the agent a new browser: headless Chromium, a cloud VM, a clean profile with no cookies.

That is the wrong tool for the coding loop.

You ship a fix. The agent says "done, please verify." You already have Chrome open on staging, past SSO, on the exact page that breaks. The agent wrote the code. It could verify it there. It just cannot see that browser.

real-browser-mcp is the bridge: a local MCP server plus a Chrome extension over localhost WebSocket. Your agent talks MCP. Your real Chrome executes. Sessions stay on your machine.

This is not Playwright with a fresh profile. Not a hosted agent browser. Not CDP remote-debugging bolted onto your default Chrome profile (Chrome 136+ blocks that path for good security reasons).

Часто задаваемые вопросы

Инструменты были проиндексированы:
browser_click

Кликает на элемент на странице, используя ref из snapshot или CSS-селектор.

Параметры
  • buttonenum
  • doubleClickboolean
  • refstring

    Ссылка на элемент из снимка (например, «e12»)

  • selectorstring

    CSS-селектор для элемента

browser_click_text

Кликнуть по элементу по его видимому текстовому содержимому. Работает с выпадающими списками, порталами и наложениями React, которые могут не отображаться в снимках. Безопасен для CSP (без eval). Предпочитает самый глубокий подходящий элемент.

Параметры
  • exactboolean

    Требуется точное совпадение вместо подстроки (по умолчанию false)

  • indexnumber

    Какой вариант выбрать, если их несколько (индексация с нуля, по умолчанию 0).

  • textstringобязательный

    Текст для сопоставления с содержимым элемента (первая строка)

browser_console

Читает сообщения консоли (log, warn, error) из браузера

Параметры
  • clearboolean

    Очищайте сообщения после прочтения

browser_drag

Перетаскивает из одного элемента или позиции в другую. Использует события мыши CDP для надёжного перетаскивания. Принимает либо refs/selectors, либо явные координаты x,y.

Параметры
  • endRefstring

    Ref элемента, на который нужно перетащить

  • endSelectorstring

    CSS-селектор элемента, к которому нужно перетащить

  • endXnumber

    Конечная X-координата (если не используется ref/selector)

  • endYnumber

    Конечная координата Y (если не используется ref/selector)

  • startRefstring

    Ref элемента, от которого перетаскивают

  • startSelectorstring

    CSS-селектор элемента, из которого нужно перетаскивать

  • startXnumber

    Начальная координата X (если не используется ref/selector)

  • startYnumber

    Начальная координата Y (если не используется ref/selector)

  • stepsnumber

    Количество промежуточных шагов перемещения мыши

browser_evaluate

Выполняет JavaScript на странице и возвращает результат. Используйте для DOM-запросов, чтения состояния страницы или любых операций, не охваченных другими инструментами.

Параметры
  • expressionstringобязательный

    Выражение или код JavaScript для выполнения в контексте страницы.

browser_fill_form

Заполняет несколько полей формы за один вызов. Поддерживает текстовые поля, выпадающие списки, чекбоксы и элементы contentEditable. Сокращает количество обращений по сравнению с вызовом browser_type для каждого поля по отдельности. При необходимости отправляет форму после заполнения.

Параметры
  • fieldsobject[]обязательный

    Массив полей для заполнения

  • submitboolean

    Отправляет форму после заполнения всех полей.

browser_find

Находит элементы на странице с помощью естественного языка (например, "кнопка входа", "поле поиска"). Возвращает ссылки, которые можно использовать с click/type.

Параметры
  • limitnumber

    Максимум возвращаемых совпадений

  • querystringобязательный

    Описание того, что нужно найти.

browser_handle_dialog

Обрабатывает диалоговые окна JavaScript (alert, confirm, prompt). Диалоговые окна блокируют взаимодействие со страницей, пока их не обработают.

Параметры
  • actionenumобязательный

    Примите или отклоните диалоговое окно.

  • promptTextstring

    Текст для ввода в диалоги prompt()

browser_hover

Наведение курсора на элемент вызывает всплывающие подсказки, выпадающие меню или состояния наведения.

Параметры
  • refstring

    Ссылка на элемент из снимка.

  • selectorstring

    CSS-селектор для элемента

browser_navigate

Перейти по URL в активной вкладке браузера

Параметры
  • urlstringобязательный

    URL для перехода

  • waitUntilenum

    Когда считать навигацию завершенной

browser_network

Читать сетевые запросы, сделанные страницей. Фильтровать по шаблону URL.

Параметры
  • clearboolean

    Очистить запросы после прочтения.

  • filterstring

    URL regex-шаблон для фильтрации запросов

browser_press_key

Нажимает клавишу или комбинацию клавиш (Enter, Escape, Tab, ArrowDown и т.д.). Поддерживает модификаторы, такие как Ctrl+A, Cmd+C.

Параметры
  • keystringобязательный

    Название клавиши (например, "Enter", "Escape", "Tab", "ArrowDown", "a")

  • modifiersenum[]

    Удерживаемые клавиши-модификаторы

  • refstring

    Ссылка на элемент для фокусировки перед нажатием.

  • selectorstring

    CSS-селектор для фокусировки перед нажатием.

browser_run_action

Запускает самодостаточный объект действия JavaScript в контексте страницы через CDP. Код должен быть выражением, которое вычисляется в объект с методом execute(params). Возвращает результат действия напрямую. Обходит ограничения CSP.

Параметры
  • actionParamsobject

    Параметры для передачи в функцию execute() действия

  • codestringобязательный

    Выражение на JavaScript, которое даёт объект действия с функцией execute(params). Например: ({ name: "my-action", execute: function(p) { return { content: [{ type: "text", text: document.title }] }; } })

browser_screenshot

Захватывает снимок экрана видимой области страницы

Параметры
  • formatenum
  • qualitynumber

    Качество JPEG (игнорируется для PNG)

browser_scroll

Прокручивает страницу или элемент. Поддерживает сдвиги в пикселях, прокрутку к элементам и именованные позиции (верх/низ). Работает с виртуальными контейнерами прокрутки, которые используются в социальных сетях.

Параметры
  • amountnumber

    Пиксели для прокрутки

  • directionenum
  • positionenum

    Прокручивает к началу или концу страницы.

  • selectorstring

    CSS-селектор контейнера прокрутки (для виртуальной прокрутки)

  • toElementstring

    Ref или CSS-селектор для прокрутки в область видимости.

browser_select

Выбирает опцию из выпадающего списка (dropdown/select element).

Параметры
  • indexnumber

    Индекс выбираемой опции (с нуля)

  • labelstring

    Текст подписи параметра для выбора

  • refstring

    Ссылка на элемент из снимка.

  • selectorstring

    CSS-селектор для элемента select

  • valuestring

    Значение параметра для выбора

browser_snapshot

Получает снимок дерева доступности страницы. Возвращает ссылки на элементы, которые вы можете использовать с click, type и другими инструментами. Используйте компактный режим (по умолчанию) для меньшего вывода - только интерактивные элементы.

Параметры
  • compactboolean

    Когда значение true (по умолчанию), возвращаются только интерактивные элементы с минимальной вложенностью. Установите false для полного дерева.

  • selectorstring

    CSS selector для ограничения области снимка

browser_tabs

Управляет вкладками браузера: перечисляет, создаёт, закрывает или фокусирует

Параметры
  • actionenumобязательный

    Действие вкладки

  • tabIdnumber

    ID вкладки для закрытия/фокусировки

  • urlstring

    URL для создания

browser_text

Извлекает неформатированное текстовое содержимое со страницы или из указанного элемента

Параметры
  • maxLengthnumber

    Максимальная длина возвращаемого текста.

  • selectorstring

    Тут всё зависит от того, чем вы парсите, но суть одна — вы просто берёте селектор, который выделяет нужный контейнер, и уже из него вытаскиваете текст. Если коротко: css /* конкретный элемент */ #article-content /* класс */ .product-description /* вложенность */ .main .post-body > p /* несколько элементов сразу */ h1, h2, .summary В Puppeteer/Playwright это выглядит так: js // вытащить текст из конкретного блока const text = await page.$eval('.product-description', el => el.textContent); // или через locator const text = await page.locator('.product-description').innerText(); В Cheerio: js const text = $('.product-description').text(); Если нужно вытащить только текст без вложенных элементов — используйте innerText вместо textContent, либо вручную фильтруйте дочерние узлы. Если задача — ограничить область извлечения, просто оберните всё в один селектор-контейнер и работайте с ним: css main .content-wrapper А если нужно исключить какие-то элементы внутри (например, убрать навигацию или футер), используйте :not(): css .content-wrapper :not(nav) :not(.ads) Если уточните, чем именно парсите и что за страница — подскажу точнее.

browser_type

Введите текст в элемент ввода.

Параметры
  • clearboolean

    Очистите поле перед вводом.

  • refstring

    Ссылка на элемент из снимка.

  • selectorstring

    CSS-селектор для input

  • textstringобязательный

    Текст для ввода.

browser_upload_file

Загружает файл через элемент ввода файла. Использует CDP DOM.setFileInputFiles - работает даже на страницах со строгим CSP. Укажите локальный путь к файлу и либо ref из snapshot, либо CSS-селектор, нацеленный на поле выбора файла, либо пропустите оба, чтобы автоматически найти первый input[type="file"].

Параметры
  • filePathstring

    Путь к локальному файлу для загрузки (один файл)

  • filesstring[]

    Массив локальных путей к файлам для загрузки (несколько файлов)

  • refstring

    Ссылка на элемент из снимка (например, «e12»)

  • selectorstring

    # CSS-селекторы для элемента file input ## Основной селектор css input[type="file"] Это самый прямой и надёжный способ выбрать файловый input. ## Стилизация кнопки выбора файла css input[type="file"]::file-selector-button Псевдоэлемент ::file-selector-button стилизует саму кнопку «Выберите файл». Это работает в современных браузерах. css input[type="file"]::file-selector-button { background: #4CAF50; color: white; padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; } ## Состояния кнопки css input[type="file"]::file-selector-button:hover { background: #45a049; } input[type="file"]::file-selector-button:active { background: #3d8b40; } input[type="file"]::file-selector-button:disabled { opacity: 0.5; cursor: not-allowed; } ## Стилизация текста рядом с кнопкой Текст, который показывает имя выбранного файла, стилизуется через сам input: css input[type="file"] { color: #333; font-size: 14px; } ## Состояния самого input css input[type="file"]:hover { /* наведение */ } input[type="file"]:focus { /* фокус */ } input[type="file"]:disabled { /* отключён */ } input[type="file"]:required { /* обязательный */ } input[type="file"]:optional { /* необязательный */ } ## Валидация css input[type="file"]:valid { border-color: green; } input[type="file"]:invalid { border-color: red; } input[type="file"]:user-invalid { border-color: red; } :user-invalid — новое, более семантичное состояние: срабатывает только после того, как пользователь реально взаимодействовал с полем и оставил его в невалидном состоянии. ## Комбинированные селекторы css /* Только обязательные файловые инпуты */ input[type="file"]:required::file-selector-button { background: #ff9800; } /* Файловый инпут внутри формы с классом .upload */ .upload input[type="file"]::file-selector-button { border-radius: 0; } ## Ограничения - ::before и ::after на input[type="file"] не работают — это replaced element. - Псевдокласс :placeholder-shown неприменим — у файловых инпутов нет placeholder. - В Safari и старых версиях Firefox ::file-selector-button поддерживается хуже, чем в Chrome и Edge. Для старых Safari используют ::-webkit-file-upload-button как фолбэк: css input[type="file"]::-webkit-file-upload-button { /* стили для старых Safari */ } input[type="file"]::file-selector-button { /* стили для современных браузеров */ } Если нужен полностью кастомный вид, проще скрыть нативный input и показать свою кнопку через label с for, но тогда теряется семантика и доступность.

browser_wait

Ожидание условия: появление элемента, исчезновение элемента или фиксированная задержка. Полезно для SPA и динамического контента.

Параметры
  • delaynumber

    Фиксированная задержка в миллисекундах (игнорирует селектор)

  • selectorstring

    CSS-селектор для ожидания

  • stateenum

    Подождите, пока элемент не станет видимым, скрытым или присоединенным к DOM.

  • timeoutnumber

    Максимальное время ожидания в мс.

1.3.0основная
1.2.1
1.2.0
1.1.0
1.0.0
0.1.3
0.1.2
0.1.1
0.1.0

Выберите клиент, чтобы установить ofershap/real-browser-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"ofershap-real-browser-mcp-m3tw3wwp6m\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"real-browser-mcp\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add ofershap-real-browser-mcp-m3tw3wwp6m -- npx -y real-browser-mcp

Либо через JSON-конфиг:

claude mcp add-json ofershap-real-browser-mcp-m3tw3wwp6m "{\"command\":\"npx\",\"args\":[\"-y\",\"real-browser-mcp\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add ofershap-real-browser-mcp-m3tw3wwp6m -- npx -y real-browser-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.ofershap-real-browser-mcp-m3tw3wwp6m]
command = "npx"
args = ["-y", "real-browser-mcp"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите ofershap/real-browser-mcp, а в поле команды запуска — строку ниже:
npx -y real-browser-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например ofershap-real-browser-mcp-m3tw3wwp6m.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: ofershap-real-browser-mcp-m3tw3wwp6m
    command: npx
    args:
      - "-y"
      - "real-browser-mcp"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "ofershap-real-browser-mcp-m3tw3wwp6m": {
      "command": "npx",
      "args": [
        "-y",
        "real-browser-mcp"
      ]
    }
  }
}

Похожие MCP-сервера

automatalabs/mcp-server-playwright

automatalabs/mcp-server-playwright

от automata-labs-team

Управляет реальным браузером через Playwright: открывает сайты, кликает по элементам, заполняет формы, делает скриншоты и выполняет JavaScript.

JavaScript⭐ 297
Playwright MCP

Playwright MCP

официальный

от microsoft

Playwright управляет браузером: открывает страницы, кликает, заполняет формы. Работает по accessibility-дереву, без скриншотов.

TypeScript⭐ 38388
Browser MCP

Browser MCP

официальный

от browsermcp

Автоматизирует ваш браузер: кликает, заполняет формы, извлекает данные. Работает локально в вашем профиле, видит все логины и обходит капчи.

TypeScript⭐ 7201
Browserbase MCP

Browserbase MCP

официальный

от browserbase

Запускает облачный браузер Browserbase: открывает любые сайты, кликает по элементам, заполняет формы и выгружает данные со страниц.

TypeScript⭐ 3399
freema/firefox-devtools-mcp

freema/firefox-devtools-mcp

от freema

Управляет Firefox: кликает по элементам, заполняет формы, собирает сетевые запросы. Официальный сервер Mozilla, работает локально.

TypeScript⭐ 504
achiya-automation/safari-mcp

achiya-automation/safari-mcp

от achiya-automation

Используйте Safari MCP сервер для AI-агентов на macOS - ваш реальный браузер с сессиями, куками и 96 инструментами. Работает без Chrome, на нативном WebKit, с низким нагревом.

JavaScript⭐ 220
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин