pagesnap について
pagesnap は、ホスト型 Chromium サービスで公開ウェブページを画像化する、エージェント向け MCP サーバーです。ビューポートまたはページ全体の撮影に対応し、残りの撮影枠も確認できます。
主な機能
- 01公開ウェブページの撮影
- 02ビューポートまたはページ全体の画像化
- 03WebP、JPEG、PNGでの出力
- 04待機条件、ロケール、タイムゾーンの設定
- 05残りの撮影枠の確認
活用シーン
- 01ランディングページの確認用画像を作成
- 02長いページを全体画像で確認
- 03ワークフロー開始前に撮影枠を確認
MCP 対応
MCP クライアントに撮影と枠確認のツールを公開します。呼び出しをホスト型 snap サービスに転送し、応答をそのまま返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 撮影する公開 http(s) URL。例:'https://example.com'。 |
| width | integer | いいえ | ビューポートの幅(CSS ピクセル単位)。サービスの上限を超える値は上限値に制限されます。 |
| format | enum | いいえ | 画像形式。webp と jpeg は png より大幅に小さくなります。png | jpeg | webp |
| height | integer | いいえ | ビューポートの高さ(CSS ピクセル単位)。サービスの上限を超える値は上限値に制限されます。 |
| locale | string | いいえ | BCP 47 ロケール。例:de-DE。 |
| fullPage | boolean | いいえ | スクロール可能なページ全体を撮影します。 |
| waitUntil | enum | いいえ | 撮影前に待機するナビゲーションイベント。load | domcontentloaded | networkidle |
| timezoneId | string | いいえ | IANA タイムゾーン。例:Europe/Berlin。 |
| waitForSelector | string | いいえ | 撮影前に表示されている必要がある CSS セレクター。 |
詳細
pagesnap
pagesnap を使うと、エージェントは任意の公開ウェブページを画像にできます。URL を渡すと、Chromium upstream でページをレンダリングし、スクリーンショットを返します。ビューポートのキャプチャにも、スクロール可能なページ全体のキャプチャにも対応し、指定したビューポートサイズで webp、jpeg、png のいずれかの形式で出力します。セレクターが表示されるまでキャプチャを待機させたり、待機するナビゲーションイベントを選択したり、ページに認識させるタイムゾーンやロケールを設定したりできます。これは、サイトが地域や言語によって異なる表示をする場合に重要です。もう 1 つのツールでは、残りのスクリーンショット数を確認できるため、ワークフローは利用を開始する前に上限を確認できます。
このパッケージ自体は何もレンダリングしません。ホスト型の snap サービスにつなぐ薄いローカルブリッジです。ライブエンドポイントからそのまま取得したツール一覧をローカルで返し、各呼び出しを上流に転送して、返された内容を変更せずに返します。このサービスは登録なしで無料で利用できます。独自の API キーを指定すると、無料の日次上限から組織の月次上限に引き上げられます。get_quota にはその上限が報告されます。
ツール
take_screenshot— 公開ウェブページをレンダリングし、スクリーンショットを返します。必須項目:url(公開されている http(s) URL)。任意項目:format(webp、jpeg、pngのいずれか。既定値はwebp— webp と jpeg は png より大幅にサイズが小さくなります)、width(CSS ピクセル単位のビューポート幅。既定値は 1280)、height(既定値は 720。サービスの最大値を超える値は最大値に制限されます)、fullPage(スクロール可能なページ全体をキャプチャするかどうか。既定値は false)、waitUntil(load、domcontentloaded、networkidleのいずれか。既定値はload)、waitForSelector(キャプチャ前に表示されている必要がある CSS セレクター)、timezoneId(Europe/Berlin などの IANA タイムゾーン)、locale(de-DE などの BCP 47 ロケール)。非常に縦長のページ全体をキャプチャすると、インライン画像ではなくリンクが返されます。また、16383px を超える高さのページを fullPage WebP でキャプチャすると、その高さでクリップされ(fullPageClipとして報告されます)、そのような高さのページには jpeg または png を使用してください。get_quota— 残りのスクリーンショット数を返します。引数は不要です。キーが設定されていない場合は無料の日次上限、設定されている場合は組織の月次上限を返します。このツールは自身の利用上限を読み取るだけで、このパッケージではアカウントの購入、チャージ、管理はできません。
設定
SNAP_MCP_URL(任意)— 上流エンドポイントを上書きします。既定値はhttps://snap.i2dev.com/mcpです。(この上書き用フックは、この再構築独自のラベル付き再現です。)SNAP_API_KEY(任意)— 設定すると、すべての上流リクエストに snap API キーを含むAuthorization: Bearer <key>ヘッダーが付加されます。設定されていない場合、キーのヘッダーは送信されず、無料の利用上限が適用されます。(ヘッダー名は、Authorizationという秘密のヘッダーを宣言している元のレジストリレコードによって固定されています。このレコードではパッケージの環境変数名は固定されていないため、環境変数名、Bearer 形式、転送処理はラベル付きの再現です。元のインターフェースはキーなしで取得されました。)
転送の仕組み
最初のツール呼び出し時に、クライアントは上流でストリーミング可能な HTTP セッションを開始します。まず JSON-RPC の initialize リクエスト(protocolVersion 2025-03-26、clientInfo name pagesnap)を送り、次に notifications/initialized 通知、最後に呼び出し元の引数を変更せずに含めた tools/call リクエストを送信します。上流から initialize に対する応答として Mcp-Session-Id ヘッダーが返された場合、その値は以降のセッション内のすべてのリクエストに付加され、プロセスの終了までセッションが再利用されます。応答はプレーンな JSON またはサーバー送信イベントとして届くことがあり、どちらも読み取られます。
上流で成功した結果は、上流が設定した isError フラグも含め、逐語的にそのまま通過します。失敗(JSON-RPC エラー、2xx 以外のステータス、読み取れない応答、または完了できないリクエスト)は、テキストが pagesnap error: で始まる isError 結果として返されます(この形式は、この再構築独自のラベル付き再現です)。
CLI
各ツールは、1 つの JSON 引数文字列を受け取るサブコマンドでもあります。
npx @reneturcios/pagesnap take_screenshot '{"url":"https://example.com"}'
npx @reneturcios/pagesnap take_screenshot '{"url":"https://example.com","fullPage":true,"format":"png"}'
npx @reneturcios/pagesnap get_quota '{}'
npx @reneturcios/pagesnap --version
終了コード:成功時は 0、isError の結果の場合は 1、使用方法に誤りがある場合は 2 です。
MCP サーバー
npx -y @reneturcios/pagesnap mcp
MCP クライアントの設定:
{
"mcpServers": {
"pagesnap": {
"command": "npx",
"args": ["-y", "@reneturcios/pagesnap", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/pagesnap
docker run --rm ghcr.io/cloudcorprecords/pagesnap --version
コンテナのデフォルトコマンドは mcp であるため、最初の形式では stdio MCP サーバーとして動作します。それ以外の引数は通常どおり CLI に渡されます。
開発
npm install
npm run build
npm test
npm run dev
テストスイートはすべてスタブ化された JSON-RPC アップストリームに対して実行され、実際のネットワーク呼び出しは行いません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。