mcpField
P
pagesnap

pagesnap

ローカル
github.com/CloudCorpRecordsブラウザ自動化02 日前に更新

pagesnap について

pagesnap は、ホスト型 Chromium サービスで公開ウェブページを画像化する、エージェント向け MCP サーバーです。ビューポートまたはページ全体の撮影に対応し、残りの撮影枠も確認できます。

主な機能

  1. 01公開ウェブページの撮影
  2. 02ビューポートまたはページ全体の画像化
  3. 03WebP、JPEG、PNGでの出力
  4. 04待機条件、ロケール、タイムゾーンの設定
  5. 05残りの撮影枠の確認

活用シーン

  1. 01ランディングページの確認用画像を作成
  2. 02長いページを全体画像で確認
  3. 03ワークフロー開始前に撮影枠を確認

MCP 対応

MCP クライアントに撮影と枠確認のツールを公開します。呼び出しをホスト型 snap サービスに転送し、応答をそのまま返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-pagesnap": {
"command": "npx",
"args": [
"-y",
"@reneturcios/pagesnap"
]
}
}
}
起動コマンドnpx -y @reneturcios/pagesnap

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

パッケージ
npm@reneturcios/pagesnap0.1.0
ocighcr.io/cloudcorprecords/pagesnap:0.1.0

ツール

2

掲載時のツール一覧 · 2 日前に更新

パラメーター型必須説明
urlstringはい撮影する公開 http(s) URL。例:'https://example.com'。
widthintegerいいえビューポートの幅(CSS ピクセル単位)。サービスの上限を超える値は上限値に制限されます。
formatenumいいえ画像形式。webp と jpeg は png より大幅に小さくなります。png | jpeg | webp
heightintegerいいえビューポートの高さ(CSS ピクセル単位)。サービスの上限を超える値は上限値に制限されます。
localestringいいえBCP 47 ロケール。例:de-DE。
fullPagebooleanいいえスクロール可能なページ全体を撮影します。
waitUntilenumいいえ撮影前に待機するナビゲーションイベント。load | domcontentloaded | networkidle
timezoneIdstringいいえIANA タイムゾーン。例:Europe/Berlin。
waitForSelectorstringいいえ撮影前に表示されている必要がある 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 を参照してください。

コメント

MCP は初めてですか?

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

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