Puppeteer Real Browser MCP Server について
Puppeteer Real Browser MCP Server は、AI アシスタントがローカルの Chrome を開き、閲覧し、操作できるようにするMCP サーバーです。rebrowser-puppeteer-core を基盤とし、いくつかの検出回避設定を備えています。ページ操作の前にコンテンツを読み取る手順を必須とします。
主な機能
- 01オプションのヘッドレスモードに対応したローカル Chrome 起動
- 02ページ遷移と HTML・テキストの読み取り
- 03要素の検索、クリック、入力、待機、スクロール
- 04Windows、macOS、Linux での Chrome 検出
- 05起動したプロセスのみを終了する制御
- 06ページ操作前にコンテンツ取得を必須とする仕組み
活用シーン
- 01AI アシスタントによるウェブページのテキスト読み取り
- 02自動化が許可されたサイトでのクリックやフォーム入力
- 03専用プロファイルによるブラウザ自動化データの管理
MCP 対応
stdio 方式で動作し、MCP クライアントから起動されます。MCP クライアントに 11 個のブラウザ操作ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| headless | boolean | いいえ | ブラウザーをヘッドレスモードで実行します |
| disableXvfb | boolean | いいえ | Xvfb(X Virtual Framebuffer)を無効にします |
| proxy | string | いいえ | プロキシサーバーの URL(形式:protocol://host:port) |
| profilePath | string | いいえ | 専用の自動化プロファイルの絶対パスです。新規または空のディレクトリには MCP の所有権マーカーが付与されます。個人用 Chrome プロファイルは拒否されます。 |
| connectOption | object | いいえ | 追加の接続オプション |
| customConfig | object | いいえ | Chrome ランチャーのカスタム設定です。カスタム Chrome 実行ファイルのパスを指定するには chromePath を使用します |
| customConfig.chromePath | string | いいえ | Chrome 実行ファイルのカスタムパス(指定しない場合は自動検出) |
| contentPriority | object | いいえ | コンテンツ優先のワークフローを徹底するための設定 |
| contentPriority.prioritizeContent | boolean | いいえ | 信頼性を高め、ワークフローを徹底するために get_content メソッドを優先します |
| contentPriority.autoSuggestGetContent | boolean | いいえ | 他の方法が失敗した場合、get_content を使った代替方法を自動的に提案します |
詳細
Puppeteer Real Browser MCP サーバー
MCP 互換の AI アシスタントに、開いて、移動して、読み取り、操作できるローカルの Chrome ブラウザーを与えます。
メンテナンス中: このプロジェクトはまだ変更が続いています。
mainブランチは、npm で公開されているパッケージより新しい可能性があります。上の npm バッジは、@latestで使用される公開バージョンを示しています。
できること
このパッケージは、ローカルの Model Context Protocol (MCP) サーバーとして動作します。MCP クライアントがサーバーを起動し、サーバーがブラウザー自動化用に 1 つの Chrome プロセスを起動します。
主な機能:
- デフォルトでは表示されるブラウザーを開き、オプションでヘッドレスモードも利用可能
- ページを移動し、HTML またはテキストを読み取る
- 要素を検索し、クリックし、入力し、待機し、スクロールする
rebrowser-puppeteer-coreといくつかの検出回避設定を使用する- Windows、macOS、Linux で Chrome を検出する
- カスタムの Chrome パス、プロキシ、専用の自動化プロファイルをサポートする
- 起動した正確な Chrome プロセスを追跡し、そのプロセスのみを終了する
- ページ操作の前にコンテンツ優先のワークフローを強制する
ブラウザー自動化が見えないものになることはありません。ウェブサイトは依然としてそれを検出したり、ブロックしたりする可能性があります。
安全性と現在の制限
サーバーを使用する前に、以下をお読みください:
- 自動化が許可されているウェブサイトでのみ使用してください。
- ログイン、フォーム、購入、ダウンロード、その他の機密性の高い操作を承認する前に、ツール呼び出しを確認してください。
- ブラウザーとファイルのツールは、通常のユーザー権限で実行されます。
- サーバーは一度に 1 つのブラウザーセッションをサポートします。
solve_captchaは現在プレースホルダーです。CAPTCHA 解決サービスは使用しません。ブラウザーの起動時に、検出された Turnstile ウィジェットに対してベストエフォートのクリックを行うだけです。save_content_as_markdownはサーバーに一覧表示されていますが、現在のワークフローバリデーターがそれをブロックします。これは既知のコードの問題です。
要件
- Node.js 18 以降
- npm と
npx(通常の Node.js インストーラーに含まれています) - Google Chrome または Chromium
- ローカルの
stdioサーバーを起動できる MCP クライアント
Claude Desktop は macOS と Windows で利用できます。他の MCP クライアントは Linux でこのサーバーを使用できます。
クイックスタート
このパッケージをグローバルにインストールする必要はありません。MCP クライアントが必要としたときに、npx が公開されているパッケージをダウンロードして実行できます。
-y オプションは、npm のインストールに関する質問が MCP サーバーの起動を妨げるのを防ぎます。
Claude Desktop
- Claude Desktop → Settings → Developer → Edit Config を開きます。
mcpServers内に次のサーバーを追加します:
{
"mcpServers": {
"puppeteer-real-browser": {
"command": "npx",
"args": [
"-y",
"puppeteer-real-browser-mcp-server@latest"
]
}
}
}
- ファイルを保存します。
- Claude Desktop を完全に終了し、再度開きます。
Claude Desktop はこのファイルを次の場所に保存します:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
現在の Claude Desktop の手順については、公式のローカル MCP サーバーガイドを参照してください。
Claude Code
次を実行します:
claude mcp add --transport stdio puppeteer-real-browser \
-- npx -y puppeteer-real-browser-mcp-server@latest
次に接続を確認します:
claude mcp get puppeteer-real-browser
Claude Code 内では、/mcp でもサーバーステータスが表示されます。
デフォルトのスコープは現在のプロジェクトに対してローカルです。すべてのプロジェクトでサーバーを使用したい場合は、サーバー名の前に --scope user を追加します。スコープの詳細については、公式の Claude Code MCP ガイドを参照してください。
Cursor
1 つのプロジェクトでは .cursor/mcp.json を作成し、すべてのプロジェクトでは ~/.cursor/mcp.json を作成します:
{
"mcpServers": {
"puppeteer-real-browser": {
"command": "npx",
"args": [
"-y",
"puppeteer-real-browser-mcp-server@latest"
]
}
}
}
ファイルを保存した後に Cursor を再起動します。現在の構成場所と形式については、公式の Cursor MCP ガイドを参照してください。
その他の MCP クライアント
このコマンドと引数リストを使用して、ローカルの stdio サーバーを使用します:
command: npx
args: -y puppeteer-real-browser-mcp-server@latest
サーバーは標準入力と標準出力を介して通信します。MCP クライアントは、ツールを使用している間、プロセスを開いたままにしておく必要があります。
セットアップのテスト
AI アシスタントに次のように尋ねてください:
ブラウザを起動し、https://example.com を開き、ページのテキストを読み取り、 その後ブラウザを閉じてください。
想定されるツールの実行順序は次のとおりです:
browser_init → navigate → get_content → browser_close
利用可能なツール
サーバーは 11 個のツールを公開しています。
| ツール | 目的 | 必須入力 |
|---|---|---|
browser_init | 管理対象の Chrome セッションを開始または再利用します | なし |
navigate | URL を開きます | url |
get_content | ページ全体または選択した HTML/テキストを読み取ります | なし |
find_selector | 要素のテキストから CSS セレクターを検索します | text |
click | 要素をクリックします | selector |
type | 入力をクリアしてテキストを入力します | selector、text |
wait | セレクター、ナビゲーション、または時間を待機します | type、value |
random_scroll | さまざまなタイミングと距離でスクロールします | なし |
solve_captcha | プレースホルダーの試行結果を返します | type |
save_content_as_markdown | .md として保存します。現在はブロックされています | filePath |
browser_close | 管理対象のブラウザを閉じ、ワークフロー状態をリセットします | なし |
コンテンツ優先のワークフロー
サーバーは盲目的な操作をブロックします。次の順序を使用してください:
browser_init → navigate → get_content → find_selector → click or type
新しいナビゲーションの後は、クリックまたは入力を行う前に、再度 get_content を呼び出してください。
ページのコンテンツの読み込みが遅い場合は、ナビゲーションの後に wait を呼び出すことができます。
ブラウザの設定
ブラウザのオプションは browser_init への入力です。これらはトップレベルの MCP
サーバー設定ではありません。
| オプション | 意味 |
|---|---|
headless | ブラウザウィンドウを非表示にするには true を設定します。デフォルト: false。 |
proxy | http://proxy.example.com:8080 のようなプロキシ URL。 |
profilePath | 専用の自動化プロファイルのパス。 |
disableXvfb | Linux で Xvfb を起動するには false を設定します。 |
connectOption.timeout | 接続およびセットアップのタイムアウト (ミリ秒単位)。 |
connectOption.slowMo | 操作の遅延 (ミリ秒単位)。 |
customConfig.chromePath | Chrome 実行ファイルへの絶対パス。 |
customConfig.chromeFlags | カスタムフラグ。サーバーのフラグリストを置き換えます。 |
contentPriority | コンテンツ優先の提案設定。 |
contentPriority は prioritizeContent と
autoSuggestGetContent という Boolean 値を持つオブジェクトです。これは提案を変更しますが、
必須のコンテンツ優先ワークフローを削除するものではありません。
リクエスト例:
{
"headless": true,
"proxy": "http://proxy.example.com:8080",
"connectOption": {
"timeout": 60000,
"slowMo": 100
},
"customConfig": {
"chromePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
}
Chrome のパス
サーバーはまず次の環境変数を確認します:
CHROME_PATHPUPPETEER_EXECUTABLE_PATH
どちらもファイルを指していない場合、サーバーは一般的な Chrome および Chromium の場所を確認します。Windows では、レジストリと一般的なポータブルパスも確認します。
MCP クライアントの設定で CHROME_PATH を設定できます:
{
"mcpServers": {
"puppeteer-real-browser": {
"command": "npx",
"args": [
"-y",
"puppeteer-real-browser-mcp-server@latest"
],
"env": {
"CHROME_PATH": "/absolute/path/to/chrome"
}
}
}
}
PROXY_URL はサポートされている環境変数ではありません。代わりに
browser_init にプロキシを渡してください。
ブラウザの所有権保護
サーバーは、起動した Chrome プロセスの正確なランチャーハンドルとプロセス ID を保持します。 通常の終了、起動の失敗、タイムアウト、MCP の切断、および シグナルによるシャットダウンは、すべてそのハンドルを通じてクリーンアップされます。プロセス名で Chrome を検索したり 閉じたりすることはありません。
安全のため、サーバーは別のブラウザに接続したり、 個人の Chrome プロファイルの所有権を取得したりする可能性のある設定を拒否します:
customConfig.userDataDircustomConfig.portcustomConfig.portStrictModecustomConfig.handleSIGINTconnectOption.browserURLconnectOption.browserWSEndpointconnectOption.transport- カスタム Chrome フラグ内の
--remote-debugging-port、--remote-debugging-pipe、および--user-data-dir
永続的な自動化データには profilePath を使用してください。ディレクトリは
絶対パスであり、空であるか、すでにこのサーバーによって所有されているとマークされている必要があります。
トラブルシューティング
MCP サーバーが表示されない
-
ツールがインストールされていることを確認します:
node --version npm --version npx --version -
Node.js がバージョン 18 以降であることを確認します。
-
JSON ファイルにカンマや引用符の欠落がないか確認します。
-
MCP クライアントを完全に終了してから再度開きます。
-
デスクトップアプリが
npxを見つけられない場合は、その絶対パスをcommandとして使用します。 macOS/Linux ではwhich npx、Windows ではwhere npxを実行して見つけます。
Claude Desktop のログはここに保存されます:
- macOS:
~/Library/Logs/Claude - Windows:
%APPDATA%\Claude\logs
Chrome が見つからない
実際の Chrome 実行ファイルを見つけて、MCP クライアントの設定で CHROME_PATH を設定します。一般的な例は次のとおりです:
- Windows:
C:/Program Files/Google/Chrome/Application/chrome.exe - macOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Linux:
/usr/bin/google-chromeまたは/usr/bin/chromium
Chrome のパスの問題を解決するためだけに、MCP クライアントを管理者として実行したり、sudo npm install -g を使用したりしないでください。
ターミナルで実行するとサーバーが固まったように見える
これは正常な場合があります。stdio MCP サーバーは、MCP クライアントからのプロトコルメッセージを待機します。プロセスに入力する代わりに、MCP Inspector を使用してください。
公開されているパッケージをテストします:
npx -y @modelcontextprotocol/inspector \
npx puppeteer-real-browser-mcp-server@latest
使用方法の詳細については、公式の MCP Inspector ガイドを参照してください。
ページのアクションがブロックされる
必要なワークフローに従ってください:
browser_initnavigateget_content- セレクターが必要な場合は
find_selector clickまたはtype
ページが変更された場合は、再度 get_content を呼び出します。
ブラウザ接続がタイムアウトする
- Chrome のパスが存在することを確認します。
browser_closeで現在の管理対象ブラウザを閉じてから、再度起動します。browser_initの入力でconnectOption.timeoutを増やします。- セキュリティソフトが子 Chrome プロセスをブロックしていないか確認します。
- 問題を報告する際は、完全なエラーメッセージを含めてください。
ヘルプを得る
GitHub issueを検索するか、開いてください。以下を含めてください:
- オペレーティングシステム
- Node.js と npm のバージョン
- MCP クライアントの名前とバージョン
- Chrome のバージョンと実行ファイルのパス
- 完全なエラーメッセージ
- 問題を再現する正確な手順
パスワード、Cookie、トークン、非公開のページ内容を含めないでください。
開発
ソースから実行する
git clone https://github.com/withLinda/puppeteer-real-browser-mcp-server.git
cd puppeteer-real-browser-mcp-server
npm ci
npm run build
MCP Inspector でローカルビルドをテストします:
npx -y @modelcontextprotocol/inspector node dist/index.js
ローカルビルドを MCP クライアントで使用するには、絶対パスを使用します:
{
"mcpServers": {
"puppeteer-real-browser-local": {
"command": "node",
"args": [
"/absolute/path/to/puppeteer-real-browser-mcp-server/dist/index.js"
]
}
}
}
プロジェクト構成
src/index.ts MCP stdio server and request handlers
src/tool-definitions.ts Tool names and input schemas
src/browser-manager.ts Browser state, detection, and configuration
src/managed-browser-session.ts Owned Chrome launch and cleanup
src/handlers/ Tool implementations
src/*.test.ts Unit and regression tests
test/integration/ MCP protocol integration tests
test/e2e/ Real-browser tests
test/safety/ Browser cleanup safety guard
scripts/check-packaged-server.ts Package smoke test
テストワークフロー
動作の変更には TDD を使用します: 失敗するテストを 1 つ書き、それを成功させてから、コードを整理します。
# Browser cleanup safety guard
npm run test:safety
# Fast source tests
npm run test:unit
# MCP protocol integration tests
npm run test:integration
# Build the package
npm run build
# Test the built npm package shape and stdio lifecycle
npm run test:package:smoke:built
# Real Chrome tests
npm run test:e2e
# Release-focused automated checks
npm run test:all
TDD 中は、npm run test:watch を使用します。実際のブラウザのテストを実行する前に、マシン上で既に開いている Chrome プロセスに注意してください。テスト後、テストによって起動された Chrome プロセスのみが閉じられたことを確認します。
コントリビューション
Issue とプルリクエストを歓迎します。コード変更の場合:
- 焦点を絞ったブランチを作成します。
- 1 つの動作に対する失敗するテストを追加します。
- テストを成功させる最小限のコード変更を行います。
- テストがグリーンのままリファクタリングします。
- 安全性、ソース、ビルド、パッケージのチェックを実行します。
- コミットメッセージで、根本原因、解決策、防止策、検証について説明します。
ライセンス
このプロジェクトは MIT License を使用しています。
謝辞
元の実装と公開 API は、ZFC Digital による puppeteer-real-browser に基づいていました。現在のソースは、そのサポート終了となったランタイム依存関係を、chrome-launcher、rebrowser-puppeteer-core、ghost-cursor から構築された内部の管理対象ランチャーに置き換えています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。