TabRunner

app.tabrunner由 tabrunner.app 發布v0.17.3更新於 Nov 4, 2026

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

概覽

AI 產生的概覽

TabRunner 透過本機橋接驅動使用者自己的 Chrome,讓助理可以委派瀏覽器任務,或逐步點擊操作頁面。

可以做什麼
  • 檢查連線狀態,並追蹤委派任務的計畫、進度、提問與中途調整
  • 開啟與結束對某個分頁的直接控制工作階段,取得截圖與頁面快照
  • 在受控分頁中導覽、點擊、輸入、填寫欄位、按鍵與捲動
  • 檢視網路請求與主控台訊息,並在頁面中執行 JavaScript
  • 列出並切換使用者已開啟的分頁
  • 重設或壓縮每個用戶端各自的對話歷史
適用情境
當任務需要使用者真實的瀏覽器工作階段、既有登入狀態與已開啟的分頁時適用,例如讀取登入後的頁面、填寫表單或驗證某個流程。可以把自然語言任務交給 TabRunner 自帶的代理,也可以由助理逐步控制。
執行需求
透過 bunx 以 stdio 在本機執行,需要安裝 bun。需安裝 TabRunner Chrome 擴充功能並在「設定 → MCP」中開啟橋接,且 TABRUNNER_BRIDGE_PORT 需與該設定一致。僅支援桌面端。
安裝前請注意
它在使用者已登入的 Chrome 中操作,讀取的頁面與資料可能屬於隱私。任務可以點擊、輸入、填寫表單並送出,停止任務不會復原任何操作。TabRunner 在付款、代為傳送、刪除等有後果的操作前會暫停提問,助理應把問題轉達給使用者而不是自行決定。browser_evaluate 會在頁面中執行任意 JavaScript。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 TabRunner,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

tabrunner-mcp

The MCP server for TabRunner, the browser agent that works in your own Chrome, with your tabs and the accounts you're already signed in to. Claude Code, Claude Desktop, Codex or any other MCP client can give TabRunner a task and follow it to the answer, or click through a page itself.

It needs bun and the TabRunner extension, with the bridge turned on in Settings → MCP.

bash
claude mcp add --scope user tabrunner -- bunx tabrunner-mcp@latest

Or install the plugin, which adds this server plus a skill that teaches the model how to use it:

bash
claude plugin marketplace add tabrunner/tabrunnerclaude plugin install tabrunner@tabrunner

Call health first: it says whether the extension is connected, and what to do if it isn't. The tools and settings are in docs/mcp.md.

來源:packages/mcp/README.md,提交 949a120

工具

23

health

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

無需輸入參數。

run

Run a browser task

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 tab while it lives, or opening url / the start page) and leaves the user's current page alone; pass background: false only when the task is explicitly about what the user is looking at.

輸入參數urltask必填imagesbackground

get_status

Follow the task

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.

輸入參數waitwaitSeconds

answer

Answer TabRunner's question

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.

輸入參數text必填

steer

Steer the running task

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.

輸入參數text必填

stop

Stop the task

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.

輸入參數runId

screenshot

See the browser

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.

無需輸入參數。

new_conversation

Start a fresh chat

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.

無需輸入參數。

compact

Compact the chat

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.

無需輸入參數。

browser_start

Start driving the browser yourself

Open a direct-control session and get the first page snapshot. Use this instead of run when you want to drive step by step rather than hand TabRunner the whole task. run is still the better choice for anything long or open-ended, because TabRunner's own model plans it. Like run, it works in a background tab of its own (reusing the tab the previous session drove while it lives, or opening url / the start page) and leaves the page the user is reading alone; pass url to open a specific page. Pass background: false only when the task is about the page the user is on. State the goal: it names the chat the user will see in TabRunner's history, and every action you take is recorded under it. IMPORTANT: driving directly bypasses TabRunner's own model and its rule of stopping to ask before consequential actions, so paying, sending on the user's behalf, deleting, or submitting is yours to put to the user first.

輸入參數urlgoal必填background

browser_snapshot

Read the page

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_network_requests

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

輸入參數limiturl_filter

browser_console_messages

Read console output

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.

輸入參數limitonly_errors

browser_navigate

Go to a URL

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

輸入參數url必填snapshot

browser_click

Click an element

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.

輸入參數ref必填snapshot

browser_type

Type text

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

輸入參數text必填snapshot

browser_fill

Set a field's value

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.

輸入參數ref必填text必填snapshot

browser_evaluate

Run JavaScript in the page

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 has no plan gate. The code runs exactly as written, so the consequential-action rule (paying, sending on the user's behalf, deleting, submitting, by fetch or any other means) is yours to put to the user first. Returns the resulting page.

輸入參數snapshotexpression必填

browser_press_key

Press a key

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

輸入參數key必填snapshot

browser_scroll

Scroll the page

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.

輸入參數amountsnapshotdirection必填

browser_tabs

List open 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.

輸入參數query

browser_switch_tab

Switch tabs

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.

輸入參數tab_id必填

browser_end

Stop driving

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.

無需輸入參數。

版本歷史

8
  1. v0.17.3最新Nov 4, 2026
  2. v0.17.1Nov 4, 2026
  3. v0.17.0Nov 3, 2026
  4. v0.16.1Oct 30, 2026
  5. v0.15.0Oct 23, 2026
  6. v0.14.2Oct 22, 2026
  7. v0.14.0Oct 21, 2026
  8. v0.13.0Oct 17, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分