chrome-debugger-mcp
chrome-debugger-mcp
English
MCP-сервер для отладки Chrome на основе точек останова.
chrome-debugger-mcp предоставляет примитивы Chrome DevTools Protocol в виде MCP-инструментов, чтобы AI-агент мог подключиться к реальной вкладке Chrome, приостановить выполнение, просмотреть значения в областях видимости, выполнить выражения внутри текущего кадра вызова и пройтись по коду по шагам, опираясь на фактические данные времени выполнения, а не на догадки по статическому исходному коду.
Это не универсальный сервер автоматизации браузера. Основной фокус — отладка во время выполнения.
Основные возможности
Подключение к реальной вкладке Chrome через CDP после явного подтверждения пользователем
Приостановка на точках останова или операторах
debugger;и ожидание именно той паузы, которую вы ожидаетеЧтение значений локальной, замыкающей и модульной областей видимости из приостановленного кадра
Выполнение JavaScript в текущем кадре вызова и продвижение выполнения по шагам
Чистое возобновление работы, чтобы агент мог продолжать с фактическими значениями времени выполнения
Демонстрация

Демонстрация: агент запускает Chrome, ожидает точку останова, проверяет реальные переменные области видимости и возобновляет работу с фактами времени выполнения, а не с догадками.
Конфигурация MCP-клиента
Использование опубликованного пакета
{
"mcpServers": {
"chrome-debugger": {
"command": "npx",
"args": ["-y", "chrome-debugger-mcp"]
}
}
}Установка
Из npm
npx -y chrome-debugger-mcpИли установите глобально:
npm install -g chrome-debugger-mcpИз исходного кода
pnpm install
pnpm build
node dist/index.jsДругие особенности
Запуск выделенного экземпляра Chrome с включенной удалённой отладкой
Установка и удаление точек останова DevTools без редактирования исходного кода
Перезагрузка страницы через CDP, чтобы точки останова надёжно привязывались после навигации
Опрос состояния отладчика, когда у MCP-клиента короткие тайм-ауты запросов
Выдача
_ui-полезных данных и сообщений журнала, которые клиенты могут показывать пользователю
Почему это полезно
Многие MCP-инструменты, ориентированные на браузер, сильны в работе с DOM и проверке сети, но слабы в отладке времени выполнения. Этот сервер даёт MCP-клиенту недостающий цикл, который вы обычно используете в Chrome DevTools: подключиться к нужной вкладке, приостановиться в нужный момент, проверить реальные значения, при необходимости пройтись по шагам и чисто возобновить работу.
Он также добавляет ограничения, предотвращающие типичные ошибки агента:
угадывание, к какой вкладке подключаться;
вывод о поведении без проверки значений времени выполнения;
завершение хода между
reloadPage()иwaitForSpecificPause().
Требования
Локально установленный Google Chrome
MCP-клиент, поддерживающий серверы stdio и вызов инструментов
Доступ к приложению, которое вы хотите отлаживать
Локальный доступ к исходному коду, если вы планируете вставлять временные операторы
debugger;
Модель инструментов
Сервер работает через stdio и предоставляет MCP-инструменты. Наиболее важные инструменты:
startDebuggingSession: возвращает рекомендуемый порядок отладки и критические правила поведения агентаlaunchChrome: запускает выделенный экземпляр Chrome с включенной удалённой отладкойlistTargets: перечисляет доступные вкладки Chrome и требует, чтобы пользователь выбрал однуconnect: подключается к подтверждённой вкладкеsetBreakpoint: создаёт точку останова CDP без изменения исходных файловremoveBreakpoint: удаляет точку останова, созданнуюsetBreakpointreloadPage: перезагружает текущую страницу через CDPwaitForSpecificPause: ожидает следующую паузу и проверяет, совпадает ли она с целевым файлом и строкойwaitForPause: ожидает любую паузу без сопоставления с местоположениемgetScopeVariables: считывает значения локальной, замыкающей и модульной областей видимости из приостановленного кадраevaluate: выполняет JavaScript в приостановленном кадре вызоваstepInto,stepOver,stepOut: стандартное управление выполнениемresume: возобновляет выполнение после проверкиgetStatus: неблокирующий опрос состояния подключения или паузыforcePause: запрашивает паузу на следующем операторе JavaScript
Рекомендуемый порядок действий
Для AI-клиентов предусмотрен следующий порядок:
Вызовите
startDebuggingSession().Вызовите
launchChrome()или используйте уже запущенный экземпляр Chrome с портом CDP.Вызовите
listTargets()и покажите пользователю полный список вкладок.Дождитесь, пока пользователь подтвердит точный URL страницы.
Вызовите
connect({ targetUrl }).Вставьте временный оператор
debugger;в локальный исходный код или вызовитеsetBreakpoint().Вызовите
reloadPage().Сразу же вызовите
waitForSpecificPause()в том же ходе.Вызовите
getScopeVariables()иevaluate(), чтобы проверить значения времени выполнения.При необходимости пройдите по шагам с помощью
stepInto(),stepOver()илиstepOut().Вызовите
resume().Удалите временные операторы
debugger;из исходного кода.
Важные правила для авторов агентов
Этот сервер предназначен для агентов, использующих инструменты, а не только для людей. Если вы интегрируете его в MCP-клиент, соблюдайте эти правила:
Никогда не пропускайте
listTargets().Никогда не угадывайте целевой URL, даже если открыта только одна вкладка.
Всегда ждите явного подтверждения пользователя перед
connect().После
reloadPage()немедленно вызывайтеwaitForSpecificPause()илиwaitForPause()в том же ходе.Не объясняйте поведение по статическому коду, когда значения времени выполнения можно проверить напрямую.
Всегда вызывайте
resume()после проверки.Если вы добавили временные операторы
debugger;в исходный код, удалите их перед завершением.
Как waitForSpecificPause выполняет сопоставление
waitForSpecificPause — предпочтительный примитив ожидания, поскольку он надёжнее, чем ожидание произвольной паузы.
Он сопоставляет паузу с помощью двух стратегий:
Фрагмент URL плюс допуск по номеру строки
Фрагмент URL плюс причина паузы
debugger-statement
Второй путь важен, когда карты исходного кода, транспиляция или сборка смещают скомпилированные номера строк относительно номеров строк редактора.
Пример последовательности инструментов
Агент, отлаживающий локальное приложение Vite, может сделать примерно следующее:
launchChrome({ dryRun: true })launchChrome()listTargets()Ожидание подтверждения пользователем
http://127.0.0.1:5173connect({ targetUrl: "127.0.0.1:5173" })Вставка
debugger;вApp.jsxreloadPage()waitForSpecificPause({ urlFragment: "App.jsx", line: 62, actionHint: "click the Refetch payloads button" })getScopeVariables()evaluate({ expression: "payload.modules" })resume()
Поведение при запуске Chrome
launchChrome() использует выделенный профиль, поэтому не мешает обычной сессии браузера пользователя.
Значения по умолчанию:
порт удалённой отладки:
9222каталог профиля:
~/.chrome-debug-profile
Ожидаемые пути к исполняемому файлу Chrome:
macOS:
/Applications/Google Chrome.app/Contents/MacOS/Google ChromeLinux:
google-chromeWindows:
C:\Program Files\Google\Chrome\Application\chrome.exe
Если автоматический запуск не удался, инструмент возвращает команду, которую пользователь может выполнить вручную.
Локальная площадка
В этом репозитории есть одноразовое тестовое приложение в test/, чтобы вы могли проверить сервер отладчика в реалистичном сценарии работы с браузером.
Запуск имитационного сервиса
cd test/service
node src/server.jsСервис слушает http://127.0.0.1:3030.
Запуск веб-приложения
cd test/web
pnpm install
pnpm devВеб-приложение работает на http://127.0.0.1:5173.
Полезные места для паузы:
test/web/src/App.jsxвнутриloadWorkbenchtest/web/src/App.jsxвнутриloadModuleDetailtest/web/src/App.jsxвокруг незавершённых разделов с деталями
Области полезных данных времени выполнения, которые стоит проверить:
summaryCardsmodulesapiContractsnextActionsresponseShape
Устранение неполадок
Не найдены цели
Убедитесь, что Chrome запущен с --remote-debugging-port=9222 и целевая страница открыта.
targetUrl совпадает с несколькими вкладками
Передайте более специфичную подстроку, чтобы совпадение стало уникальным.
waitForPause или waitForSpecificPause истёк по времени
Это может произойти, когда:
действие на странице так и не было выполнено;
была установлена не та точка останова;
у самого MCP-клиента тайм-аут запроса короче, чем вызов инструмента.
Если ваш клиент быстро завершается по тайм-ауту, используйте getStatus() для опроса или увеличьте тайм-аут клиента.
Номер строки паузы не совпадает с номером строки в редакторе
Сборщики и транспиляторы могут смещать скомпилированные номера строк. Используйте waitForSpecificPause() и полагайтесь на сопоставление по фрагменту URL плюс семантику debugger-statement.
Chrome не запускается автоматически
На машине может использоваться нестандартный путь установки Chrome. Выполните возвращённую команду запуска вручную или адаптируйте реализацию под ваше окружение.
Разработка
pnpm install
pnpm build
node dist/index.jsРеализация находится в:
src/index.ts: определения MCP-инструментов и подсказки рабочего процесса для пользователяsrc/chrome-manager.ts: интеграция с Chrome DevTools Protocol и управление состоянием отладчика
Лицензия
MIT
Related MCP server: Chrome DevTools MCP
中文
一个面向 Chrome 断点调试的 MCP Server。
chrome-debugger-mcp 把 Chrome DevTools Protocol 的核心调试能力暴露为 MCP 工具,让 AI agent 可以连接真实的 Chrome 标签页,在运行时暂停执行、读取作用域变量、在当前调用帧中执行表达式、单步跟踪代码,并基于真实值继续任务,而不是只靠静态源码猜测行为。
它不是通用浏览器自动化工具。它的重点是运行时调试。
核心能力
在用户明确确认后,通过 CDP 连接真实的 Chrome 标签页
在断点或
debugger;命中时暂停,并等待指定文件和行附近的 pause读取当前暂停帧中的 local、closure、module 作用域变量
在当前调用帧里执行 JavaScript,并继续单步跟踪
检查完成后恢复执行,让 agent 基于真实运行时值继续工作
功能演示

演示流程:agent 拉起 Chrome,等待断点命中,读取真实作用域变量,再基于运行时事实继续执行,而不是靠猜测推进。
MCP 客户端配置
使用已发布包
{
"mcpServers": {
"chrome-debugger": {
"command": "npx",
"args": ["-y", "chrome-debugger-mcp"]
}
}
}安装方式
从 npm 使用
npx -y chrome-debugger-mcp也可以全局安装:
npm install -g chrome-debugger-mcp从源码运行
pnpm install
pnpm build
node dist/index.js其他特点
启动带远程调试端口的独立 Chrome 实例
无需修改源码即可设置和移除断点
通过 CDP 重载页面,确保跳转后断点可靠绑定
当 MCP 客户端请求超时较短时,可轮询调试器状态
输出
_ui结果和 logging 消息,方便客户端展示给用户
为什么适合这个场景
很多浏览器方向的 MCP 工具更擅长 DOM 操作和网络请求观察,但不擅长回答运行时调试问题。这个服务补上的是 Chrome DevTools 里最关键的那条链路:连接正确标签页、在正确时机暂停、读取真实值、必要时单步跟踪、最后恢复执行。
它也内置了几条 guardrails,避免 agent 出现这些常见错误:
猜测应该连接哪个标签页
没看运行时值就直接下结论
在
reloadPage()和waitForSpecificPause()之间错误地结束当前轮次
运行要求
本机安装了 Google Chrome
使用支持 stdio MCP server 和工具调用的 MCP 客户端
可以访问你要调试的应用
如果要插入临时
debugger;,需要能访问本地源码
工具模型
这个服务通过 stdio 运行,并暴露一组 MCP tools。最核心的工具有:
startDebuggingSession:返回推荐调试流程和 agent 行为约束launchChrome:启动带远程调试能力的独立 Chrome 实例listTargets:列出可调试标签页,并要求用户做选择connect:连接到已确认的目标标签页setBreakpoint:在不改源码的情况下通过 CDP 设置断点removeBreakpoint:移除通过setBreakpoint创建的断点reloadPage:通过 CDP 重载当前页面waitForSpecificPause:等待下一次暂停,并判断是否命中目标文件和行waitForPause:不做位置匹配,等待任意暂停getScopeVariables:读取当前暂停帧中的局部、闭包、模块作用域变量evaluate:在暂停调用帧中执行 JavaScriptstepInto、stepOver、stepOut:标准单步控制resume:检查完毕后恢复执行getStatus:非阻塞方式查询是否已连接、是否已暂停forcePause:请求在下一条 JavaScript 语句处暂停
推荐工作流
对于 AI 客户端,建议流程是:
调用
startDebuggingSession()。调用
launchChrome(),或直接复用已经开启 CDP 端口的 Chrome。调用
listTargets(),并把完整标签页列表展示给用户。等待用户明确确认要调试的页面 URL。
调用
connect({ targetUrl })。在本地源码插入临时
debugger;,或者调用setBreakpoint()。调用
reloadPage()。在同一轮里立刻调用
waitForSpecificPause()。调用
getScopeVariables()和evaluate()检查运行时值。必要时使用
stepInto()、stepOver()、stepOut()继续跟踪。调用
resume()。删除源码里临时加入的
debugger;。
给 Agent 作者的重要规则
这个服务首先是为会调用工具的 agent 设计的,而不仅仅是给人手动点工具用。如果你要把它接入自己的 MCP 客户端,建议遵守这些规则:
不要跳过
listTargets()。即使只看到一个标签页,也不要猜测目标 URL。
一定要等用户明确确认后再调用
connect()。调用
reloadPage()后,必须在同一轮里立刻调用waitForSpecificPause()或waitForPause()。能读取运行时值时,不要只根据静态代码解释行为。
检查完之后一定要
resume()。如果向源码里插入了临时
debugger;,结束前要清理掉。
waitForSpecificPause 如何匹配
waitForSpecificPause 是首选的等待工具,因为它比“等待任意暂停”更可靠。
它有两层匹配策略:
URL 片段加行号容差
URL 片段加
debugger-statement暂停原因
第二层匹配对经过 source map、转译、打包后的代码尤其重要,因为编译后的行号可能和编辑器行号不完全一致。
调用序列示例
一个 agent 调试本地 Vite 应用时,调用顺序大致会像这样:
launchChrome({ dryRun: true })launchChrome()listTargets()等用户确认
http://127.0.0.1:5173connect({ targetUrl: "127.0.0.1:5173" })在
App.jsx插入debugger;reloadPage()waitForSpecificPause({ urlFragment: "App.jsx", line: 62, actionHint: "click the Refetch payloads button" })getScopeVariables()evaluate({ expression: "payload.modules" })resume()
Chrome 启动行为
launchChrome() 会使用独立 profile,不会影响用户平时正在用的浏览器会话。
默认值:
远程调试端口:
9222profile 目录:
~/.chrome-debug-profile
默认 Chrome 可执行文件路径:
macOS:
/Applications/Google Chrome.app/Contents/MacOS/Google ChromeLinux:
google-chromeWindows:
C:\Program Files\Google\Chrome\Application\chrome.exe
Если автозапуск не сработал, инструмент вернёт команду запуска, которую пользователь сможет выполнить вручную.
Локальный Playground
В репозитории есть одноразовое тестовое приложение в каталоге test/. С его помощью можно проверить весь цикл работы этого отладочного MCP.
Запуск mock-сервиса
cd test/service
node src/server.jsСервис принимает запросы на http://127.0.0.1:3030.
Запуск веб-приложения
cd test/web
pnpm install
pnpm devВеб-приложение работает на http://127.0.0.1:5173.
Рекомендуемые места для точек останова:
loadWorkbenchвtest/web/src/App.jsxloadModuleDetailвtest/web/src/App.jsxрядом с ещё не завершённой областью detail в
test/web/src/App.jsx
Поля payload, которые стоит посмотреть во время выполнения:
summaryCardsmodulesapiContractsnextActionsresponseShape
Устранение неполадок
Не удаётся найти targets
Убедитесь, что Chrome запущен с флагом --remote-debugging-port=9222 и целевая страница уже открыта.
targetUrl соответствует нескольким вкладкам
Передайте более специфичную подстроку URL, чтобы гарантировать уникальное совпадение.
Тайм-аут waitForPause или waitForSpecificPause
Распространённые причины:
операции на странице не были реально вызваны
точка останова установлена не в том месте
тайм-аут запроса самого MCP-клиента короче, чем время выполнения вызова инструмента
Если тайм-аут клиента короткий, можно перейти на опрос через getStatus(), либо увеличить тайм-аут клиента.
Номера строк при остановке не совпадают с редактором
Сборка и транспиляция приводят к смещению номеров строк в скомпилированном коде. Предпочтительнее использовать waitForSpecificPause() и полагаться на сопоставление фрагментов URL в сочетании с семантическим сопоставлением debugger-statement.
Не удаётся автоматически запустить Chrome
Путь установки Chrome на этой машине может не совпадать со значением по умолчанию. Можно напрямую выполнить команду запуска, возвращённую инструментом, или адаптировать реализацию под ваше окружение.
Разработка
pnpm install
pnpm build
node dist/index.jsОсновные файлы реализации:
src/index.ts: определения MCP-инструментов и пользовательские подсказки по рабочим процессамsrc/chrome-manager.ts: интеграция с Chrome DevTools Protocol и управление состоянием отладки
Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, and screenshot capture through Chrome DevTools.262,211,1043Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.2,211,104Apache 2.0
- AlicenseAqualityCmaintenanceEnables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.18142Apache 2.0
- FlicenseNot gradedqualityCmaintenanceWraps Chrome DevTools Protocol to provide AI agents with low-level browser debugging tools including breakpoints, stack traces, stepping, network interception, and source maps.1
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Shared debugging memory for AI coding agents
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/BitePro/chrome-debugger-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server