feedthrough/feedthrough

feedthrough/feedthrough

от feedthrough
Feedthrough - MCP сервер для отладки веб-приложений через AI. Внедряет мост в страницу, предоставляя инструменты для чтения DOM, консоли, сети и управления интерфейсом. Полезен разработчикам, которые хотят исследовать и управлять приложением в реальном времени через AI-агента.

Feedthrough

Debug with AI — from inside your app.

Feedthrough injects a lightweight debug bridge into any running web page, then exposes everything — DOM state, console logs, network requests, and user interactions — as MCP tools. Any MCP-compatible AI agent can inspect and drive the page conversationally, in real time.

Browser (any)
 └── @feedthrough/core          ← injected into your page
      ├── console interceptor
      ├── fetch / XHR interceptor
      └── DOM inspector
      ↕  WebSocket
@feedthrough/mcp               ← MCP server, exposes tools over stdio
 └── Tools: click, fill, inspect_element, query_dom,
            get_console_logs, get_network_requests, …
      ↕  MCP protocol
Claude Code / Cursor / any MCP client

The name

Many physics and chemistry experiments run inside a sealed vacuum chamber, with all the air pumped out so nothing contaminates the experiment. The catch: you still need to control instruments inside the chamber and read their measurements, and the smallest air leak ruins the run. A feedthrough is the part that solves this — a specially engineered connector that carries electrical signals through the chamber wall while keeping the vacuum perfectly intact. You can't reach inside, but the feedthrough lets you observe and control what's happening in there anyway.

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

Кликает по элементу, вызывая его собственный метод click(), который генерирует событие click и выполняет действие по умолчанию: переход по ссылке, переключение чекбокса или радиокнопки, отправка формы. Предпочитайте селектор по id (#submit-btn) для надёжного наведения на цель. Учтите: этот метод НЕ синтезирует предшествующую последовательность pointer/mouse (pointerdown / mousedown / mouseup) и не перемещает фокус, поэтому обработчик, привязанный именно к этим событиям, а не к click, не сработает; для активации с клавиатуры используйте press_key. Поведение: если селектор ничего не нашёл, вызов возвращает ошибку; метод не прокручивает элемент в область видимости и не ждёт завершения навигации, сетевых запросов или перерисовки — возвращает управление сразу после отправки клика. Наблюдайте эффект с помощью последующего вызова get_console_logs / get_network_requests / query_dom. Возвращает тег и id элемента, по которому кликнули.

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

    A CSS selector for the element to click, e.g. '#submit-btn' or 'button[type=submit]'. If several match, the first in document order is clicked.

connection_status

Проверяет, подключен ли браузер с мостом Feedthrough. Возвращает флаг подключения и список открытых вкладок (id, url, какая активна). Вызывайте это первым: все инструменты, кроме get_instructions, требуют подключенного браузера.

Параметры

Без параметров.

fill

Устанавливает значение элемента input, textarea или select. Фокусирует элемент, присваивает значение через нативный сеттер значения элемента (поэтому контролируемые поля React/Vue регистрируют изменение), затем запускает всплывающие события input и change. Значение устанавливается за один раз, не посимвольно — поэтому обработчики на каждое нажатие клавиши (keydown / keypress / keyup / beforeinput) НЕ срабатывают; чтобы отправить Enter для отправки формы или срабатывания горячей клавиши, используйте press_key. Предпочтительно использовать селектор id (#search-input). Если селектор ничего не находит, вызов возвращает ошибку; возвращает результат сразу после отправки событий, не дожидаясь последующей валидации или повторного рендеринга. Возвращает тег и установленное значение.

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

    A CSS selector for the input, textarea, or select to fill, e.g. '#email' or 'input[name=q]'.

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

    The full value to set. It replaces the field's current contents (it is not appended); for a <select>, pass the target option's value attribute.

get_console_logs

Возвращает вывод консоли, захваченный с момента подключения моста. Охватывает все методы консоли — log/warn/error/info/debug, а также dir, table, assert, trace, count, countReset, time/timeEnd/timeLog, group/groupCollapsed/groupEnd и clear. Каждая запись содержит поле 'level' (наиболее близкий из пяти стандартных уровней); для расширенных методов также добавляется поле 'method', а для console.trace() и неудачных console.assert() — поле 'stack'. Необработанные исключения и отклонённые промисы тоже захватываются (уровень 'error', метод 'uncaught' / 'unhandledrejection'), даже если приложение их не логировало. Когда приложение шумит из-за фреймворков или предупреждений об устаревании, передайте levels: ['error'] (или ['error', 'warn']), чтобы настоящие ошибки не затерялись, и используйте 'match' для фильтрации по содержимому. Передайте 'since' (метка времени в мс из поля 'ts' предыдущей записи или Date.now() перед действием), чтобы увидеть только то, что произошло после этого момента. Только для чтения: возвращает пассивно собранный буфер и не очищает консоль и не изменяет страницу. Всегда проверяйте это на раннем этапе - ошибки приложения и отладочный вывод часто сразу указывают на первопричину.

Параметры
  • levelsenum[]

    Restrict to these levels, e.g. ['error'] to skip noisy warn/info/debug, or ['error', 'warn'] for both. Omit for all levels.

  • limitinteger

    Cap the result to the N most-recent entries, e.g. 50. Omit to return everything captured since the bridge connected.

  • matchstring

    Case-insensitive substring filter on the serialized message content

  • sincenumber

    Only entries with ts >= this (ms epoch). Scope to 'what happened after I did X'.

get_html

Возвращает outerHTML элемента (ограничение 50 КБ). Используйте, когда обобщённого вывода query_dom недостаточно и нужно увидеть фактическую разметку/структуру области. Только для чтения: он только читает DOM и не вносит изменений, а также возвращает ошибку, если селектор ничего не находит.

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

    A CSS selector for the region to dump, e.g. '#app' or '.modal'. If several match, the first in document order is used. Scope it tightly: the outerHTML is capped at 50 KB.

get_instructions

Возвращает руководство по использованию Feedthrough в виде текстового документа Markdown с разделами: рекомендуемый рабочий процесс, советы по порядку применения инструментов и рекомендации по выбору. Только для чтения, не принимает аргументов; не изменяет страницу и не требует подключённого браузера. Вызывайте его в начале сеанса отладки, если вы не знакомы с Feedthrough или хотите быстро освежить знания.

Параметры

Без параметров.

get_network_requests

Возвращает все перехваченные fetch и XHR запросы с момента подключения bridge, включая URL, метод, HTTP статус, длительность, заголовки запроса и ответа, а также тела запроса и ответа (тела ограничены 10 КБ каждое: всё, что длиннее, обрезается с пометкой; бинарные ответы сводятся). Используйте это, чтобы найти неудачные запросы (4xx/5xx), неправильные URL, медленные вызовы или проверить, что приложение на самом деле отправило или получило. Используйте 'filter', чтобы сузить поиск по URL/методу, и 'since' (временная метка в мс), чтобы увидеть только запросы, отправленные после какого-либо действия. Только для чтения: возвращает пассивно перехваченный лог и не создаёт и не изменяет никакие запросы.

Параметры
  • filterstring

    Filter by URL substring or HTTP method, e.g. 'api' or 'POST'

  • sincenumber

    Only requests with ts >= this (ms epoch). Scope to 'what fired after I did X'.

get_page_info

Возвращает базовый контекст страницы: текущий URL, заголовок документа, readyState, размер viewport, позицию прокрутки и user agent. Только чтение, без побочных эффектов: он только читает состояние страницы и не вносит изменений. Полезно для ориентации в начале сессии или для подтверждения того, что навигация произошла.

Параметры

Без параметров.

hover

Наводит курсор на элемент, отправляя синтетические всплывающие события mouseover и mouseenter изнутри страницы. Это запускает обработчики наведения JavaScript (onMouseEnter / onMouseOver), поэтому UI, который появляется только при наведении (тултипы, поповеры, выпадающие списки и подменю), появляется в DOM; затем используйте query_dom, get_html или inspect_element, чтобы прочитать, что открылось. Нужно знать три ограничения: это НЕ активирует CSS-псевдокласс :hover (он управляется реальным курсором, а не синтетическими событиями), так что стили или контент, показанные исключительно через :hover в CSS, не изменятся; mouseout / mouseleave не отправляются, поэтому состояние наведения сохраняется, пока приложение его не сбросит или вы не взаимодействуете в другом месте; и события отправляются независимо от того, виден ли элемент или находится ли он в области просмотра (прокрутка не выполняется), поэтому успешный вызов сам по себе не подтверждает, что что-то отрендерилось. Если селектор ничего не находит, вызов возвращает ошибку. Возвращает тег элемента, на который навели курсор.

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

    A CSS selector for the element to hover, e.g. '#menu-trigger' or '.tooltip-anchor'. Target the element that owns the hover handler (often the trigger, not the popup).

inspect_element

Возвращает полные сведения об одном элементе: тег, id, классы, все атрибуты, текстовое содержимое, ограничивающий прямоугольник (top/right/bottom/left/width/height + прокрутка страницы и флаг inViewport), компактный путь предков (например, 'body > main > div#app > button.cta'), подобранный набор вычисленных стилей (layout, box model, typography, positioning, flex/grid), блок 'overflow', когда содержимое обрезается/переполняется (scroll vs client size + флаги по осям x/y), блок 'clipped', когда предок обрезает элемент своим overflow (обрезающий предок + какие края), проверку эффективной видимости (булево 'visible' с 'hiddenReason', например 'ancestor div#modal display:none' или 'opacity:0', если не виден, с учётом предков), проверку перекрытия (булево 'hittable' от hit-теста в центре, с 'occludedBy', указывающим элемент, который реально сверху, если что-то его закрывает), блок 'a11y' (определённая роль, доступное имя по возможности, ключевые состояния: expanded/checked/selected/disabled/hidden/tabindex), блок 'pseudo' с содержимым ::before/::after, если задано (иконки шрифтов, сгенерированный текст), и, если применимо, состояние живых форм (текущее значение input, checked, disabled и т.д.). Передайте 'properties', чтобы дополнительно прочитать любые конкретные вычисленные CSS-свойства по имени, они вернутся в 'requested'. Используйте это, чтобы понять, почему элемент выглядит неправильно или ведёт себя не так, как ожидается. Только для чтения: он только читает состояние элемента и никогда не изменяет страницу, и возвращает ошибку, если селектор ничего не находит. Примечание: обработчики событий, зарегистрированные через addEventListener, невозможно прочитать со страницы; видны только встроенные атрибуты-обработчики on* (в 'attributes').

Параметры
  • propertiesstring[]

    Extra computed CSS properties to read by name (kebab-case), e.g. ['transform', 'z-index', 'margin-top']. They come back under a 'requested' object, in addition to the curated default set.

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

    A CSS selector that should resolve to one element, e.g. '#submit-btn' or 'main .card:first-child'. If several match, the first in document order is inspected.

press_key

Отправляет нажатие клавиши (keydown/keypress/keyup) на элементе - например, Enter для отправки поиска, Escape для закрытия модального окна, Tab для перемещения фокуса или ArrowUp/ArrowDown в списке. Используйте именованные клавиши (Enter, Escape, Tab, Backspace, Delete, ArrowUp/Down/Left/Right) или один символ. Примечание: это вызывает обработчики клавиш, но НЕ вставляет текст в поля ввода - используйте 'fill' для установки значения поля, затем press_key для отправки/шортката. Если селектор ничего не находит, вызов возвращает ошибку; он отправляет события клавиш и возвращается, не дожидаясь навигации или перерендера.

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

    A named key or a single character. Named keys: Enter, Escape, Tab, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight (case-sensitive, as in the DOM KeyboardEvent 'key' value). Any other single character (e.g. 'a', '/') is sent as that character.

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

    A CSS selector for the element that receives the key, e.g. '#search-input'. Target a focused or focusable element: Enter on a focused input submits its form, Escape on an open dialog closes it, Tab moves focus to the next element.

query_dom

Запрашивает страницу по CSS-селектору и возвращает сводку по каждому совпавшему элементу (тег, id, классы, текстовое содержимое). Пригодится для подсчёта пунктов списка, проверки того, что реально отрендерено, или для поиска правильного селектора перед вызовом inspect_element или click. Только чтение: инструмент лишь читает DOM и никогда не изменяет страницу. Возвращает пустой список (не ошибку), если ничего не совпало, так что это ещё и безопасная проверка существования.

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

    A CSS selector matched against the whole document, e.g. '.todo-item', '#search-input', or 'nav a'. Returns every match, so it also works as a count or existence check.

reset_overrides

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

Параметры

Без параметров.

set_attribute

Устанавливает или удаляет атрибут у элемента для предпросмотра изменений (включить/отключить disabled, заменить класс, задать aria-* атрибут). Передайте value=null, чтобы удалить атрибут. Только предпросмотр в реальном времени. Не сохраняется в исходный код, сбрасывается при перезагрузке. Если атрибут управляется фреймворком (class, value, checked, disabled и т.д.), результат включает 'frameworkWarning' о том, что он может быть отменён при следующем рендере. Передайте это предупреждение. Сбросьте с помощью reset_overrides.

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

    The attribute name to set or remove, e.g. 'disabled', 'class', 'aria-expanded', 'hidden', or a 'data-*' attribute.

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

    A CSS selector for the target element, e.g. '#menu' or 'button.cta'. If several match, the first in document order is used.

  • valuestring | nullобязательный

    The new value as a string, or null to remove the attribute entirely. For boolean attributes like 'disabled' or 'hidden', any non-null string (even '') sets them; use null to unset.

set_style

Устанавливает одно или несколько инлайн CSS-свойств на элементе для ПРЕДВАРИТЕЛЬНОГО просмотра визуального изменения в реальном времени (например, уменьшить непомещающуюся подпись, подогнать padding или ширину). Это изменяет только текущий DOM — изменения НЕ сохраняются в исходном коде и сбрасываются при перезагрузке — так что скажите пользователю, что это предпросмотр, и как только его всё устроит, внесите реальное изменение в CSS/исходник компонента. Инлайн стили переопределяют таблицу стилей и обычно переживают повторные рендеры. Результат содержит 'примечание' для передачи; сбросить — через reset_overrides.

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

    A map of CSS property to value, applied as inline styles. Property names are kebab-case and values are full CSS strings, e.g. { 'font-size': '13px', 'white-space': 'nowrap' }. Pass an empty string as the value to clear a single inline property.

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

    A CSS selector for the element to restyle, e.g. '#banner' or '.cta'. If several match, the first in document order is used.

set_text

Заменяет текстовое содержимое элемента для предпросмотра изменений формулировок/меток. Только живой предпросмотр — не сохраняется в исходном коде, сбрасывается при перезагрузке. textContent почти всегда управляется фреймворком, поэтому результат включает 'frameworkWarning' о том, что React/Vue и т.д., вероятно, перезапишет его при следующем рендере — передайте это предупреждение и сохраняйте реальные изменения в исходном коде. Сброс выполняется с помощью reset_overrides.

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

    A CSS selector for the element to relabel, e.g. '#title' or '.cta-label'. If several match, the first in document order is used.

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

    The replacement text, inserted as plain text (not parsed as HTML). Replaces all existing child content of the element.

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

swimmwatch/cloakbrowser-mcp

swimmwatch/cloakbrowser-mcp

MCP-сервер для браузерной автоматизации, использующий CloakBrowser — Chromium с антидетектом. Запускает Playwright MCP через тонкий мост, предоставляя все стандартные инструменты для управления бра...

TypeScript56
freema/firefox-devtools-mcp

freema/firefox-devtools-mcp

MCP-сервер от Mozilla для автоматизации Firefox через WebDriver BiDi. Позволяет ИИ-агентам (Claude, Cursor) управлять браузером: навигация, скриншоты и работа с консолью/сетью. Полезен разработчика...

TypeScript401
executeautomation/playwright-mcp-server

executeautomation/playwright-mcp-server

Сервер для браузерной автоматизации на Playwright. Используется AI-агентами для открытия страниц, скриншотов, веб-скрапинга и выполнения JavaScript в реальном браузере. Отлично подходит для тестиро...

TypeScript5644
ofershap/real-browser-mcp

ofershap/real-browser-mcp

MCP-сервер и Chrome-расширение, которые подключают AI-агента к вашему реальному браузеру — с сохранёнными сессиями и куками. Разработчики могут поручать агенту клики, ввод текста, скриншоты и прове...

JavaScript50
ndthanhdev/mcp-browser-kit

ndthanhdev/mcp-browser-kit

MCP Browser Kit — сервер, который позволяет AI-ассистентам напрямую управлять локальными браузерами. Полезен для автоматизации действий на страницах, сбора данных и тестирования. Разработчики и тес...

TypeScript53
Sentry MCP

Sentry MCP

официальный

Официальный MCP-сервер Sentry для доступа к ошибкам, issues и трейсам приложения прямо из AI-агента. Отладка, анализ производительности и root-cause через Seer.

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

Лука Никитин