
TabRunner MCP server
app.tabrunner/tabrunner·v0.15.0·2 starsGive browser tasks to TabRunner, an agent in your own Chrome that uses your logins.
2 stars476 downloads/wk
Reviews
Write oneNobody has reviewed TabRunner yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
TabRunner tools (23, 3 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
answerReply to the question a task stopped on (state: question) and let it continue. TabRunner stops to ask before consequential actions (paying, sending on the user's behalf, deleting or submitting), so relay the question to the user and send THEIR decision, never your own.
browser_clickClick by ref with a real trusted event, not a synthetic dispatch a site can ignore. Returns the resulting page. Take the ref from the most recent snapshot.
browser_console_messagesThe driven tab's console messages and uncaught exceptions since the session attached. When a page misbehaves for no visible reason, the JavaScript error usually names the broken piece.
browser_endClose this client's direct-control session and remove its on-page badge. Call it when you're done. Other clients and the panel keep their own tasks. A session left open expires after a few idle minutes.
browser_evaluatewrite actionRun JavaScript in the driven tab's page context and get the result back. Promises are awaited; return only JSON-serializable values, not DOM nodes. For what the other tools cannot do: reading an attribute the tree omits, piercing shadow DOM, calling the page's own functions, fetching an endpoint the page itself uses. Results are bounded and credential-shaped values are stripped. A direct session h
browser_fillSet the value of a field by ref. Supports text inputs, textareas, selects (by option label or value) and contenteditable. The value is set the way the page's own code notices, so it lands where typed keystrokes don't (pages that swallow key events, focus that won't stick). Pass an empty string to clear a field. Returns the resulting page.
browser_navigateNavigate the driven tab and return the new page's snapshot.
browser_network_requestsThe requests the driven tab has made since the session attached, with method, URL, status and failures. Tells 'the server answered with an error' apart from 'the page never sent it'. Response bodies are not captured; re-fetch a GET with browser_evaluate when the payload matters.
browser_press_keyA single key press: "Enter" to submit, "Escape" to dismiss, "Tab" to move on. Returns the resulting page.
browser_scrollScroll the driven tab and return what is now in view. Content below the fold is not in a snapshot until you scroll to it.
browser_snapshotThe current page as an accessibility tree with a ref on every interactive element. This is how you see, and where every ref you click comes from. Refs belong to the snapshot that produced them: after anything changes the page, re-read before acting.
browser_startbrowser_switch_tabPoint every later action at another tab. The tab does not need to be on screen: actions work on background tabs too. It comes to the front only while the user is watching the tab you leave; otherwise the work goes on without moving their screen.
browser_tabsOpen tabs with their id, title and URL. These are all the tabs the user has open, so pass query to get only the ones you need. Find the one you need, then switch.
browser_typeType into whatever is focused. Click the field first. Real keystrokes, so a site's own handlers fire. Returns the resulting page.
compactSummarize this chat's history so far, so every task replays a summary instead of the whole transcript. The raw messages stay in the user's panel; only what the model re-reads changes, and nothing is deleted. Reach for it when a long chat's tasks get slow or one dies on a context-length error. Cannot run while a task is in flight.
get_statusWhere the current task stands: the plan and the steps taken; when it ends, the answer, the question it stopped on or the error. By default this WAITS for the next change instead of returning immediately, so following a ten-minute task costs one call per real event. Keep calling it until state is done, error, or question.
healthCheck that the browser agent is reachable before driving it. Reports whether the TabRunner extension is connected to this bridge, which extension it is, whether it has a provider ready to think with, and what to do when any of that is missing. Call this first, and again after any connection error.
new_conversationForget the current chat and start clean. TabRunner keeps a separate chat for each connected client. Each task continues the previous ones, so it remembers the pages it visited and what it found. Reset only when the new task has nothing to do with the old one.
runwrite actionGive TabRunner a task to do in the user's real Chrome, with their existing logins and sessions to navigate, read pages, click, type, fill forms and extract data. Describe the goal in plain language, as you would to a person; TabRunner plans and executes the steps itself. Returns immediately: follow the task with get_status. By default the task works in its own background tab (reusing this chat's t
screenshotA picture of the tab this client's task or direct-control session is driving. Start one with run or browser_start first. It never captures another client's tab or the user's current page as a fallback.
steerwrite actionSend a note into a task that is already running, such as a correction, an extra constraint or a change of approach. It lands between tool calls, so the task absorbs it without restarting. Use this instead of stop+run when the goal is still the same.
stopStop this client's current task, or pass runId to cancel one of its queued tasks. It cannot stop another client's task. Stopping leaves the browser as it is. Nothing is undone.
Public scan report
scanner v0.1.10 · 2026-10-24 · same rubric, same numbers if you re-run it
- Code scan2 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 1 days ago15/15
- Maintainer identityregistry namespace matches repository owner; website matches verified namespace9/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/tabrunner-mcp.js: …eCode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
How TabRunner compares
Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 86/100
- higher than 67% of 807 Scraping and browsing servers
- Tools
- 23
- the typical Scraping and browsing server has 7
- Tools that change things
- 13%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 60% of 553 Scraping and browsing servers
- Downloads a week
- 476
- more than 85% of 295 Scraping and browsing servers with a package
What its tools let an agent do: 18 read · 1 create · 2 change · 2 run or deploy
Install TabRunner in Claude Code, Cursor or VS Code
Runs npx -y tabrunner-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add tabrunner -- npx -y tabrunner-mcp
What the publisher says
From the TabRunner repository's README, as published. We do not edit it. Read it on GitHub
TabRunner
You give the goal. It runs the tabs. An AI agent that drives your real browser (your tabs, your sessions and your logged-in accounts) through any provider you choose. Describe a task in the side panel; TabRunner reads pages, clicks, types, and navigates until the job is done.
Named for what it does: it runs your tabs. You give the goal, it does the running in your
browser, with your authority, while you watch.
Why
Most browser agents run in a sandboxed, logged-out browser. TabRunner runs in yours, so it can act on the sites you're actually logged into. And it's provider-agnostic by construction: no vendor lock-in, no relay, no account with us. Your API key (or the subscription you sign in with) goes straight from the extension to your provider.
Features
Gemini, OpenRouter, Groq, Mistral, xAI, Ollama; Anthropic, OpenAI and Kimi each sign in with a subscription) plus any custom endpoint speaking the OpenAI or Anthropic wire format.
- Bring your own provider: 15 presets (Anthropic, OpenAI, Kimi, Z.ai, Qwen, DeepSeek,
are genuine trusted events, not synthetic JS dispatches that sites can ignore.
- Real trusted input: clicks and keystrokes go through the Chrome DevTools Protocol, so they
([ref=e12] button "Submit"): small prompts, stable refs, and sanitized, capped results. Passwords, one-time codes and card numbers never leave the page.
- Sees the page, not the HTML: the model works from a compact semantic tree
(fill, evaluate); read-only network and console rings let it see a failing request or a script error itself.
- Page-internals tools: when keystrokes won't land, the agent acts directly in the page
actions (paying, sending, deleting) come back for confirmation. Automatic retry with backoff on transient provider errors, a step budget, truncation detection, and a Stop button that actually stops.
- Guardrails that hold: you approve the plan before anything happens, and consequential
Claude Code-style.
- Live run status: current action, elapsed time, and token spend while the agent works,
wire format; omitted entirely when you want provider defaults.
- Reasoning effort control: optional per-provider effort (none → max), mapped to each
endpoint lists, showing you which one that is; pin a model and effort per task from the panel header.
- Auto model resolution: leave the model on Auto and TabRunner runs the newest model the
(MEMORY.md) load into every run; a ## site: section loads only when a task starts on that site. Editable on the options page, off with one toggle.
- Remembers across runs: your standing instructions (AGENTS.md) and the agent's own notes
task matches: /skill new distills a conversation you just steered into one, /skill runs one on demand, and skills tied to a site surface only there. Import one from a URL, GitHub owner/repo, or pasted markdown (SKILL.md-compatible); export as markdown to share.
- Skills: saved instructions the agent loads when a
Ask for it in the panel and approving the plan is the consent; the run fires later in a tab of its own and notifies you when it lands. The agent can pace itself the same way: schedule a follow-up, keep checking, cancel when the goal is met. Review and cancel them in Settings.
- Runs on a timer: "every weekday at 9am, summarize my inbox", "at 3pm, check the delivery".
TabRunner a task and follow it to the answer, using the same browser and the same logins, labelled in your history with which client did it. The client says what it wants done and TabRunner's model does the driving, or the client drives directly when the job is small and exact. TabRunner dials out too:
- Two-way MCP: Claude Code, Claude Desktop, or any Model Context Protocol client can hand
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
TabRunner: common questions
- Is TabRunner MCP server safe?
- Yes, by our scan: it is graded A (86/100). Read the TabRunner safety report
- How do I install TabRunner?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does TabRunner need an API key?
- No secret keys are declared. It reads 1 setting from the environment.
- Is TabRunner maintained?
- The last commit was 2 days ago (2026-10-23). The latest release is v0.15.0.
- What can I use instead of TabRunner?
- Servers from other publishers that do the same job: Tap MCP server, Agentic Browser MCP server and Unbrowse MCP server. Compare all TabRunner alternatives.
- How does TabRunner compare with other Scraping and browsing MCP servers?
- safety score 86/100 (higher than 67% of 807 Scraping and browsing servers); tools 23 (the typical Scraping and browsing server has 7); tools that change things 13% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to TabRunner
Same job from other publishers: the closest match first, then the best rated.
TapBrowser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.not reviewedGrowingB
Agentic BrowserGive any AI agent your real Chrome: text perception, visible cursor, ~4x fewer tokens.not reviewedGrowingB- UnbrowseWebsites as APIs: read pages, run site tasks via learned APIs, cloud browser with saved logins.not reviewedEstablishedA
- SafariNative Safari browser automation for AI agents — 98 tools, zero Chrome overhead.not reviewedEstablishedC
- Agent360 Browser MCPDrive your real, logged-in Chrome from any AI agent - 40 tools. Needs our Chrome extension too.not reviewedEstablishedA