Puppeteer MCP について
Puppeteer MCPは、開発者やコーディングエージェント向けのブラウザー自動化MCPサーバーです。単一の `execute` ツールで、Puppeteer Browser APIにアクセスするJavaScriptを実行し、セッションを再利用できます。
主な機能
- 01単一の `execute` ツールでJavaScriptを実行
- 02Puppeteer Browser APIへのアクセス
- 03呼び出し間でブラウザーセッションを再利用
- 04ヘッドレスモードとビューポートの設定
- 05Chromeへのカスタムフラグの受け渡し
活用シーン
- 01複数段階のブラウザーワークフローの自動化
- 02Webページのコンテンツ取得
- 03Puppeteerを使ったWebアプリのテスト
MCP 対応
MCPクライアントに `execute` ツールを公開し、`browser` グローバルにアクセスできるJavaScriptをNode.js VMで実行します。このVMはセキュリティサンドボックスではなく、信頼できるローカル開発向けです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| code | string | はい | 実行する JavaScript コード。JSON にシリアライズ可能なデータを返します |
| persistent | boolean | いいえ | 呼び出し間でブラウザープロファイルを再利用します。false の場合、呼び出しごとに分離されたプロファイルを作成します |
詳細
pptr-mcp
Puppeteer を使用したブラウザー自動化のための MCP サーバーです。固定のツール(移動、クリック、スクリーンショット撮影)を公開する他のブラウザー MCP とは異なり、このサーバーでは Puppeteer の Browser インスタンスに直接アクセスして、任意の JavaScript コードを実行できます。
主な違い
ほとんどのブラウザー MCP サーバーは、事前に定義された限定的なアクションを提供します。この方式では、複雑なワークフローを実行するのに複数回のやり取りが必要で、エッジケースにも対応できません。
pptr-mcp は異なるアプローチを採用しています。execute という単一のツールを公開し、browser グローバルを使用できる Node.js VM 内で JavaScript コードを実行します。Puppeteer コードを直接記述できるため、1 回の呼び出しで API にフルアクセスできます。
Traditional MCP (5 round-trips) pptr-mcp (1 round-trip)
================================ ================================
Agent Server Agent Server
| | | |
|-- navigate --->| |-- execute ---->|
|<-- ok ---------| | |
| | | +------------------------+
|-- waitFor ---->| | | const page = await |
|<-- ok ---------| | | browser.newPage(); |
| | | | await page.goto(url); |
|-- click ------>| | | await page.click(s); |
|<-- ok ---------| | | await page.type(i, t); |
| | | | return await |
|-- type ------->| | | page.screenshot(); |
|<-- ok ---------| | +------------------------+
| | | |
|-- screenshot ->| |<-- result -----|
|<-- image ------| | |
| | | |
要件
- Node.js >= 20
インストール
npm install -g pptr-mcp
MCP の設定
MCP クライアントの設定(例:Claude Desktop)に追加します。
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["pptr-mcp"]
}
}
}
CLI オプションを使用する場合:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["pptr-mcp", "--no-headless", "--viewport=1080p"]
}
}
}
カスタムの Chrome フラグを使用する場合(-- の後):
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": [
"pptr-mcp",
"--viewport=1280x720",
"--",
"--proxy-server=http://proxy:8080"
]
}
}
}
CLI オプション
| オプション | 説明 |
|---|---|
--no-headless | ブラウザーウィンドウを表示して実行します |
--viewport=VALUE | ビューポートのサイズを設定します(例:1920x1080 または 1080p) |
--help, -h | ヘルプを表示します |
-- [args] | 残りの引数を Chrome に渡します |
-- より前の不明なオプションも Chrome に渡されます。
Claude Code プラグイン
Claude Code プラグインとしてインストールします。
/plugin marketplace add iatsiuk/pptr-mcp
/plugin install pptr-mcp@pptr-mcp
環境変数
| 変数 | 説明 |
|---|---|
CHROME_PATH | Chrome 実行ファイルへのパス |
PUPPETEER_EXECUTABLE_PATH | CHROME_PATH の代替 |
PUPPETEER_CACHE_DIR | ブラウザーのダウンロードキャッシュディレクトリ |
PPTR_MCP_TIMEOUT | 実行タイムアウト(ミリ秒、デフォルト:30000) |
ツール:execute
Puppeteer ブラウザーにアクセスして JavaScript コードを実行します。
パラメーター
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
code | string | 必須 | 実行する JavaScript コード |
persistent | boolean | true | 呼び出し間でブラウザーセッションを再利用します |
レシピ
ヘッドレスモードを無効にする
実行中にブラウザーウィンドウを表示します。
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["pptr-mcp", "--no-headless"]
}
}
}
カスタムの Chrome プロファイルディレクトリ
保存済みのログイン情報や Cookie がある、自分の Chrome プロファイルを使用します。
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["pptr-mcp", "--", "--user-data-dir=/path/to/profile"]
}
}
}
ダウンロード版ではなくシステムの Chrome を使用する
デフォルトでは、pptr-mcp は Puppeteer 同梱版に最適化され、テスト済みのバージョンである Chrome for Testing をダウンロードします。代わりにシステムの Chrome を使用するには:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["pptr-mcp"],
"env": {
"CHROME_PATH": "/path/to/chrome"
}
}
}
}
セキュリティ
このサーバーは、LLM アシスタント(Claude Code、Cursor など)を使用する信頼できるローカル開発向けに設計されています。実行するコードは、ユーザーのリクエストに応じて LLM が生成します。
これが意味すること
- サンドボックスではありません:Node.js VM による分離は利便性のためのものであり、セキュリティを目的としたものではありません。信頼できないコードの実行には設計されていません。
- ブラウザーを完全に制御できます:実行コードは、任意の URL への移動、ページ内容の読み取り、スクリーンショットの撮影、ウェブアプリケーションの操作が可能です。
- Chrome はサンドボックスなしで実行されます:Docker/コンテナーとの互換性のため、
--no-sandboxフラグを使用します。 - セッションは保持されます:
persistent: true(デフォルト)の場合、Cookie とブラウザーの状態は呼び出し間で保持されます。分離するにはpersistent: falseを使用してください。
次の用途には設計されていません
- マルチテナント環境や共有サーバーへのデプロイ
- 外部ソースからの信頼できないコードの実行
- 任意のユーザー入力を受け付けるウェブサービスの構築
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。