Browser Use
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
作者による説明(英語の原文)
MCP server for web page and cross-platform system screenshots (macOS, Linux, Windows)
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"screenshot": {
"command": "npx",
"args": [
"-y",
"universal-screenshot-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add screenshot -- npx -y universal-screenshot-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"screenshot": {
"command": "npx",
"args": [
"-y",
"universal-screenshot-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"screenshot": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"universal-screenshot-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント sethbang で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.5.0)がレジストリに届いたのは8 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Browser Use, Chrome DevTools MCP, MCP Server Browser
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
MCP server for Chrome DevTools
MCP server for browser use access
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An MCP (Model Context Protocol) server that provides AI assistants with screenshot capabilities — both web page capture via Puppeteer and cross-platform system screenshots using native OS tools.
screencapture, Linux maim/scrot/gnome-screenshot/etc., Windows PowerShell+.NET)take_system_screenshot| Platform | Required Tools | Notes |
|---|---|---|
| macOS | screencapture (built-in) | No additional installation needed |
| Linux | One of: maim, scrot, gnome-screenshot, spectacle, grim, or import (ImageMagick) | maim or scrot recommended for full feature support. For window-by-name capture, also install xdotool. |
| Windows | powershell (built-in) | Uses .NET System.Drawing — no additional installation needed |
# Ubuntu/Debian (recommended)
sudo apt install maim xdotool
sudo dnf install maim xdotool
sudo pacman -S maim xdotool
sudo apt install grim
After installing, you can verify your setup with:
npx universal-screenshot-mcp --doctor
This probes the host and prints copy-pasteable install commands for any missing tools, tailored to your detected distro.
npm install -g universal-screenshot-mcp
Or run directly with npx:
npx universal-screenshot-mcp
git clone https://github.com/sethbang/mcp-screenshot-server.git
cd mcp-screenshot-server npm install npm run build
Add the server to your MCP client configuration. For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": { "screenshot-server": { "command": "npx", "args": ["-y", "universal-screenshot-mcp"] } } }
Or if installed from source:
{
"mcpServers": { "screenshot-server": { "command": "node", "args": ["/absolute/path/to/mcp-screenshot-server/build/index.js"] } } }
For Claude Code, register the server with the claude mcp add command:
# Project scope (current directory only)
claude mcp add screenshot-server -- npx -y universal-screenshot-mcp
claude mcp add --scope user screenshot-server -- npx -y universal-screenshot-mcp
Or if installed from source:
claude mcp add screenshot-server -- node /absolute/path/to/mcp-screenshot-server/build/index.js
Verify the server registered with claude mcp list, or check live status from inside a session with /mcp.
For Cursor or other MCP clients, consult their documentation for the equivalent configuration.
The server exposes two MCP tools:
take_screenshotCaptures a web page (or a specific element) via a headless Puppeteer browser.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | ✅ | URL to capture (http/https only) |
width | number | — | Viewport width (1–3840) |
height | number | — | Viewport height (1–2160) |
fullPage | boolean | — | Capture the full scrollable page |
selector | string | — | CSS selector to capture a specific element |
waitForSelector | string | — | Wait for this selector before capturing |
waitForTimeout | number | — | Delay in milliseconds (0–30000) |
outputPath | string | — | Output file path (default: ~/Documents/screenshots) |
Example prompt:
Take a screenshot of https://example.com at 1920x1080
take_system_screenshotCaptures the desktop, a specific application window, or a screen region using native OS tools. Works on macOS, Linux, and Windows.
| Parameter | Type | Required | Description |
|---|---|---|---|
mode | enum | ✅ | fullscreen, window, or region |
windowId | number | — | Window ID for window mode |
windowName | string | — | App name (e.g. "Safari", "Firefox") for window mode |
region | object | — | { x, y, width, height } for region mode |
display | number | — | Display number for multi-monitor setups |
includeCursor | boolean | — | Include the mouse cursor in the capture |
format | enum | — | png (default) or jpg |
delay | number | — | Capture delay in seconds (0–10) |
outputPath | string | — | Output file path (default: ~/Documents/screenshots) |
| Feature | macOS | Linux | Windows |
|---|---|---|---|
| Fullscreen | ✅ | ✅ | ✅ |
| Region | ✅ | ✅ (maim, scrot, grim, import) | ✅ |
| Window by name | ✅ | ⚠️ X11 + xdotool | ⚠️ best-effort |
| Window by ID | ✅ | ✅ X11 only | ⚠️ HWND |
| Multi-display | ✅ | ⚠️ tool-dependent | ✅ |
| Include cursor | ✅ | ⚠️ tool-dependent | ⚠️ |
| Delay | ✅ | ✅ | ✅ |
Example prompt:
Take a system screenshot of the Safari window
| Variable | Default | Description |
|---|---|---|
SCREENSHOT_OUTPUT_DIR | Documents/screenshots | Default output directory relative to ~ |
ALLOW_LOCAL | false | Set to true to allow screenshotting localhost/127.x.x.x/[::1] (useful for local dev servers) |
Screenshots are saved to ~/Documents/screenshots by default (configurable via SCREENSHOT_OUTPUT_DIR). Custom output paths must resolve to one of these allowed directories:
| Directory | Description |
|---|---|
~/Documents/screenshots | Default output location (configurable) |
~/Desktop/Screenshots | Original default location |
~/Downloads | User downloads folder |
~/Documents | User documents folder |
/tmp | System temp directory |
This server implements multiple layers of security hardening:
| ID | Threat | Mitigation |
|---|---|---|
| SEC-001 | SSRF / DNS rebinding | URLs validated against blocked IP ranges; DNS resolved pre-request with IP pinning via --host-resolver-rules; navigation redirects re-validated |
| SEC-003 | Command injection | All subprocesses use execFile (no shell); app names validated against SAFE_APP_NAME_PATTERN |
| SEC-004 | Path traversal | Output paths validated with fs.realpath() symlink resolution; restricted to allowed directories |
| SEC-005 | Denial of service | Concurrent Puppeteer instances limited to 3 via semaphore; 120 s hard deadline per call, after which the browser is killed and the slot freed |
| SEC-006 | Popup SSRF bypass | Chromium's popup blocker kept on (Puppeteer disables it by default); any popup that still opens is closed |
For full details, see docs/security.md.
| Command | Description |
|---|---|
npm run build | Compile TypeScript to build/ |
npm run watch | Recompile on file changes |
npm test | Unit tests (fast, fully mocked) |
npm run test:integration | Integration tests (real DNS/filesystem) |
npm run test:e2e | E2E tests (real Puppeteer/native tools) |
npm run test:all | All test tiers together |
npm run test:linux | Linux e2e via Docker (requires Docker) |
npm run test:watch | Run tests in watch mode |
npm run test:coverage | Run tests with coverage report |
npm run lint | Lint source with ESLint |
npm run inspector | Launch MCP Inspector for debugging |
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)
Tests use Vitest in three tiers:
npm test) — Full dependency injection, no real I/O. Fast feedback loop.npm run test:integration) — Real DNS resolution, real filesystem with temp directories, real Puppeteer against a local HTTP server.npm run test:e2e) — Real native screenshot tools. macOS tests run natively; Linux tests run in Docker via npm run test:linux; Windows tests run on the windows-latest CI runner.npm test # Unit tests (~300ms)
npm run test:linux # Linux provider tests in Docker npm run test:all # Everything
npm run inspector
This launches the MCP Inspector connected to your built server, allowing you to invoke tools interactively.
Apache-2.0 — Copyright 2026 Seth Bang