A page-scoped MCP server for Chrome DevTools Protocol automation. Works with any page-scoped websocket endpoint, but built for use with WebOS in particular.
This MCP server connects directly to a Chrome DevTools page WebSocket endpoint, unlike chrome-devtools-mcp which requires a browser-targeted endpoint.
This distinction matters when debugging environments that only expose page-level sockets, such as:
- WebOS applications
- Embedded Chromium instances
- Remote debugging scenarios with limited access
pnpm install
pnpm buildThe server requires a page WebSocket endpoint. You can provide it via:
Command-line flag:
node ./dist/index.js --endpoint ws://localhost:9222/devtools/page/ABC123...Environment variable:
PAGE_WS_ENDPOINT=ws://localhost:9222/devtools/page/ABC123... node ./dist/index.jsAdd to your MCP settings file (e.g., claude_desktop_config.json):
{
"mcpServers": {
"chrome-page-devtools": {
"command": "node",
"args": [
"/path/to/webos-devtools-mcp/dist/index.js",
"--endpoint",
"ws://localhost:9222/devtools/page/YOUR_PAGE_ID"
]
}
}
}All tools are grouped into categories. By default every category is enabled, but you can tailor the surface area with command-line flags:
--tools=core,dom,network– register only the listed categories--without-tools=remote– register every category except the ones listed
Available categories:
| Category | Description |
|---|---|
core |
Evaluation, logs, and screenshots |
dom |
DOM inspection utilities |
dom-actions |
DOM interaction helpers (click, type, overlays) |
navigation |
Page navigation and reload helpers |
storage |
Cookies and storage tools |
network |
Network capture and inspection |
remote |
Remote-control / key input tooling |
overlay |
Visual overlay utilities |
events |
Event listener inspection |
console |
Console streaming and status tools |
Example:
node ./dist/index.js --endpoint ws://... --tools=dom,network --without-tools=remoteevaluate_expression- Execute JavaScript in the page context
dom_query_selector- Query and inspect elements by CSS selectordom_get_outer_html- Retrieve the full HTML of an elementdom_accessibility_tree- Dump the accessibility treedom_list_event_listeners- List DOM event listeners attached to an element, document, or window
dom_click- Click an elementdom_type_text- Type text into inputs/textareas
page_navigate- Navigate to a URLpage_reload- Reload the current page
storage_list_cookies- List cookiesstorage_set_cookie- Create or update a cookiestorage_delete_cookie- Delete a specific cookiestorage_clear_cookies- Clear all cookiesstorage_list_local_storage- List localStorage entriesstorage_set_local_storage- Set a localStorage itemstorage_remove_local_storage- Remove a localStorage item
network_start_capture- Begin capturing network requestsnetwork_stop_capture- Stop capturing network requestsnetwork_clear_capture- Clear captured requestsnetwork_list_requests- List captured requests with filtering (method, resource type, failed only)network_get_request_body- Retrieve request or response body for a specific request
remote_press_key- Dispatch remote control keys (arrows, OK, back, colored buttons, media controls, etc.)remote_type_text- Send text via character key events
list_logs- Retrieve buffered console messages, exceptions, and logsclear_logs- Clear the log buffertake_screenshot- Capture a screenshot
console_subscribe- Begin streaming console output in real timeconsole_unsubscribe- Stop streaming console outputconsole_stream_status- Report current console streaming status
overlay_highlight- Highlight an element matching a selectoroverlay_highlight_focused- Highlight the currently focused element (document.activeElement)overlay_hide- Hide any active overlay highlight immediately
resource://about/version– Exposes package version, build metadata (commit hash, dirty flag, generation timestamp), and Node runtime information