A lightweight MCP (Model Context Protocol) server that enables control of the Tabby terminal via Chrome DevTools Protocol (CDP).
- list_targets - List CDP targets (tabs) with index, title, url, ws_url
- execute_js - Execute JavaScript code in Tabby's Electron context
- query - Query DOM elements by CSS selector (auto-waits for Angular)
- screenshot - Capture Tabby window screenshot
This MCP server was built to automate development and testing of TabbySpaces.
TabbySpaces was written 100% by Claude Code - Igor didn't look at the Angular code once. But for this Python project, he has MCP experience and actually reviewed the code.
Here's the fun part: Claude Code (running inside TabbySpaces) served as the tester for this project. The AI that built the plugin now uses this MCP server to test it. Full circle.
- Python 3.10+
- uv package manager
- Tabby terminal with CDP debugging enabled
pip install tabby-mcpOr with uv:
uv pip install tabby-mcpgit clone https://github.com/halilc4/tabby-mcp.git
cd tabby-mcp
uv synctabby.exe --remote-debugging-port=9222Add to your Claude Code MCP settings (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"tabby": {
"command": "uv",
"args": ["--directory", "/path/to/tabby-mcp", "run", "tabby-mcp"]
}
}
}Once configured, Claude Code can interact with Tabby through MCP tools:
# Execute JavaScript
execute_js({ "code": "document.title" })
# Query DOM elements
query({ "selector": ".tab-bar button" })
server.py -> tools.py -> cdp.py -> Tabby (CDP port 9222)
| Module | Purpose |
|---|---|
server.py |
MCP server entry point with stdio transport |
tools.py |
MCP tool definitions and handlers |
cdp.py |
CDP connection management via pychrome |
MIT