MCP.Market

TabRunner MCP server

by tabrunner.app·app.tabrunner/tabrunner·v0.15.0·2 stars

Give browser tasks to TabRunner, an agent in your own Chrome that uses your logins.

A86/100grade A
What users say
No reviews yet
Be the first
Safety scan
A86/100

full report

Adoption
Growing

2 stars476 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • answer

    Reply 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_click

    Click 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_messages

    The 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_end

    Close 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 action

    Run 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_fill

    Set 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_navigate

    Navigate the driven tab and return the new page's snapshot.

  • browser_network_requests

    The 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_key

    A single key press: "Enter" to submit, "Escape" to dismiss, "Tab" to move on. Returns the resulting page.

  • browser_scroll

    Scroll 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_snapshot

    The 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_start
  • browser_switch_tab

    Point 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_tabs

    Open 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_type

    Type into whatever is focused. Click the field first. Real keystrokes, so a site's own handlers fire. Returns the resulting page.

  • compact

    Summarize 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_status

    Where 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.

  • health

    Check 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_conversation

    Forget 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 action

    Give 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

  • screenshot

    A 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 action

    Send 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.

  • stop

    Stop 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

1 medium
  • 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 usedexec.eval
    dist/tabrunner-mcp.js: …eCode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
Overall 86/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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.

All TabRunner alternatives →
  • Tap
    Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
    B
  • Agentic Browser
    Give any AI agent your real Chrome: text perception, visible cursor, ~4x fewer tokens.
    B
  • Unbrowse
    Websites as APIs: read pages, run site tasks via learned APIs, cloud browser with saved logins.
    A
  • Safari
    Native Safari browser automation for AI agents — 98 tools, zero Chrome overhead.
    C
  • Agent360 Browser MCP
    Drive your real, logged-in Chrome from any AI agent - 40 tools. Needs our Chrome extension too.
    A