Skip to main content
Glama

TabWeave MCP

TabWeave attaches to an existing Chrome/Chromium instance over CDP and exposes 54 primary tools plus 21 compatibility aliases through newline-delimited MCP JSON-RPC on standard input/output. Tool names, schemas, parameters and results retain the baseline contract; the project and its internal bindings are renamed.

Install and use

Node.js 18 or newer.

npm ci
CDP_PORT=9222 npm start
npm test

The Chrome instance must already be running with a localhost debugging port. TabWeave does not launch a user's browser. A client configuration can invoke:

{
  "mcpServers": {
    "tabweave": {
      "command": "node",
      "args": ["/absolute/path/to/TabWeave/launch.cjs"],
      "env": { "CDP_PORT": "9222" }
    }
  }
}

Related MCP server: chrome-remote-debugging-mcp

Source organization

  • launch.cjs: process lifecycle and command entry point.

  • stdio_channel.cjs: ordered line exchange, EOF handling and parse errors.

  • session_kernel.cjs: CDP session, documents, frames, console events and dispatch.

  • action_catalog.cjs: cached tool descriptions and schemas.

  • argument_gate.cjs: canonical file-path checks and schema validation.

  • actions/: session, composition, page, input, observation and compatibility tools.

  • checks/: renamed validation and protocol tests.

The action modules share live session values through accessors; they do not copy mutable state when configuration, tabs or frames change. Page-evaluated functions remain self-contained and third-party Playwright names remain intact.

Behavior and boundaries

Navigation, forms, keyboard/mouse input, human/smart timing, screenshots, cookies, storage, frame/tab management, assertions, retry/batch/step composition and bounded nesting remain available. Screenshot buffers are returned in full.

Only the baseline supported JSON Schema checks are enforced: required fields, declared top-level types and enums. Numeric strings remain accepted for numeric fields; unimplemented schema features remain unvalidated. Canonical path checks remain check-time restrictions, not a filesystem sandbox. CDP must stay local; use an isolated profile for sensitive work.

The local regression suite uses a browser stub. Additional rewrite verification uses isolated Chrome with synthetic local pages; it does not establish behavior on every external site. See VALIDATION.md, ORIGIN.md and LICENSE.

Available Tools

75 tools
assertC

Unified assertion (text/visible/hidden/url/count/element)

Inputs: type (required), text, state, pattern, +4 more.

batchD

Batch execution

Inputs: actions (required).

blurD

Out of focus elements

Inputs: selector (required).

checkC

Unified check of element status (exists/visible/hidden/enabled/disabled/checked/focused/editable/in_viewport)

Inputs: text, state, timeout, selector, +1 more.

checkboxD

Check box operation

Inputs: selector (required), checked.

cleanupC

Clear cache

Inputs: no named parameters.

clear_cookiesC

Clear Cookies(alias)

Inputs: no named parameters.

clear_storageD

Clear Storage (alias)

Inputs: type.

clickC

Unified click (supports selector/text/coordinates, single/double/triple/right/long, fast/human/smart mode)

Inputs: x, y, mode, text, +9 more.

close_tabD

Close tab

Inputs: index.

console_logsD

Console log

Inputs: clear, limit.

cookiesC

Cookie operation (get/set/delete/clear)

Inputs: name, path, value, action, +4 more.

countD

element count

Inputs: selector (required).

dialogD

Dialog processing

Inputs: text, action.

dragD

Drag and drop

Inputs: to_x, to_y, from_x, from_y, +4 more.

enter_frameC

Enter iframe

Inputs: selector (required), timeout.

evalD

Execute JavaScript

Inputs: script (required), timeout.

existsD

Check for existence (alias)

Inputs: selector (required), timeout.

exit_all_framesC

Exit all iframes

Inputs: no named parameters.

exit_frameB

Exit the current iframe

Inputs: no named parameters.

fillD

Quick filling (direct replacement)

Inputs: text (required), selector (required), timeout.

fill_formC

Fill out forms in batches

Inputs: fields (required), submit.

findD

Find elements

Inputs: tag, text, limit, value, +2 more.

focusD

Focus on elements

Inputs: selector (required).

getC

Get element information (text/html/attribute/value/position/dimensions/styles/count/classes/tag/dataset)

Inputs: selector (required), type, outer, fallback, +2 more.

get_attributeD

Get attributes (alias)

Inputs: selector (required), attribute (required).

get_configD

Get configuration

Inputs: no named parameters.

get_cookiesD

Get Cookies (alias)

Inputs: no named parameters.

get_htmlD

Get HTML (alias)

Inputs: selector (required), outer.

get_pageC

Get page information (url/title/source/text/viewport)

Inputs: type.

get_storageD

Get Storage (alias)

Inputs: key, type.

get_textD

Get text (alias)

Inputs: selector (required), fallback.

get_titleC

Get title (alias)

Inputs: no named parameters.

get_urlC

Get URL (alias)

Inputs: no named parameters.

go_backC

Back

Inputs: no named parameters.

go_forwardD

Forward

Inputs: no named parameters.

health_checkD

Health Check

Inputs: no named parameters.

highlightC

Highlight elements (debugging)

Inputs: selector (required), color, duration.

hotkeyD

Key combination

Inputs: keys (required).

hoverD

Hover

Inputs: selector (required).

is_visibleD

check visible (alias)

Inputs: selector (required).

list_framesB

List all iframes

Inputs: no named parameters.

list_tabsB

List all tabs

Inputs: no named parameters.

mouseD

Mouse operation (move/down/up/click)

Inputs: action (required), x, y, steps, +1 more.

mouse_downD

Mouse press (alias)

Inputs: button.

mouse_upC

mouse release (alias)

Inputs: button.

move_mouseD

Move mouse (alias)

Inputs: x (required), y (required), steps.

new_tabC

Open a new tab

Inputs: url.

press_keyD

Button

Inputs: key (required), modifiers.

reconnectC

Reconnect browser

Inputs: no named parameters.

reloadC

Refresh the page

Inputs: timeout.

request_statsC

Request statistics

Inputs: no named parameters.

retryD

Automatic retry

Inputs: tool (required), args, delay_ms, max_retries, +1 more.

run_stepsA

Intelligent multi-step execution - execute multiple operation steps in one call, with built-in automatic waiting and error retry. Suitable for multi-step processes such as login and form filling, 10 times faster than step-by-step calls

Inputs: steps (required), auto_wait, step_timeout, retry_on_fail, +3 more.

screenshotD

Screenshot

Inputs: path, fullPage, selector.

scrollC

unified scrolling (supports top/bottom/element/text/coordinates/relative/direction/loading more)

Inputs: by, to, text, amount, +5 more.

selectD

drop-down selection

Inputs: selector (required), text, index, value.

select_optionD

Select options (aliases)

Inputs: value (required), selector (required).

set_checkedD

Set check (alias)

Inputs: selector (required), checked.

set_configD

Setup configuration

Inputs: fast_timeout, long_timeout, default_timeout.

set_debugC

Set debug mode

Inputs: enabled (required).

set_storageD

Set Storage (alias)

Inputs: key (required), type, value.

snapshotB

Get the page ARIA snapshot as YAML

Inputs: no named parameters.

statusC

Get browser status

Inputs: no named parameters.

stop_loadingC

Stop loading

Inputs: no named parameters.

storageC

Storage operation (get/set/remove/clear)

Inputs: key, type, value, action.

switch_tabD

Switch tabs

Inputs: index (required).

toggle_checkboxD

Toggle checkbox (alias)

Inputs: selector (required).

typeC

unified input (supports selector/label/placeholder/index, fast/human/slow mode)

Inputs: text (required), mode, clear, delay, +7 more.

upload_fileD

File upload

Inputs: files (required), selector (required).

waitC

Unified waiting (supports time/element/disappear/text/URL/loading/network idle/DOM stable/JS conditions)

Inputs: ms, text, type, state, +4 more.

wait_forD

Wait for element (alias)

Inputs: selector (required), state, timeout.

wait_for_textD

Wait for text (alias)

Inputs: text (required), timeout.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    D1.8/5.0

    Scored across 75 tools

    Disambiguation1/5

    Many tools are explicit aliases or unified duplicates (cookies vs get_cookies/set_cookie/clear_cookies; storage vs get_storage/set_storage/clear_storage; mouse vs move_mouse/mouse_down/mouse_up; select vs select_option; checkbox vs set_checked/toggle_checkbox; get vs get_text/get_html/get_attribute/get_url/get_title). These overlapping purposes make misselection highly likely.

    Naming Consistency3/5

    Mostly snake_case, but the set mixes one-word noun/verb tools (click, wait, cookies), operation-style names, and alias variants with different conventions. Readable overall, but not a predictable verb_noun pattern throughout.

    Tool Count1/5

    75 tools is an extreme mismatch for the apparent scope. Many are redundant aliases, inflating the surface far beyond what is needed for browser automation.

    Completeness4/5

    The surface broadly covers navigation, tabs, frames, interactions, waits, assertions, cookies/storage, dialogs, upload, JavaScript eval, screenshots, and page snapshots. Minor gaps remain around network interception, download handling, and permission controls.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Connects to a running Chrome instance via CDP to expose browser control as MCP tools, preserving login state, cookies, and extensions for automation.
      19
      14 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Connects local stdio MCP servers to an existing Chrome 144+ session, preserving the user's signed-in sessions, cookies, tabs, and extension environment without launching a second browser. It provides tab control, semantic snapshots, screenshots, pointer, keyboard, form selection, scrolling, navigation, and waiting tools.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP clients to drive individually named Chrome profiles, providing tools for tabs, navigation, page interaction, screenshots, JavaScript evaluation, console logs, and network inspection over stdio without a TCP port.
      MIT