Tabhand について
Tabhand は、ログイン済みの Chrome をコーディングエージェントから操作するローカル MCP サーバーです。各エージェントのタブを分離し、操作の確認や一括停止にも対応します。
主な機能
- 01ログイン済み Chrome の利用
- 02バックグラウンドタブでの操作
- 03エージェントごとのタブ分離
- 04操作の確認と一括停止
- 05複数の Chrome プロファイル管理
活用シーン
- 01ログイン済みメールやダッシュボードへのアクセス
- 02フォーカスを移さずにウェブページを操作
- 03複数エージェントのブラウザータブを分けて並行実行
MCP 対応
ナビゲーション、ページスナップショット、クリック、入力、スクリーンショット、タブ管理などのブラウザーツールを MCP 経由で公開します。ローカルで動作し、Unix socket で Chrome 拡張機能に接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
13掲載時のツール一覧 · 6 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | いいえ | 読み込むページ。例:https://example.com。省略すると空白のタブが開きます。 |
| profile | string | いいえ | タブを開く Chrome プロファイル。browser_list_profiles が返す名前または ID で指定します。ユーザーが複数のプロファイルで Tabhand を使用している場合のみ必要です。以降に開くタブもそのプロファイルで開きます。 |
詳細
Tabhand
AI エージェントが、アカウントにログイン済みのご自身の Chrome を使えるようにします。
フォーカスを奪うことのないバックグラウンドタブで動作します。
npx tabhand setup
Claude Code、Codex、Cursor、OpenCode、Gemini CLI、Copilot などに対応しています。19 のエージェントに加え、MCP に対応するその他のツールでも使えます。
続いて、Chrome ウェブストアから拡張機能を追加してください。セットアップ時にページが開きます。
Tabhand を選ぶ理由
- ログイン情報はそのまま使えます。空のブラウザーではありません。 エージェントは普段お使いの Chrome で動作するため、メール、ダッシュボード、管理画面をすぐに使えます。パスワードを渡す必要はありません。
- 作業を続けられます。 各エージェントには、それぞれの名前でグループ化され、ミュートされた専用のバックグラウンドタブが用意されます。Chrome が前面に切り替わることはありません。
- 自分のタブは自分のものです。 エージェントがアクセスできるのは、自分で開いたタブだけです。ユーザーのタブや、別のエージェントのタブにはアクセスできません。
- 動作を見守れます。 各エージェントには、滑らかに動いてクリックや入力を行う専用のカーソルがあり、タブにはエージェントのアイコンが表示されます。ツールバーのボタンをクリックすれば、すべてのエージェントを一度に一時停止できます。
- サーバーは不要です。 Tabhand は分析データを収集せず、すべてお使いのコンピューター上で動作します。ページの内容を受け取るのは、実行中のエージェントだけです。プライバシーポリシーをご覧ください。
agent ──stdio──▶ tabhand mcp ──Unix socket──▶ native host ──native messaging──▶ extension ──chrome.debugger──▶ agent's tabs
- デフォルトでバックグラウンド動作します。 各エージェントセッションは、エージェント名のタブグループ内に、
active: falseのタブを開きます。フォーカスのエミュレーションによってタブのレンダリングが維持されるため、前面に表示しなくてもクリック、入力、スクリーンショットの取得ができます。エージェントのタブはミュートされ、動画がすべて読み込まれるのを待たず、ページが使える状態になったら次に進みます。 - エージェントは担当範囲を守ります。 拡張機能がセッションに許可するのは、そのセッションが開いたタブと、それらのページが開いたタブやポップアップのみです。あなたのタブや、ほかのエージェントのタブは見えません。
- パスワードマネージャーと共存できます。 iCloud Passwords の自動入力メニューなど、別の拡張機能のフレームが表示されている間、Chrome は Tabhand にページを操作させません。Tabhand はエージェントのタブからそうしたフレームを取り除き、実行中だった手順を続けます。
- ネットワークポートは使いません。 ブリッジは、あなたしか読み取れないディレクトリ内の Unix ソケットを介して通信し、実行のたびに新しいトークンを使います。Web ページやほかのマシンから接続することはできません。
- 機密情報のログも、テレメトリーもありません。 ブリッジが記録するのは接続と切断のイベントのみです。URL、ページの内容、入力したテキストは記録しません。
- 作業の様子を確認できます。 エージェントがタブで作業している間、ページの読み込み後もカーソルがページ上に表示されます。エージェントがクリックした場所へ滑らかに移動し、クリックのたびに波紋を表示し、入力中は点滅し、タブに切り替えると手を振り、エージェントが作業を終えると消えます。あなたが見ている間だけアニメーションし、エージェント自身のスクリーンショットには表示されません。
- エージェントのタブはひと目で分かります。 エージェントがタブで作業している間、タブのアイコンはエージェントの矢印に変わります。作業が終わると、サイト本来のアイコンに戻ります。
- エージェントごとに専用の色があります。 Claude、Codex、OpenCode、Cursor、Gemini、Copilot には、それぞれ専用のカーソルとタブグループの色が割り当てられます。それ以外は、専用の名前が付いた紫色のカーソルになります。
tabhand mcp --label <name> --theme <theme>で上書きできます。 - 停止ボタンがあります。 ツールバーのアイコン、または Chrome の「デバッグを開始しました」バーにある「キャンセル」をクリックすると、すべてのエージェントを一度に一時停止できます。
- 複数の Chrome プロファイルに対応します。 Tabhand を複数のプロファイル(仕事用と個人用など)にインストールすると、エージェントは各プロファイルを認識し、「仕事用プロファイルを使って」と指定できます。プロファイル内で Tabhand のアイコンを右クリックし、「このプロファイルに名前を付ける」を選ぶと、エージェントが認識できる名前を設定できます。または、そのプロファイルの Google メールアドレスを入力してください。プロファイルを選ばない場合、エージェントは最初に接続したプロファイルを使います。あるプロファイルで Tabhand を一時停止すると、新しい作業は Tabhand が有効な別のプロファイルで行われます。特定のプロファイルを指定したエージェントはそのプロファイルにとどまります。そのプロファイルを一時停止すると、別の場所でサインインするのではなく、そのことをエージェントに知らせます。

セットアップ(macOS、Google Chrome)
npx tabhand setup
これで完了です。
- Tabhand を
~/.tabhandにインストールし、Chrome に接続します。 - 検出したすべてのエージェントに、すべてのプロジェクトで Tabhand を追加します。新しいセッションにはブラウザーのツールが追加され、サーバーの指示によって、エージェントは必要に応じてそれらのツールを使います。
- 変更を加える前に確認を求めます。エージェントが独自の
mcp addコマンドを持つ場合は、それを使ってセットアップします。それ以外の場合は、コメントを保持したままエージェントの設定ファイルを直接編集し、元のファイルを~/.tabhand/backupsにバックアップします。 - Chrome ウェブストアで Tabhand を開き、拡張機能を追加できるようにします(追加は一度だけです)。その後、Chrome が接続されるまで待機します。
対応しているエージェント:
- Claude Code、Codex、OpenCode、Cursor、Gemini CLI、Qwen Code、VS Code(Copilot)、Copilot CLI、Kiro、Amp、Factory Droid、Warp、Junie、Antigravity
- Devin Desktop(Windsurf)、Claude Desktop、Cline、Zed
一部のエージェントにのみ追加するには、npx tabhand setup --harness claude,codex を実行します。
tabhand status はインストール状態、Chrome への接続、各エージェントの状態を確認します。tabhand remove はすべてを元に戻します。更新するには、npx tabhand@latest setup を再度実行します。
ほかの MCP クライアントは、~/.tabhand/bin/tabhand mcp を直接実行できます。
Tabhand での作業
npm install
node bin/tabhand.mjs setup # builds dist/tabhand.mjs and installs it from this checkout
node bin/tabhand.mjs reload # after changing the extension's code
チェックアウトした場合は、Chrome ウェブストアから追加するのではなく、拡張機能をパッケージ化されていない状態で読み込みます(デベロッパーモードを有効にしてから「パッケージ化されていない拡張機能を読み込む」を選択します)。
セットアップでは、単一のバンドルファイル(npm run build でビルドされる dist/tabhand.mjs)をコピーします。macOS では Chrome の子プロセスが Documents、Desktop、Downloads にアクセスできないためです。エージェントと Chrome はどちらも ~/.tabhand/bin/tabhand を通じて起動します。このランチャーは、エージェントアプリがシェルの PATH を引き継がないため、セットアップの実行に使われた Node.js を記録します。その Node.js が後で削除された場合は、別のものを探します。Chrome が接続しない場合は、~/Library/Application Support/tabhand/host.log にあるブリッジのログで原因を確認できます。
ツール
| ツール | 機能 |
|---|---|
browser_open_tab | エージェントのタブグループにバックグラウンドタブを開き、必要に応じて URL を読み込みます。使用する Chrome プロファイルを指定できます |
browser_navigate | セッションのタブのいずれかで URL を読み込みます |
browser_snapshot | ページをアクセシビリティのアウトラインとして読み取ります。ページ上で通常の要素をクリック可能にしたものも含め、操作可能な要素には e123 のような参照 ID が付きます |
browser_click | 参照 ID、または表示されているテキストを指定して要素をクリックします |
browser_type | フィールドに入力します。必要に応じて入力前に内容を消去し、入力後に Enter キーを押すことも、テキストでドロップダウンの選択肢を選ぶこともできます |
browser_press_key | Shift+Tab などのキーまたはキーの組み合わせを押します |
browser_scroll | 上下にスクロールします |
browser_upload_file | ファイルピッカーを開くボタン経由、またはファイルフィールドに、コンピューター上のファイルを添付します(システムダイアログは表示されません) |
browser_handle_dialog | ページが開いた確認ダイアログまたはプロンプトダイアログを承認または閉じます(アラートは自動的に閉じられます) |
browser_screenshot | バックグラウンドでも、タブのスクリーンショットを撮影します |
browser_list_tabs | すべての Chrome プロファイルにある、セッションのタブを一覧表示します |
browser_list_profiles | Tabhand がインストールされている Chrome プロファイルを名前とともに一覧表示し、それぞれが有効か一時停止中かを示します |
browser_close_tab | セッションのタブを閉じます |
テスト
npm testは、スモークテストを除くすべてのテストを実行します。node test/setup.mjsは、既存のエージェント設定ファイルがある使い捨てのホームフォルダーで、セットアップ、ステータス確認、削除を実行します。Tabhand が追加されること、コメントやその他の設定が保持されること、2 回目の実行で変更が発生しないこと、ランチャーが MCP サーバーを提供することを確認します。node test/package.mjsは npm パッケージを作成し、その tarball をインストールして、そこからセットアップを実行します。node test/profiles.mjsは、「Work」と「Personal」というスタンドイン拡張機能に対して 2 つのブリッジを実行します。エージェントが両方を名前で認識して選択できること、選択したプロファイルが選択されたままになること、片方のプロファイルを一時停止すると新しい作業がもう片方に送られることを確認します。node test/profile-name.mjsは、使い捨ての Chrome for Testing プロファイルに対して、拡張機能の「このプロファイルに名前を付ける」ページで名前を設定し、エージェントにその名前が表示されることを確認します。npm run test:e2eは、使い捨ての Chrome for Testing プロファイルを起動し、2 つのエージェントを並列で実行して、互いのタブにアクセスできないことと、ブラウザーが手前に表示されないことを確認します。node test/new-tabs.mjsは、エージェントのタブから開いたリンク、window.open()、ポップアップによってユーザーのタブが切り替わらず、エージェントが新しいタブを取得することを確認します。node test/upload.mjsは、ファイルフィールドまたはボタンのファイルピッカー経由で、Chrome の 1 MB のメッセージ上限を超えるファイルも含め、ファイルがバイト単位でページに届くことを確認します。node test/foreign-frames.mjsは、スタンドイン拡張機能を使用して、パスワードマネージャーの自動入力メニューがポップアップするページでもエージェントが操作できることを確認します。npm run test:smokeは、現在開いている Chrome に対して短いテストを実行します。node test/cursor-presence.mjsは、最初の操作の前にカーソルとタブのバッジが表示されること、ページ読み込み後も表示されること、エージェントの作業終了時に消えることを確認します。node test/load-speed.mjs [--real]は、通常のタブと比較して、ページの読み込み時にエージェントが待つ時間を測定します。node test/cursor-gallery.mjsはすべてのカーソルテーマを並べて表示し、node test/badge-preview.mjsはすべてのタブバッジを表示します。
ロードマップ
- サイトごとの承認:エージェントが初めてサイトを利用する前に確認を求めます
- 送信、購入、削除の前に確認します
- AI にパスワードを見せることなく、パスワードマネージャーからログイン情報を入力します
- ダウンロードと iframe
- Windows と Linux
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。