browser-devtools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_list_processesA | 枚举本机正在运行的浏览器进程,标出哪些可以通过 CDP 附加(需要 --remote-debugging-port)。Firefox/Safari 不走 CDP,会被标记为不可附加。 |
| browser_discoverC | 扫描本机的 DevTools HTTP 端点(默认 9222–9235),找出已经开启远程调试的浏览器。 |
| browser_launchB | 以独立 user-data-dir 启动一个带远程调试端口的 Chromium 浏览器(不污染你的个人配置),默认立即附加会话。 |
| browser_connectB | 附加到已开启调试端口的浏览器实例(或给定完整 WebSocket 地址),建立 CDP 会话。 |
| browser_closeA | 断开当前 CDP 会话;可选按端口关闭由本服务启动的浏览器实例,或全部关闭。 |
| browser_installedA | 列出本机已安装的 Chromium 系浏览器及其可执行文件路径,供 browser_launch 使用。 |
| target_listA | 列出当前浏览器中可附加的页面。默认隐藏扩展页 / service worker / devtools 等后台目标(Edge、Chrome 装着扩展时这类目标往往有十几个),需要全量时把 includeBackground 设为 true。 |
| target_selectA | 附加到指定标签页并把它设为当前抓取对象;后续 console / network / DOM 工具都作用在这个页面上。 |
| session_infoA | 查看当前会话的连接信息、目标页、缓冲计数与告警。常用于判断“现在到底连着谁”。 |
| session_dumpB | 把当前缓冲里的全部数据按 CapturedData 结构返回(不做落盘),适合你想自己加工时用。 |
| console_readA | 读取已捕获的 console 输出,支持按级别、关键字、时间、来源页过滤。适用于排查报错、定位日志来源。 |
| console_clearA | 清空当前会话缓冲的 console 数据(不影响已经落盘的产物)。 |
| network_listB | 列出捕获到的网络请求,可按 URL 关键字、方法、资源类型、状态码过滤,也可只看失败或 4xx/5xx。 |
| network_detailB | 按 requestId 查看单个请求的完整信息:请求头、响应头、Post body、timing、initiator、cookie 等。 |
| network_bodyB | 取指定请求的响应体内容(文本)。二进制响应建议结合 mimeType 自行判断是否需要 base64。 |
| network_clearA | 清空当前会话缓冲的网络请求记录。 |
| page_errorsB | 列出捕获到的未捕获异常、console.error、日志错误与渲染进程崩溃,含 URL 与调用栈。 |
| page_domB | 获取当前页面的 DOM:可返回原始 HTML、适合 LLM 阅读的缩进结构大纲,或两者。默认 both,并自动截断超长 HTML。 |
| page_evaluateA | 在当前页面上下文执行一段 JavaScript 并返回结果(支持 await Promise),等价于 DevTools Console。 |
| page_screenshotA | 对当前页面截图。图片数据默认不回传(体积大),需要看图时把 returnBase64 设为 true。 |
| resources_listA | 返回开发者工具「源代码 / Sources > 页面」面板里那棵树:按 frame 分层,列出页面实际加载的全部资源(文档、样式表、脚本、图片、字体、音视频等),并交叉带上对应的 requestId / 状态码 / 大小。与 network_list 互补:这里给的是页面资源视角(含已进入页面但未必在 Network 缓冲里的资源),network_list 给的是 HTTP 请求视角。 |
| resources_getA | 按 URL 读取页面资源的内容,等同于在开发者工具 Sources 面板里点开某个文件看源码。会自动采用 UTF-8 纠偏,避免无 charset 的中文文本变乱码。图片/音视频等二进制会返回 base64。 |
| performance_metricsB | 获取 Performance.getMetrics 指标,以及导航计时、绘制时间和 JS 堆占用。 |
| storage_readA | 读取当前页面的 Cookies、localStorage、sessionStorage 与 IndexedDB 数据库名。 |
| capture_startA | 清空缓冲并记录起始时间,之后发生的 console / 网络 / 错误都会被计入本轮抓取。 |
| capture_statusB | 查看当前会话的缓冲计数、目标页与是否处于某一轮抓取中。 |
| capture_stopA | 结束当前这一轮抓取,返回统计与建议摘要(不落盘;要落盘用 capture_save)。 |
| capture_saveA | 把抓到的全部内容落盘成一个目录:session.json、console.json/csv、network.har、network.csv、metrics.json、storage.json、dom.html、截图、离线 HTML 报告 report.html、summary.md 与 manifest.json。 |
| capture_list_savedB | 列出之前保存过的抓取目录(含内存记录与 captures 根目录下的结果)。 |
| events_subscribeA | 订阅实时事件流:所有新发生的 console 输出、网络请求(请求/响应/完成/失败)、异常、导航、标签页增减、性能指标采样与页面画面帧都会即时进入该订阅。返回 subscriptionId,之后用 events_wait(阻塞等待)或 events_read(立即取)消费。 |
| events_waitA | 长轮询:等到有匹配的实时事件就立刻返回,最多等待 timeoutMs(默认 15 秒,上限 120 秒)。传入上次返回的 cursor 就不会漏也不会重。这是任何客户端都能用的实时消费方式。 |
| events_readA | 立即读取订阅里已积累的实时事件,不等待。适合先看一眼再决定是否阻塞等待。 |
| events_unsubscribeB | 结束订阅并释放缓冲。会自动停止没人用的性能采样与画面推流。 |
| events_listB | 列出所有订阅及其过滤条件、已匹配条数、缓冲条数与当前游标。 |
| recording_startA | 把实时事件流持续追加写入 JSONL 文件(每条一行),适合长时间监控而不怕内存爆掉;可同时把页面画面帧按序存成图片。用 recording_stop 结束并拿统计。 |
| recording_stopB | 结束实时录制并输出统计信息与产物路径。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| diagnose_page | 按固定顺序抓取 console、错误与网络失败,最后生成一份诊断结论与产物。 |
| monitor_live | 订阅实时事件流,持续观察一段时间内的日志、请求、性能指标与画面变化,最后给出观察结论。 |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
Most tools map to a distinct resource+action, but three families (capture_*, events_*, recording_*) all concern capturing telemetry yet differ only by buffering/persistence strategy, which an agent could confuse. resources_list vs network_list and page_dom vs resources_get are documented as complementary and distinguishable. Overall boundaries are mostly clear with a few overlapping regions.
Names consistently use snake_case with a domain prefix (browser_, page_, console_, network_, events_, capture_, recording_, resources_, target_, session_). A few tools drop the verb (capture_status, capture_save, session_info, session_dump), which is a minor deviation from the verb_noun ideal. Still highly predictable overall.
36 tools is heavy for a single server and crosses into the 'too many' band. The breadth across launch/discovery/session/capture/events/recording/console/network/DOM/resources/storage/performance is genuine, but the capture/events/recording redundancy inflates the count beyond what the domain strictly needs.
Coverage is strong: process discovery, launch/attach/close, target selection, console, network, DOM, resources, storage, performance, screenshots, buffered capture, real-time events, and persistent recording. Minor gaps exist (no navigation/reload control, no input/interaction or request interception), but core diagnostic workflows are covered.