mcpField
S
ScreenshotAPI

ScreenshotAPI

ローカル
screenshotapi.netブラウザ自動化02 日前に更新

ScreenshotAPI について

ScreenshotAPI公式のMCPサーバーです。Webページのキャプチャ、PDF生成、描画後のスクレイピング、スクロール動画、複数URLの一括処理をエージェントに提供し、画像も返します。

主な機能

  1. 01ページの画像キャプチャ
  2. 02URLやHTMLからPDFを生成
  3. 03JavaScript実行後のページを取得
  4. 04スクロール動画の録画
  5. 05一括キャプチャと状態確認

活用シーン

  1. 01異なる画面サイズやダークモードでサイトを確認
  2. 02WebページやHTMLの請求書をPDFで保存
  3. 03動的ページからテキストやHTMLを抽出
  4. 04複数サイトを撮影してジョブ結果を確認

MCP 対応

MCPサーバーは、描画、スクレイピング、一括処理を行うScreenshotAPI REST API用の8つのツールを公開します。利用にはScreenshotAPIのAPIキーが必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"screenshot-api-screenshot": {
"command": "npx",
"args": [
"-y",
"@screenshotapinet/mcp"
],
"env": {
"SCREENSHOTAPI_TOKEN": "<SCREENSHOTAPI_TOKEN>",
"SCREENSHOTAPI_REQUEST_TIMEOUT_MS": "<SCREENSHOTAPI_REQUEST_TIMEOUT_MS>",
"SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTES": "<SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTES>"
}
}
}
}
起動コマンドnpx -y @screenshotapinet/mcp
設定が必要な環境変数
SCREENSHOTAPI_TOKENシークレットYour ScreenshotAPI API key from https://app.screenshotapi.net
SCREENSHOTAPI_REQUEST_TIMEOUT_MSRequest timeout in milliseconds (default 180000)
SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTESMax screenshot size returned inline as an image (default 3500000)

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

パッケージ
npm@screenshotapinet/mcp1.0.2

ツール

8

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

パラメーター型必須説明
jsstringいいえキャプチャ前にページで実行する JavaScript。例:"document.querySelector('.popup').remove();"。
cssstringいいえキャプチャ前に注入する CSS。例:'.header { display: none; }'。
ttlintegerいいえenable_caching が true の場合のキャッシュ有効期間(秒)。デフォルトは 2592000(30 日)です。
urlstringいいえレンダリングするウェブサイトの URL。プロトコルを含めます。例:'https://example.com'。url または custom_html のいずれかが必須です。
byobbooleanいいえ出力をダッシュボードの Storage Integrations で設定した独自のバケットに保存します(Bring Your Own Bucket)。デフォルトは false です。
clipobjectいいえページのこの矩形領域のみを撮影します。
clip.xintegerはい左端の位置(ピクセル)。
clip.yintegerはい上端の位置(ピクセル)。
clip.widthintegerはい領域の幅(ピクセル)。
clip.heightintegerはい領域の高さ(ピクセル)。
blockarrayいいえレンダリング中にブロックするリソース。すっきりした撮影には ['ads', 'cookie_banners', 'chat_widgets'] を使用します。'tracking' は分析用リソースをブロックします。'javascript'、'stylesheets'、'xhr'、'fetch' はページの動作に支障をきたしたり、コンテンツを非表示にしたりする可能性があるため、必要な場合のみ使用してください。その他:images、media(音声/動画)、fonts、text_tracks、event_source、websockets、manifest。
delayintegerいいえページの読み込み後、撮影前に追加で待機する時間(ミリ秒)。デフォルトは 0 です。アニメーション、グラフ、遅れて読み込まれるコンテンツには 1000-5000 を指定します。
freshbooleanいいえtrue(デフォルト)は常に新しい撮影を行います。false の場合、enable_caching=true でパラメーターが同一のリクエストによるキャッシュ済み撮影があれば、それを返します。
proxystringいいえリクエストの経由に使用するプロキシ:'address:port' または 'username:password@address:port'(http:// プレフィックスも使用できます)。地域限定コンテンツや CAPTCHA が表示されやすいサイトに便利です。
sizesarrayいいえ1 回のリクエストで複数のビューポートサイズのページを撮影します。例:[{width:1920,height:1080},{width:768,height:1024},{width:390,height:844}]。width/height を上書きします。各サイズにつきホストされた画像を 1 枚返します。このモードでは画像はインライン表示されません。
widthintegerいいえブラウザーのビューポート幅(ピクセル、最大 7680)。デフォルトは 1680 です。約 390 でスマートフォン、約 768 でタブレットを再現できます。
heightintegerいいえブラウザーのビューポート高(ピクセル、最大 4320)。デフォルトは 876 です。
js_urlstringいいえ撮影前に実行する外部 JavaScript ファイルの URL。
retinabooleanいいえピクセル密度 2 倍でレンダリングし、より鮮明で大きな画像を生成します。デフォルトは false です。
cookiesstringいいえ読み込み前に設定する Cookie。形式は 'name=value; other=value;' です。ログインが必要なページに使用します。
css_urlstringいいえキャプチャ前に挿入する外部スタイルシートの URL。
headersstringいいえ追加の HTTP ヘッダー。'Name: value;' のペアをセミコロンで区切ります。例:'Authorization: Bearer abc; X-Test: 1;'。
timeoutintegerいいえページの読み込みを待ってから API が中止するまでの最大時間。ミリ秒単位です。デフォルトは 100000 です。
latitudenumberいいえブラウザーの Geolocation API が報告する緯度。
selectorstringいいえビューポートの代わりにキャプチャする単一要素の CSS セレクター。例:'#pricing' または '.product-card'。
timezonestringいいえエミュレートする IANA タイムゾーン。例:'America/New_York'、'Asia/Karachi'。デフォルトではサーバーのタイムゾーンを使用します。
dark_modebooleanいいえダークカラースキームでレンダリングします(対応サイトのみ)。デフォルトは false です。
file_typeenumいいえ画像形式。デフォルトは png です。jpg は最小サイズです(image_quality を参照)。webp はサイズと品質のバランスに優れています。PDF には generate_pdf を使用してください。png | jpg | webp
full_pagebooleanいいえビューポートだけでなく、スクロール可能なページ全体をキャプチャします。デフォルトは false です。遅延読み込み画像のあるページでは lazy_load と併用してください。
grayscaleintegerいいえ出力の彩度を下げます。0(フルカラー、デフォルト)から 100(完全なグレースケール)まで指定します。
lazy_loadbooleanいいえページ全体を先にスクロールし、遅延読み込みされる画像やセクションをレンダリングします。デフォルトは false です。
longitudenumberいいえブラウザーの Geolocation API が報告する経度。
save_pathstringいいえファイルをローカルにも保存する場合の任意のパス。例:'./shots/home.png'。ディレクトリパス(末尾が '/' または既存のディレクトリ)の場合、リモートファイル名を保持します。相対パスは MCP サーバーの作業ディレクトリを基準に解決されます。
adjust_topintegerいいえキャプチャ前にビューポートを指定ピクセル数だけ下へスクロールします。デフォルトは 0 です。PDF ではサポートされません。
user_agentstringいいえカスタム User-Agent 文字列。例:モバイルサイトを表示するためにモバイル版 Safari の UA を指定します。
bucket_namestringいいえ同じサービスに複数のバケットが設定されている場合に、byob で使用するバケット。
custom_htmlstringいいえURL を読み込む代わりにレンダリングする生の HTML。url より優先されます。HTML 内のインライン CSS と JavaScript が適用されます。一般公開されていないページに便利です。
template_idstringいいえナビゲーション前に適用する、ScreenshotAPI ダッシュボードに保存済みの Cookie テンプレートの ID。
scroll_delayintegerいいえlazy_load 为 true の場合に、スクロール手順の間に待機する時間。ミリ秒単位です。デフォルトは 500 です。長いページで値を大きくするとタイムアウトすることがあります。
blur_selectorstringいいえぼかす要素の CSS セレクター。複数指定する場合はカンマで区切ります。メールアドレス、口座番号、その他の機密データのマスキングに使用します。
image_qualityintegerいいえJPEG 圧縮品質(0~100、jpg のみ)。デフォルトは 80 です。
include_imagebooleanいいえ画像をツールの結果にインラインで返し、表示できるようにします。デフォルトは true ですが、full_page が true の場合は false です。SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTES(デフォルトは 3500000 バイト)を超える画像は URL のみで返されます。
enable_cachingbooleanいいえこのキャプチャをキャッシュに保存して再利用します。後で fresh=false を指定してキャッシュ済みのキャプチャを取得する場合、クレジットは消費されません。デフォルトは false です。
wait_for_eventenumいいえキャプチャ前に待機するページのライフサイクルイベントです。'load'(デフォルト)はすべてのリソースを待機します。'domcontentloaded' は高速ですが、画像を取得できない場合があります。'networkidle' はネットワークリクエストが 500ms 間なくなるまで待機し、SPA やダッシュボードに最適です。load | domcontentloaded | networkidle
click_recursionintegerいいえselector_to_click を連続してクリックする回数です。selector_to_click の指定が必要です。デフォルトは 0 です。
omit_backgroundbooleanいいえページの白一色または単色の背景を透明にします(png のみ)。デフォルトは false です。
remove_selectorstringいいえキャプチャ前にページから削除する要素の CSS セレクター。複数指定する場合はカンマで区切ります。例:'.ad-banner, #sidebar'。一致しないセレクターは無視されます。
storage_servicestringいいえ複数のストレージサービスが設定されている場合に、byob で使用するストレージサービスを指定します:'aws'、'wasabi'、'google_cloud'。
thumbnail_widthintegerいいえ縦横比を維持したまま、出力をこのピクセル幅にリサイズします。プレビューに便利で、インライン画像のサイズも抑えられます。
accept_languagesstringいいえローカライズされたコンテンツ用の Accept-Language ヘッダーです。例:'fr-FR,fr;q=0.9'。デフォルトは 'en-US,en;q=0.8' です。
enable_incognitobooleanいいえCookie やストレージを保持しない、分離されたシークレットセッションでレンダリングします。デフォルトは false です。
result_file_namestringいいえ保存する出力のファイル名を指定します。一意でない名前を指定すると、以前のファイルが上書きされる場合があります。
scroll_to_elementstringいいえビューポートをキャプチャする前に表示範囲へスクロールする要素の CSS セレクターです。
selector_to_clickstringいいえキャプチャ前にクリックする要素の CSS セレクターです。タブ、ドロップダウン、アコーディオンを開く場合などに使用します。
block_specific_requestsstringいいえブロックする特定のリクエスト URL またはパターンです。カンマ、スペース、改行で区切ります。例:'https://example.com/api/data, https://ads-domain.com'。

詳細

ScreenshotAPI MCP サーバー

npm version GitHub Node.js License

ScreenshotAPI の公式 MCP サーバーです。ウェブサイトのスクリーンショット、URL や HTML の PDF 化、スクロール動画、JavaScript に対応したウェブスクレイピング(Markdown、テキスト、HTML)、一括キャプチャのための 8 つのツールを AI アシスタントに提供します。自然な英語で依頼すると、サーバーが API を呼び出します。アシスタントにはスクリーンショットも画像として返されるため、キャプチャしたページを確認できます。

Claude Desktop、Claude Code、Cursor、Windsurf、VS Code、Cline、Codex など、MCP 対応のあらゆるクライアントで利用できます。

項目値
パッケージ@screenshotapinet/mcp
トランスポートstdio
Node.js>=18

クイックスタート

  1. ScreenshotAPI に登録し、ダッシュボードから API キーをコピーします。

  2. Cursor ユーザーはワンクリックでインストールできます。

    Cursor に追加

  3. その他のユーザーは、MCP クライアントの設定に以下を追加します(正確なファイルパスについては、クライアント別のインストールを参照してください)。

{
  "mcpServers": {
    "screenshotapi": {
      "command": "npx",
      "args": ["-y", "@screenshotapinet/mcp"],
      "env": {
        "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
      }
    }
  }
}
  1. クライアントを再起動します。

  2. 動作を確認します。**「https://example.com のスクリーンショットを撮って」**と依頼してください。

目次

クライアント別のインストール

必要条件
  • Node.js 18 以降
  • ターミナルで npx を利用できること
  • ScreenshotAPI の API キー(登録)
Claude Desktop

claude_desktop_config.json に追加します(Settings → Developer → Edit Config)。

{
  "mcpServers": {
    "screenshotapi": {
      "command": "npx",
      "args": ["-y", "@screenshotapinet/mcp"],
      "env": {
        "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
      }
    }
  }
}

保存後、Claude Desktop を再起動します。

Claude Code
claude mcp add screenshotapi --env SCREENSHOTAPI_TOKEN=<YOUR_API_KEY> -- npx -y @screenshotapinet/mcp

サーバーを追加したら、新しい Claude Code セッションを開始します。

Cursor

ワンクリックでインストールします。

Cursor に追加

または、手動で .cursor/mcp.json に追加します。

{
  "mcpServers": {
    "screenshotapi": {
      "command": "npx",
      "args": ["-y", "@screenshotapinet/mcp"],
      "env": {
        "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
      }
    }
  }
}

保存後、Cursor を再起動します。

Windsurf

~/.codeium/windsurf/mcp_config.json に追加します。

{
  "mcpServers": {
    "screenshotapi": {
      "command": "npx",
      "args": ["-y", "@screenshotapinet/mcp"],
      "env": {
        "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
      }
    }
  }
}

保存後、Windsurf を再起動します。

VS Code / GitHub Copilot

VS Code の settings.json に追加します。

{
  "mcp": {
    "servers": {
      "screenshotapi": {
        "command": "npx",
        "args": ["-y", "@screenshotapinet/mcp"],
        "env": {
          "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
        }
      }
    }
  }
}

保存後、VS Code を再起動します。

Cline

MCP Servers パネルを開き、Configure → Advanced MCP Settings を選択します。cline_mcp_settings.json に追加します。

{
  "mcpServers": {
    "screenshotapi": {
      "command": "npx",
      "args": ["-y", "@screenshotapinet/mcp"],
      "env": {
        "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
      }
    }
  }
}

保存後、Cline を再起動します。

Codex CLI
codex mcp add screenshotapi --env SCREENSHOTAPI_TOKEN=<YOUR_API_KEY> -- npx -y @screenshotapinet/mcp
codex mcp list

サーバーを追加したら、新しい Codex セッションを開始します。

その他の MCP クライアント

以下の設定を使用します。

{
  "command": "npx",
  "args": ["-y", "@screenshotapinet/mcp"],
  "env": {
    "SCREENSHOTAPI_TOKEN": "<YOUR_API_KEY>"
  }
}

動作確認

セットアップ後に、以下を試してください。

プロンプト想定されるツール
https://example.com のスクリーンショットを撮影してくださいtake_screenshot
iPhone サイズの画面、ダークモードで stripe.com のスクリーンショットを撮影してくださいwidth、dark_modeを指定したtake_screenshot
広告をブロックして https://news.ycombinator.com のページ全体をキャプチャしてくださいfull_page、blockを指定したtake_screenshot
https://example.com/invoice を A4 PDF として ./invoice.pdf に保存してくださいformat、save_pathを指定したgenerate_pdf
https://react.dev/learn を読み、要約してくださいscrape_page
https://apple.com のスクロール動画を10秒のGIFで作成してくださいrecord_scrolling_video
競合他社5社のホームページのスクリーンショットを撮影してくださいbulk_screenshots
一括ジョブ1f2e...はもう完了しましたか?get_bulk_status

ツールリファレンス

8つのツールはすべて ScreenshotAPI REST API をラップしています。レンダリングツール(take_screenshot、generate_pdf、scrape_page、record_scrolling_video)は、output=jsonを指定してGET https://shot.screenshotapi.net/v3/screenshotを呼び出し、以下のページ準備オプションを共有します。各ツールではurlまたはcustom_htmlのいずれかを指定します。

共通のレンダリングオプション
グループパラメーター
ビューポートwidth(デフォルト1680、最大7680)、height(デフォルト876、最大4320)
タイミングdelay、wait_for_event(load / domcontentloaded / networkidle)、lazy_load、scroll_delay、timeout
ページ操作css、css_url、js、js_url、remove_selector、blur_selector、selector_to_click、click_recursion、scroll_to_element、adjust_top
ブロックblock(リスト:ads、tracking、cookie_banners、chat_widgets、javascript、stylesheets、images、media、fonts、text_tracks、xhr、fetch、event_source、websockets、manifest)、block_specific_requests
エミュレーションdark_mode、grayscale(0~100)、enable_incognito、user_agent、accept_languages、headers、cookies、template_id、proxy、latitude、longitude、timezone
キャッシュfresh、enable_caching、ttl(スクリーンショットとPDFのみ)
ストレージresult_file_name、byob、storage_service、bucket_name(スクリーンショットとPDFのみ)
take_screenshot

ページを画像としてキャプチャし、ホストされた画像の URL を返します。画像はインラインでも返されるため、アシスタントが確認できます。通常、全ページのキャプチャは長すぎて表示できないため例外となります。インラインでも取得するには、include_image=true を指定してください。

パラメーター必須説明
urlいずれかキャプチャする URL
custom_htmlいずれかURL の代わりにレンダリングする生の HTML
file_typeいいえpng(デフォルト)、jpg、webp
full_pageいいえスクロール可能なページ全体をキャプチャします。デフォルトは false
retinaいいえピクセル密度を 2 倍にします。デフォルトは false
image_qualityいいえJPEG の画質(0~100)。デフォルトは 80
omit_backgroundいいえ背景が単色のページで背景を透明にします(PNG のみ)
thumbnail_widthいいえアスペクト比を維持して、出力をこの幅にリサイズします
selectorいいえCSS セレクターで単一の要素をキャプチャします
clipいいえ矩形領域をキャプチャします:{ x, y, width, height }
sizesいいえ1 回のリクエストで複数のビューポートサイズでキャプチャします:[{ width, height }, ...]
include_imageいいえ画像をインラインで返します。デフォルトは true、full_page が設定されている場合は false
save_pathいいえファイルをローカルにも保存します

すべての共通レンダリングオプションも使用できます。

generate_pdf

URL または生の HTML を PDF に変換し、ホストされた PDF の URL を返します。format(および width/height)を指定しない場合、ページ全体が 1 ページの連続した PDF になります。

パラメーター必須説明
urlいずれか変換する URL
custom_htmlいずれか変換する生の HTML
formatいいえA0~A6、Letter、Legal、Tabloid、Ledger
landscapeいいえ横向きにします。デフォルトは false
page_rangeいいえ指定したページのみを保持します(例:1-3)
print_backgroundいいえ背景色と画像を含めます
mediaいいえCSS の print または screen
save_pathいいえPDF をローカルにも保存します

すべての共通レンダリングオプションも使用できます。

scrape_page

実際のブラウザーでページをレンダリングするため、JavaScript が最初に実行され、その後コンテンツを抽出します。サーバーは抽出されたファイルをダウンロードし、その内容をインラインで返します。同じリクエスト内でスクリーンショットも撮影されます。

パラメーター必須説明
urlいずれかスクレイピングする URL
custom_htmlいずれか処理する生の HTML
extractいいえmarkdown、text、html、image_urls のいずれか。デフォルトは markdown
include_contentいいえ抽出した内容をインラインで返します。デフォルトは true
max_content_charsいいえ抽出した各ファイルを切り詰めます。デフォルトは 50000

さらに、ビューポート、タイミング、ページ操作、ブロック、エミュレーションのオプションがあります。

record_scrolling_video

ブラウザーがページを下方向にスクロールする様子を録画し、ホストされた動画 URL を返します。

パラメーター必須説明
urlいずれか録画する URL
custom_htmlいずれか録画する生の HTML
file_typeいいえmp4(デフォルト)、webm、gif
scroll_speedいいえslow、normal(デフォルト)、fast
durationいいえ秒数、0-60
scroll_backいいえ終了時にページの先頭までスクロールして戻ります
start_immediatelyいいえページの読み込み完了前に録画を開始します
videoいいえスクロールせずに、duration 秒間ビューポートを録画します
sizesいいえ複数のビューポートサイズで録画します:[{ width, height }, ...]、最大 10
save_pathいいえ動画をローカルにも保存します(サイズは 1 つのみ)

さらに、ビューポート、タイミング、ページ操作、ブロック、エミュレーションのオプションがあります。

bulk_screenshots

POST https://api.screenshotapi.net/v1/bulk/json は、最大 50 件の URL を 1 つのジョブとして送信します。有料プランのみ利用できます。

パラメーター必須説明
screenshotsはい[{ url, ...options }]。オプションには API の生の名前(file_type、width、full_page、block_ads など)を使用します
defaultsいいえ各エントリーが独自の値で上書きしない限り、すべてのエントリーに適用されるオプション
bulk_screenshots_csv

POST https://api.screenshotapi.net/v1/bulk/csv は、url 列を含む CSV をアップロードします。それ以外の列は、その行のレンダリングオプションになります。有料プランのみ利用できます。

パラメーター必須説明
csv_pathいずれかローカルの CSV ファイルのパス
csv_contentいずれかCSV テキスト
get_bulk_status

GET https://api.screenshotapi.net/v1/bulk/csv/status は、ジョブの percent_complete、successful_urls、failed_urls を返します。

パラメーター必須説明
uuidはいジョブの UUID
download_bulk_results

GET https://api.screenshotapi.net/v1/bulk/csv/download は、各 URL につき 1 行を返し、url、status、screenshot、error_message が含まれます。

パラメーター必須説明
uuidはいジョブの uuid

プロンプトの例

スクリーンショット
  • https://linear.app のスクリーンショットを撮影してください
  • ダークモードで、幅 390px のモバイルビューポートから https://github.com のスクリーンショットを撮影してください。
  • 広告と Cookie バナーをブロックして、https://vercel.com/pricing のページ全体をキャプチャしてください。
  • https://example.com/pricing の価格表だけを取得してください(セレクター #pricing)。
  • ステージングサイトのスクリーンショットを撮影し、クラス .user-email が付いた要素をすべてぼかしてください。
  • ドイツからドイツ語で https://www.bbc.com がどのように見えるか表示してください。
PDF
  • https://example.com/report を A4 横向きの PDF に変換し、./report.pdf に保存してください。
  • この HTML の請求書をレターサイズの PDF に変換してください。
  • https://docs.example.com/guide の 2〜4 ページだけを PDF としてエクスポートしてください。
スクレイピング
動画
  • https://stripe.com をゆっくりスクロールし、上部に戻る MP4 を録画してください。
  • ランディングページをデスクトップとモバイルのサイズでスクロールする GIF を作成してください。
一括処理
  • Cookie バナーを非表示にして、これら 20 個の URL のスクリーンショットを 1440x900 で撮影してください。
  • 一括処理ジョブの状況を教えてください。完了したら結果をダウンロードしてください。

エラーコード

ツール呼び出しによってサーバーがクラッシュすることはありません。上流で発生したエラーは、error、code、message、guidance フィールドを含む構造化されたツールの結果として返されるため、クライアントは問題を説明し、修正方法を提案できます。

コード意味
310対象 URL でリダイレクトが多すぎます
400パラメーター(URL、ファイル形式、プロキシ、位置情報、CSS/JS URL、クリップ、テンプレート)が無効、または対象の SSL に問題があります
401SCREENSHOTAPI_TOKEN がないか無効、またはサブスクリプションが無効です
402未払い料金またはプランの割り当て量の 2 倍を超える使用により、サービスが一時停止しています
403スクリーンショットの割り当て量を使い切った、トライアルの期限が切れた、または対象が接続を拒否しました
404アカウントがプランまたはトライアルに登録されていません
407プロキシトンネルへの接続に失敗しました
408ページのレンダリングに時間がかかりすぎました
4291 分あたりのリクエスト数が多すぎます
444対象サイトが接続を閉じたか、何も返しませんでした
495対象サイトの SSL/TLS バージョンまたは暗号方式が一致しません
499このサーバーは API の応答を待つのを停止しました(SCREENSHOTAPI_REQUEST_TIMEOUT_MS を参照)
500ScreenshotAPI の内部エラーです。安全に再試行できます
502サーバーが ScreenshotAPI にアクセスできませんでした
503ScreenshotAPI または対象ページが一時的に利用できません

URL が指定されていない場合のエラー結果の例:

{
  "error": "url_required",
  "code": 400,
  "message": "Provide either 'url' or 'custom_html'.",
  "guidance": "Pass a fully qualified URL including the protocol, e.g. 'https://example.com', or pass custom_html instead."
}

全一覧については、ScreenshotAPI のエラードキュメントを参照してください。

仕組み

これは、ScreenshotAPI REST API をラップする stdio MCP サーバーです。

実行時の動作は次のとおりです。

  1. MCP クライアントが npx を使ってサーバープロセスを起動します。
  2. クライアントがツール一覧を読み込みます。
  3. プロンプトがツールに一致すると、クライアントがそのツールを呼び出します。
  4. サーバーが入力を検証し、output=json を指定して ScreenshotAPI を呼び出し、ホストされたファイルの URL を含む構造化 JSON を返します。
  5. スクリーンショットの場合、サーバーは画像もダウンロードし、インラインで返します。スクレイピングの場合は、抽出された Markdown、テキスト、または HTML をダウンロードして内容を返します。

API キーは呼び出しごとに環境変数から読み込まれ、token パラメーターとして送信されます。サーバーは、モデルに渡す前にすべてのレスポンスからトークンを取り除きます。大きな custom_html など、値が非常に長いリクエストは、URL の長さ制限を避けるため、JSON ボディを使った POST として送信されます。

環境変数

変数必須デフォルト説明
SCREENSHOTAPI_TOKENはいScreenshotAPI API キー
SCREENSHOTAPI_REQUEST_TIMEOUT_MSいいえ180000上流リクエストのタイムアウト(ミリ秒)
SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTESいいえ3500000モデルにインラインで返すスクリーンショットの最大サイズ

ソースからビルドする

git clone https://github.com/Screenshot-API/screenshot-mcp.git
cd screenshot-mcp
npm install
npm run build

直接実行します。

SCREENSHOTAPI_TOKEN=<YOUR_KEY> node dist/cli.js

MCP Inspector で確認します。

SCREENSHOTAPI_TOKEN=<YOUR_KEY> npx @modelcontextprotocol/inspector node dist/cli.js

トラブルシューティング

更新後もクライアントに古いツール一覧が表示される: クライアントを再起動し、最新の npm バージョンが読み込まれていることを確認してください。

401 token_required: MCP クライアント設定の env ブロックに SCREENSHOTAPI_TOKEN が設定されていません。

401 invalid_token: キーが間違っているか、ダッシュボードでローテーションされています。現在のキーをダッシュボードからコピーしてください。

スクリーンショットが画像ではなく URL として返される: 画像が SCREENSHOTAPI_MAX_INLINE_IMAGE_BYTES より大きいか、full_page キャプチャです。thumbnail_width を使用するか、image_quality を低くした jpg を使うか、include_image=true を設定してください。

ページが空白、または最後まで読み込まれない: delay(例:3000)を追加するか、wait_for_event=networkidle を使用するか、遅延読み込み画像のあるページでは lazy_load=true を設定してください。

キャプチャに Cookie バナーやポップアップが表示される: block: ["cookie_banners", "ads", "chat_widgets"] を渡すか、remove_selector で特定の要素を削除してください。

CAPTCHA またはボットによるブロック: リクエストを住宅用 proxy 経由で送信してください。プロキシのドキュメントを参照してください。

タイムアウト: ページの読み込みが遅い場合は、より長い timeout(API 側、デフォルトは 100000 ms)と、より長い SCREENSHOTAPI_REQUEST_TIMEOUT_MS(このサーバー側、デフォルトは 180000 ms)が必要になることがあります。一部の MCP クライアントには、独自のツール呼び出しタイムアウトもあります。

リンク

ライセンス

MIT

コメント

MCP は初めてですか?

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

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