mcpField
Z
zen-mcp

zen-mcp

ローカル
github.com/sh6drackブラウザ自動化2724 週間前に更新

zen-mcp について

zen-mcp は Zen Browser 向けの MCP サーバーで、Selenium や Playwright、ブラウザードライバーを使わず、WebDriver BiDi により WebSocket で直接ブラウザーを操作します。Claude Code や Cursor などの MCP クライアントから Zen を自動化したいユーザー向けです。

主な機能

  1. 01WebSocket 経由の WebDriver BiDi 直接接続
  2. 02MCP クライアントに公開される 20 個の zen_* ツール
  3. 03ナビゲーション、クリック、フォーム入力
  4. 04スクリーンショットとページテキストの取得
  5. 05自動再接続と残留セッションの復旧

活用シーン

  1. 01Claude Code からのページ表示とテキスト抽出
  2. 02複数の Web フォーム項目の一括入力
  3. 03タブの管理とページ内での JavaScript 実行

MCP 対応

zen-mcp は MCP サーバーとして、Zen Browser を制御するための zen_* ツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sh6drack-zen": {
"command": "npx",
"args": [
"-y",
"zen-mcp"
],
"env": {
"ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
}
}
}
}
起動コマンドnpx -y zen-mcp
設定が必要な環境変数
ZEN_DEBUG_PORTZen Browser remote debugging port

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmzen-mcp1.2.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

zen-mcp

Zen Browser 用の初の MCP サーバーです。Claude Code、Cursor、または任意の MCP クライアントから Zen を自動操作できます。

Selenium は不要です。Playwright も不要です。ブラウザードライバーも不要です。WebSocket だけで動作します。

セットアップ(2 分)

1. リモートデバッグを有効にして Zen を起動する
/Applications/Zen.app/Contents/MacOS/zen --remote-debugging-port 9222

ヒント:シェルの設定ファイルに alias zen='open /Applications/Zen.app --args --remote-debugging-port 9222' を追加します。あとは zen を実行するだけです。

2. Claude Code に追加する
# Option A: npm (recommended)
npm install -g zen-mcp

# Option B: Clone
git clone https://github.com/sh6drack/zen-mcp.git && cd zen-mcp && npm install

~/.claude/mcp_servers.json に追加します:

{
  "mcpServers": {
    "zen-browser": {
      "command": "zen-mcp"
    }
  }
}

npm install ではなくクローンした場合は、"command": "node", "args": ["/absolute/path/to/zen-mcp/server.mjs"] を使用します。

~/.claude/settings.json に追加します:

{
  "permissions": {
    "allow": ["mcp__zen-browser__*"]
  }
}

これで完了です。 Claude Code の新しいセッションを開始すると、zen_* ツールを使用できます。

20 個のツール

閲覧
ツール機能
zen_navigateURL に移動します
zen_list_pages開いているタブをすべて一覧表示します
zen_select_pageタブを切り替えます
zen_new_tab新しいタブを開きます
zen_close_tabタブを閉じます
表示
ツール機能
zen_snapshotセレクター付きでページ構造を取得します(フィルター:all/interactive/form)
zen_screenshotスクリーンショットを撮影します
zen_get_page_textページのタイトル、URL、テキストを取得します
zen_get_form_fieldsラベルと値を含むすべてのフォームフィールドを一覧表示します
操作
ツール機能
zen_click要素をクリックします
zen_fill入力欄またはテキストエリアに入力します
zen_select_optionドロップダウンの項目を選択します
zen_checkチェックボックスまたはラジオボタンを切り替えます
zen_press_keyキーボード入力(Enter、Tab、Ctrl+A など)
zen_fill_form複数のフィールドにまとめて入力します
zen_scrollページまたは要素までスクロールします
ユーティリティ
ツール機能
zen_evaluateページ内で JavaScript を実行します
zen_wait指定したミリ秒数だけ待機します
zen_wait_forテキストまたは要素が表示されるまで待機します
zen_reconnectZen への再接続を強制します

仕組み

Claude Code  ──stdio/MCP──>  zen-mcp  ──WebSocket/BiDi──>  Zen Browser

zen-mcp は WebSocket 経由で WebDriver BiDi(W3C 標準)を直接使用します。フォームへの入力では、ネイティブの値セッターを使い、input/change イベントをディスパッチするため、React、Vue、Angular のアプリでも正しく動作します。

正常に動作する機能
  • ナビゲーション、クリック、フォーム入力 — 安定して動作し、React/Vue/Angular に対応します
  • スクリーンショットとページの読み取り — 信頼性の高いコンテンツ抽出が可能です
  • タブ管理 — タブを開く、閉じる、切り替えることができます
  • JavaScript の評価 — ページのコンテキスト内で任意のコードを実行できます
  • キーボード入力 — ショートカット、Enter、Tab、修飾キーの組み合わせに対応します
既知の制限事項
  • Zen は Firefox の WebDriver BiDi 実装を継承しており、現在も開発が進んでいます。Chrome で使える一部の高度な BiDi コマンドは、まだ利用できない場合があります。
  • ゾンビセッションを解消するには、Zen の再起動が必要です(BiDi の session.end は接続単位です)。zen-mcp はこれを検知し、必要な操作を案内します。
  • ファイルのアップロードとドラッグ&ドロップには対応していません(BiDi 仕様の制限です)。
標準搭載の信頼性機能
  • WebSocket が切断された場合、指数バックオフで自動再接続
  • 前のクライアントがクラッシュした場合のゾンビセッションの復旧
  • 接続の再試行(バックオフを伴う 3 回の試行)
  • 孤立したセッションを防ぐ、SIGINT/SIGTERM 時のクリーンシャットダウン

トラブルシューティング

問題対処方法
「Zen Browser に接続できません」--remote-debugging-port 9222 を指定して Zen を起動します
「アクティブなセッション数が上限に達しました」Zen を再起動します:killall zen && zen
接続が繰り返し切断されるzen_reconnect を使って新しい接続を強制します

設定

環境変数デフォルト説明
ZEN_DEBUG_PORT9222Zen のリモートデバッグポート

要件

テスト

node test-e2e.mjs   # 21 tests, needs Zen running

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。