Tabz MCP - Browser Automation
Overview
Control Chrome browser programmatically via the Tabz MCP server. 70 tools for screenshots, interaction, network debugging, and more.
Tool Discovery (MCP-CLI Mode)
# List all tabz tools
mcp-cli tools tabz
# Search for specific tools
mcp-cli tools tabz | grep screenshot
mcp-cli grep "network"
# Get tool schema before calling (REQUIRED)
mcp-cli info tabz/tabz_screenshot
# Call tool
mcp-cli call tabz/tabz_screenshot '{}'
Browser Debugging (Common Issues)
Check Console Errors
mcp-cli info tabz/tabz_get_console_logs
mcp-cli call tabz/tabz_get_console_logs '{"level": "error"}'
Debug Network/API Issues
# 1. Enable capture BEFORE triggering the action
mcp-cli info tabz/tabz_enable_network_capture
mcp-cli call tabz/tabz_enable_network_capture '{}'
# 2. Trigger the action (click button, navigate, etc.)
# 3. Get failed requests (status >= 400)
mcp-cli info tabz/tabz_get_network_requests
mcp-cli call tabz/tabz_get_network_requests '{"statusMin": 400}'
# Or filter by URL pattern
mcp-cli call tabz/tabz_get_network_requests '{"urlPattern": "api/"}'
Screenshot for Visual QA
mcp-cli info tabz/tabz_screenshot
mcp-cli call tabz/tabz_screenshot '{}'
# Returns file path - use Read tool to view the image
Check Page State
mcp-cli info tabz/tabz_get_page_info
mcp-cli call tabz/tabz_get_page_info '{}'
# Returns URL, title, loading state
mcp-cli info tabz/tabz_get_element
mcp-cli call tabz/tabz_get_element '{"selector": "#error-message", "includeStyles": true}'
Performance Profiling
mcp-cli info tabz/tabz_profile_performance
mcp-cli call tabz/tabz_profile_performance '{}'
# Returns: DOM node count, JS heap size, event listeners, timing metrics
DOM Tree Inspection
mcp-cli info tabz/tabz_get_dom_tree
mcp-cli call tabz/tabz_get_dom_tree '{"maxDepth": 3}'
# Or focus on specific element
mcp-cli call tabz/tabz_get_dom_tree '{"selector": "main", "maxDepth": 5}'
Code Coverage Analysis
mcp-cli info tabz/tabz_get_coverage
mcp-cli call tabz/tabz_get_coverage '{"type": "js"}'
# Shows used vs unused bytes per file
Tool Categories
| Category |
Tools |
Purpose |
| Tab Management |
listtabs, switchtab, renametab, openurl |
Navigate tabs |
| Tab Groups |
creategroup, addtogroup, ungrouptabs |
Organize tabs |
| Windows |
listwindows, createwindow, tile_windows |
Window management |
| Audio |
speak, listvoices, playaudio |
TTS notifications |
| Page Info |
getpageinfo, getelement, getdom_tree |
Inspect content |
| Interaction |
click, fill |
Click/type |
| Screenshots |
screenshot, screenshot_full |
Capture visuals |
| Downloads |
downloadimage, downloadfile |
Save files |
| Network |
enablenetworkcapture, getnetworkrequests |
Debug APIs |
| Console |
getconsolelogs, execute_script |
Debug JS |
| Performance |
profileperformance, getcoverage |
Diagnose slowness |
| Emulation |
emulatedevice, emulategeolocation |
Responsive testing |
Tab Groups (Parallel Workers)
When multiple Claude workers run in parallel, each MUST create their own named group:
# Create unique group for this worker
mcp-cli info tabz/tabz_create_group
mcp-cli call tabz/tabz_create_group '{"tabIds": [123, 456], "title": "ISSUE-ID: Research", "color": "blue"}'
# Add more tabs later
mcp-cli call tabz/tabz_add_to_group '{"groupId": 12345, "tabIds": [789]}'
# Cleanup when done
mcp-cli call tabz/tabz_ungroup_tabs '{"tabIds": [123, 456, 789]}'
Group colors: grey, blue, red, yellow, green, pink, purple, cyan
Quick Patterns
Screenshot:
mcp-cli call tabz/tabz_screenshot '{}'
Click:
mcp-cli call tabz/tabz_click '{"selector": "button.submit"}'
Fill form:
mcp-cli call tabz/tabz_fill '{"selector": "#email", "value": "[email protected]"}'
Switch tab:
mcp-cli call tabz/tabz_list_tabs '{}' # Get tab IDs (large integers like 1762556601)
mcp-cli call tabz/tabz_switch_tab '{"tabId": 1762556601}'
TTS notification:
mcp-cli call tabz/tabz_speak '{"text": "Done!", "priority": "high"}'
Important Notes
- Always check schema first: Run
mcp-cli info tabz/<tool> before mcp-cli call
- Tab IDs: Chrome tab IDs are large integers (e.g.,
1762556601), not 1, 2, 3
- Network capture: Enable BEFORE the page makes requests
- Screenshots: Return file paths - use Read tool to view
- Selectors: CSS selectors -
#id, .class, button[type="submit"]
- JSON quoting: Use single quotes around JSON, double quotes inside
Heredoc for Complex JSON
For complex nested JSON, use heredoc to avoid escaping issues:
mcp-cli call tabz/tabz_execute_script - <<'EOF'
{"code": "document.querySelector('button').click()"}
EOF
Resources
See references/workflows.md for more patterns.