Tabhand
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Tabhandopen my Gmail and summarize the three newest unread emails"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tabhand
Let AI agents use your real, logged-in Chrome. No debugger banner, no tab to keep open.
A free, open-source tool by Ciro Cesar Maciel.
Your agent needs a dashboard, an inbox or an account that only opens logged in as you. Tabhand gives it your own Chrome: it reads pages, clicks, types and takes pictures in a tab group of its own, in the window you are using. It works from anywhere: Claude Code on your laptop, or an agent running in the cloud.
Why another browser tool
Most tools drive Chrome through its debugger (the Chrome DevTools Protocol). That is powerful, but Chrome shows "… started debugging this browser" on top of every window while it is on, and many tools need a tab or a window held open, or a new id to paste every time.
Tabhand uses only plain extension APIs (tabs, scripting, captureVisibleTab, userScripts), so:
no banner, ever;
no tab to keep open: the extension's service worker holds the connection, and turns itself back on with Chrome;
one connection code, made once: paste it into your agent's settings and forget it;
your window, your tabs: the agents' tabs open in the background, in their own tab group, never in another window.
Related MCP server: chrome-agent-mcp
Install the extension
Download
tabhand-extension.zipfrom the latest release and unzip it into a folder you will keep.Open
chrome://extensions, turn on Developer mode, click Load unpacked and pick that folder.Tabhand opens its page with your connection code. Copy it.
Optional: in the extension's Details, turn on Allow user scripts so agents can run code in pages (
browser_script).
The Chrome Web Store listing is on the way.
Connect your agent
Claude Code
claude mcp add tabhand --scope user --env TABHAND_CODE="<your connection code>" -- npx -y github:ciro-maciel/tabhandCursor, Claude Desktop and other MCP clients
{
"mcpServers": {
"tabhand": {
"command": "npx",
"args": ["-y", "github:ciro-maciel/tabhand"],
"env": { "TABHAND_CODE": "<your connection code>" }
}
}
}Instead of the environment variable, you can save { "code": "<your connection code>" } in ~/.config/tabhand/config.json. The server needs Node 22+ (or Bun) and has no dependencies.
Your own app
import { call } from 'tabhand/client'
import { functionTools, toolOf } from 'tabhand/tools'
const tools = functionTools() // OpenAI-style tool definitions for your model
const result = await call(code, toolOf('browser_read').method, { tabId: 123 })npm install github:ciro-maciel/tabhand. Each tool has a risk: read only looks or moves around, act changes something; if your app asks a person before acting, weigh the act ones.
The tools
Tool | What it does | Risk |
| Lists your open tabs | read |
| Opens a tab in your window, in the agents' group, and waits for it | act |
| Goes to an address, or back | act, read |
| The page's text and its elements, numbered, including iframes and shadow DOM | read |
| Acts on a numbered element | act |
| Hovers an element, CSS | read |
| Down, up, top, bottom | read |
| A picture of a tab; you are taken back to the tab you were on | read |
| Runs JavaScript in the page and returns the result | act |
| Closes a tab | read |
How it works
your agent ──(MCP or tabhand/client)──▶ tunnel server ◀──(WebSocket, held by the service worker)── Tabhand in your Chrome
wss://…/tunnel/<id>/extension wss://…/tunnel/<id>/upstreamThe extension makes a random 128-bit id once and keeps one WebSocket open to the tunnel server. Your connection code is that id's address on the server; each request your agent sends travels through the tunnel to the extension, which answers it with extension APIs. The public server, wss://tabhand.ciromaciel.click, is free; it relays messages and stores nothing.
Run your own tunnel server
It is one Cloudflare Worker with a Durable Object, on the free plan:
git clone https://github.com/ciro-maciel/tabhand && cd tabhand
bunx wrangler deploy --config tunnel/wrangler.tomlThen, in the extension's popup, open Advanced and set the server to wss://<your worker's host>. Your connection code changes with it.
Security
The connection code is a key to your browser, logged in as you: whoever holds it can read and act in your tabs. Keep it like a password. If it leaks, open the popup and click Make a new code: the old one stops working at once. Turn off in the popup, or the icon's badge OFF, cuts every agent off.
Agents are told never to type passwords or card numbers, but that is an instruction, not a wall: give the code only to agents and apps you trust. See SECURITY.md to report a vulnerability.
Limits
Chrome only photographs the tab on view: a screenshot shows the agent's tab for an instant.
Clicks and typing are synthetic events; a few heavily protected pages ignore them.
No console or network inspection: that needs the debugger, which is what Tabhand avoids.
More from Ciro Cesar Maciel
Free, open-source Mac apps and tools at ciromaciel.click.
License
MIT. The tunnel server is ported from Playwriter (MIT); see NOTICE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Let your AI agent operate any website through a real, logged-in browser session.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.12MIT
- AlicenseBqualityDmaintenanceEnables AI agents to fully control Google Chrome: navigate, click, fill forms, inspect DevTools, and manage tabs with parallel execution and session isolation.244 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create, read, and operate granted background tabs in Chrome via a local stdio MCP server, preserving the human's front tab. Supports tab groups, navigation, clicking/typing, screenshots, and human-priority permissions.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Chrome, Edge, Brave and other Chromium browsers through an extension and native messaging host, exposing a Claude-in-Chrome-compatible tool set for real clicks, typing, screenshots, accessibility-tree reading, page text, form filling, JavaScript execution, console and network inspection, file uploads and GIF recording. Agent sessions run in isolated tab groups with per-site permission prompts, activity logging and a global stop control.Apache 2.0