MCP Screenshot Server
Universal Screenshot MCP
AIアシスタントにスクリーンショット機能を提供するMCP (Model Context Protocol)サーバーです。PuppeteerによるWebページキャプチャと、OSネイティブツールを使用したクロスプラットフォームのシステムスクリーンショットの両方に対応しています。
機能
Webページスクリーンショット — ヘッドレスChromiumブラウザを使用して、あらゆる公開URLをキャプチャ
クロスプラットフォームのシステムスクリーンショット — OSネイティブツール(macOSの
screencapture、Linuxのmaim/scrot/gnome-screenshotなど、WindowsのPowerShell+.NET)を使用したフルスクリーン、ウィンドウ、または領域キャプチャセキュリティ重視の設計 — SSRF防止、パストラバーサル保護、DNSリバインディング対策、コマンドインジェクション防止、DoS制限
MCPネイティブ — Claude Desktop、Cursor、およびMCP互換クライアントと直接統合
Related MCP server: Webpage Screenshot MCP Server
要件
Node.js >= 18.0.0
Chromium は初回実行時にPuppeteerによって自動的にダウンロードされます
take_system_screenshot のプラットフォーム別要件
プラットフォーム | 必要なツール | 備考 |
macOS |
| 追加インストール不要 |
Linux |
| 全機能サポートには |
Windows |
| .NET |
Linuxのインストール例
# Ubuntu/Debian (recommended)
sudo apt install maim xdotool
# Fedora
sudo dnf install maim xdotool
# Arch Linux
sudo pacman -S maim xdotool
# Wayland (Sway, etc.)
sudo apt install grimクイックスタート
npmからインストール
npm install -g universal-screenshot-mcpまたは npx で直接実行:
npx universal-screenshot-mcpソースからインストール
git clone https://github.com/sethbang/mcp-screenshot-server.git
cd mcp-screenshot-server
npm install
npm run buildMCPクライアントの設定
MCPクライアントの設定にサーバーを追加します。Claude Desktopの場合、~/Library/Application Support/Claude/claude_desktop_config.json を編集します:
{
"mcpServers": {
"screenshot-server": {
"command": "npx",
"args": ["-y", "universal-screenshot-mcp"]
}
}
}ソースからインストールした場合は以下:
{
"mcpServers": {
"screenshot-server": {
"command": "node",
"args": ["/absolute/path/to/mcp-screenshot-server/build/index.js"]
}
}
}Cursorやその他のMCPクライアントについては、それぞれのドキュメントで同等の設定方法を確認してください。
ツール
このサーバーは2つのMCPツールを公開しています:
take_screenshot
ヘッドレスPuppeteerブラウザを介してWebページ(または特定の要素)をキャプチャします。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | キャプチャするURL (http/httpsのみ) |
| number | — | ビューポートの幅 (1–3840) |
| number | — | ビューポートの高さ (1–2160) |
| boolean | — | スクロール可能なページ全体をキャプチャ |
| string | — | 特定の要素をキャプチャするためのCSSセレクタ |
| string | — | キャプチャ前にこのセレクタを待機 |
| number | — | ミリ秒単位の遅延 (0–30000) |
| string | — | 出力ファイルパス (デフォルト: |
プロンプト例:
https://example.com のスクリーンショットを1920x1080で撮影して
take_system_screenshot
OSネイティブツールを使用して、デスクトップ、特定のアプリケーションウィンドウ、または画面領域をキャプチャします。macOS、Linux、Windowsで動作します。
パラメータ | 型 | 必須 | 説明 |
| enum | ✅ |
|
| number | — | ウィンドウモード用のウィンドウID |
| string | — | ウィンドウモード用のアプリ名 (例: |
| object | — | 領域モード用の |
| number | — | マルチモニター設定用のディスプレイ番号 |
| boolean | — | キャプチャにマウスカーソルを含める |
| enum | — |
|
| number | — | 秒単位のキャプチャ遅延 (0–10) |
| string | — | 出力ファイルパス (デフォルト: |
クロスプラットフォームの機能サポート
機能 | macOS | Linux | Windows |
フルスクリーン | ✅ | ✅ | ✅ |
領域 | ✅ | ✅ (maim, scrot, grim, import) | ✅ |
ウィンドウ名指定 | ✅ | ⚠️ X11 + xdotool | ⚠️ ベストエフォート |
ウィンドウID指定 | ✅ | ✅ X11のみ | ⚠️ HWND |
マルチディスプレイ | ✅ | ⚠️ ツール依存 | ✅ |
カーソルを含める | ✅ | ⚠️ ツール依存 | ⚠️ |
遅延 | ✅ | ✅ | ✅ |
プロンプト例:
Safariウィンドウのシステムスクリーンショットを撮影して
設定
環境変数
変数 | デフォルト | 説明 |
|
|
|
|
|
|
出力ディレクトリ
スクリーンショットはデフォルトで ~/Documents/screenshots に保存されます(SCREENSHOT_OUTPUT_DIRで設定可能)。カスタム出力パスは、許可されたディレクトリのいずれかに解決される必要があります:
ディレクトリ | 説明 |
| デフォルトの出力場所 (設定可能) |
| 元のデフォルトの場所 |
| ユーザーのダウンロードフォルダ |
| ユーザーのドキュメントフォルダ |
| システム一時ディレクトリ |
セキュリティ
このサーバーは複数のセキュリティ強化レイヤーを実装しています:
ID | 脅威 | 緩和策 |
SEC-001 | SSRF / DNSリバインディング | ブロックされたIP範囲に対してURLを検証。 |
SEC-003 | コマンドインジェクション | すべてのサブプロセスで |
SEC-004 | パストラバーサル |
|
SEC-005 | サービス拒否 (DoS) | セマフォによりPuppeteerの同時実行数を3に制限 |
詳細は docs/security.md を参照してください。
開発
スクリプト
コマンド | 説明 |
| TypeScriptを |
| ファイル変更時に再コンパイル |
| ユニットテスト (高速、完全にモック化) |
| 統合テスト (実際のDNS/ファイルシステム) |
| E2Eテスト (実際のPuppeteer/ネイティブツール) |
| すべてのテスト階層をまとめて実行 |
| Docker経由でのLinux E2Eテスト (Dockerが必要) |
| ウォッチモードでテストを実行 |
| カバレッジレポート付きでテストを実行 |
| ESLintでソースをリント |
| デバッグ用にMCP Inspectorを起動 |
プロジェクト構造
src/
├── index.ts # Entry point — stdio transport
├── server.ts # MCP server factory
├── config/
│ ├── index.ts # Static constants (limits, allowed dirs)
│ └── runtime.ts # Singleton semaphore, default directory
├── tools/
│ ├── take-screenshot.ts # Web page capture tool
│ └── take-system-screenshot.ts # macOS system capture tool
├── types/
│ └── index.ts # Shared TypeScript interfaces
├── utils/
│ ├── helpers.ts # Response builders, file utilities
│ ├── screenshot-provider.ts # Cross-platform provider interface + factory
│ ├── macos-provider.ts # macOS: screencapture wrapper
│ ├── linux-provider.ts # Linux: maim/scrot/gnome-screenshot/etc.
│ ├── windows-provider.ts # Windows: PowerShell + .NET System.Drawing
│ ├── macos.ts # Window ID lookup via CoreGraphics
│ └── semaphore.ts # Async concurrency limiter
└── validators/
├── path.ts # Output path validation (SEC-004)
└── url.ts # URL/SSRF validation (SEC-001)テスト
テストは Vitest を使用し、3つの階層で行われます:
ユニット (
npm test) — 完全な依存関係注入、実際のI/Oなし。高速なフィードバックループ。統合 (
npm run test:integration) — 実際のDNS解決、一時ディレクトリを使用した実際のファイルシステム、ローカルHTTPサーバーに対する実際のPuppeteer。E2E (
npm run test:e2e) — 実際のネイティブスクリーンショットツール。macOSテストはネイティブで実行。Linuxテストはnpm run test:linuxを介してDockerで実行。
npm test # Unit tests (~300ms)
npm run test:linux # Linux provider tests in Docker
npm run test:all # EverythingMCP Inspectorによるデバッグ
npm run inspectorこれにより、ビルドされたサーバーに接続された MCP Inspector が起動し、ツールを対話的に呼び出すことができます。
ライセンス
Apache-2.0 — Copyright 2026 Seth Bang
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sethbang/mcp-screenshot-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server