Skip to main content
Glama
sethbang

MCP Screenshot Server

by sethbang

Universal Screenshot MCP

npm version MCP Registry License

Сервер MCP (Model Context Protocol), предоставляющий ИИ-ассистентам возможности создания скриншотов — как захват веб-страниц через Puppeteer, так и кроссплатформенные системные скриншоты с использованием нативных инструментов ОС.

Возможности

  • Скриншоты веб-страниц — Захват любого публичного URL с помощью headless-браузера Chromium

  • Кроссплатформенные системные скриншоты — Захват всего экрана, окна или области с помощью нативных инструментов ОС (macOS screencapture, Linux maim/scrot/gnome-screenshot/и т.д., Windows PowerShell+.NET)

  • Безопасность прежде всего — Предотвращение SSRF, защита от обхода путей (path traversal), защита от DNS-ребиндинга, предотвращение инъекций команд и ограничение DoS

  • MCP Native — Прямая интеграция с Claude Desktop, Cursor и любым клиентом, поддерживающим MCP

Related MCP server: Webpage Screenshot MCP Server

Требования

  • Node.js >= 18.0.0

  • Chromium автоматически загружается Puppeteer при первом запуске

Платформозависимые требования для take_system_screenshot

Платформа

Необходимые инструменты

Примечания

macOS

screencapture (встроенный)

Дополнительная установка не требуется

Linux

Один из: maim, scrot, gnome-screenshot, spectacle, grim или import (ImageMagick)

Рекомендуются maim или scrot для полной поддержки функций. Для захвата окна по имени также установите xdotool.

Windows

powershell (встроенный)

Использует .NET System.Drawing — дополнительная установка не требуется

Примеры установки для 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 build

Настройка вашего MCP-клиента

Добавьте сервер в конфигурацию вашего 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-клиентов обратитесь к их документации для получения информации об эквивалентной конфигурации.

Инструменты

Сервер предоставляет два инструмента MCP:

take_screenshot

Делает скриншот веб-страницы (или конкретного элемента) через headless-браузер Puppeteer.

Параметр

Тип

Обязательный

Описание

url

string

URL для захвата (только http/https)

width

number

Ширина области просмотра (1–3840)

height

number

Высота области просмотра (1–2160)

fullPage

boolean

Захват всей прокручиваемой страницы

selector

string

CSS-селектор для захвата конкретного элемента

waitForSelector

string

Ожидание появления селектора перед захватом

waitForTimeout

number

Задержка в миллисекундах (0–30000)

outputPath

string

Путь к выходному файлу (по умолчанию: ~/Documents/screenshots)

Пример запроса:

Сделай скриншот https://example.com с разрешением 1920x1080

take_system_screenshot

Делает скриншот рабочего стола, конкретного окна приложения или области экрана с помощью нативных инструментов ОС. Работает на macOS, Linux и Windows.

Параметр

Тип

Обязательный

Описание

mode

enum

fullscreen, window или region

windowId

number

ID окна для режима окна

windowName

string

Имя приложения (например, "Safari", "Firefox") для режима окна

region

object

{ x, y, width, height } для режима области

display

number

Номер дисплея для конфигураций с несколькими мониторами

includeCursor

boolean

Включить курсор мыши в захват

format

enum

png (по умолчанию) или jpg

delay

number

Задержка захвата в секундах (0–10)

outputPath

string

Путь к выходному файлу (по умолчанию: ~/Documents/screenshots)

Поддержка функций на разных платформах

Функция

macOS

Linux

Windows

Весь экран

Область

✅ (maim, scrot, grim, import)

Окно по имени

⚠️ X11 + xdotool

⚠️ best-effort

Окно по ID

✅ только X11

⚠️ HWND

Несколько дисплеев

⚠️ зависит от инструмента

Включить курсор

⚠️ зависит от инструмента

⚠️

Задержка

Пример запроса:

Сделай системный скриншот окна Safari

Конфигурация

Переменные окружения

Переменная

По умолчанию

Описание

SCREENSHOT_OUTPUT_DIR

Documents/screenshots

Директория вывода по умолчанию относительно ~

ALLOW_LOCAL

false

Установите true, чтобы разрешить скриншоты localhost/127.x.x.x/[::1] (полезно для локальных серверов разработки)

Директории вывода

Скриншоты по умолчанию сохраняются в ~/Documents/screenshots (настраивается через SCREENSHOT_OUTPUT_DIR). Пользовательские пути вывода должны указывать на одну из разрешенных директорий:

Директория

Описание

~/Documents/screenshots

Расположение вывода по умолчанию (настраиваемое)

~/Desktop/Screenshots

Исходное расположение по умолчанию

~/Downloads

Папка загрузок пользователя

~/Documents

Папка документов пользователя

/tmp

Системная временная директория

Безопасность

Этот сервер реализует несколько уровней защиты:

ID

Угроза

Смягчение

SEC-001

SSRF / DNS-ребиндинг

URL проверяются на соответствие заблокированным диапазонам IP; DNS разрешается до запроса с привязкой IP через --host-resolver-rules; редиректы навигации повторно проверяются

SEC-003

Инъекция команд

Все подпроцессы используют execFile (без оболочки); имена приложений проверяются по SAFE_APP_NAME_PATTERN

SEC-004

Обход путей

Пути вывода проверяются с помощью fs.realpath() (разрешение символических ссылок); ограничено разрешенными директориями

SEC-005

Отказ в обслуживании

Параллельные экземпляры Puppeteer ограничены 3 с помощью семафора

Для получения полной информации см. docs/security.md.

Разработка

Скрипты

Команда

Описание

npm run build

Компиляция TypeScript в build/

npm run watch

Перекомпиляция при изменениях файлов

npm test

Модульные тесты (быстрые, полностью замоканные)

npm run test:integration

Интеграционные тесты (реальный DNS/файловая система)

npm run test:e2e

E2E-тесты (реальный Puppeteer/нативные инструменты)

npm run test:all

Все уровни тестов вместе

npm run test:linux

Linux e2e через Docker (требуется Docker)

npm run test:watch

Запуск тестов в режиме отслеживания

npm run test:coverage

Запуск тестов с отчетом о покрытии

npm run lint

Линтинг исходного кода с помощью ESLint

npm run inspector

Запуск 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 на трех уровнях:

  • Модульные (npm test) — Полная инъекция зависимостей, отсутствие реального ввода-вывода. Быстрый цикл обратной связи.

  • Интеграционные (npm run test:integration) — Реальное разрешение DNS, реальная файловая система с временными директориями, реальный Puppeteer против локального HTTP-сервера.

  • E2E (npm run test:e2e) — Реальные нативные инструменты для скриншотов. Тесты macOS запускаются нативно; тесты Linux запускаются в Docker через npm run test:linux.

npm test                 # Unit tests (~300ms)
npm run test:linux       # Linux provider tests in Docker
npm run test:all         # Everything

Отладка с помощью MCP Inspector

npm run inspector

Это запускает MCP Inspector, подключенный к вашему собранному серверу, позволяя вызывать инструменты в интерактивном режиме.

Лицензия

Apache-2.0 — Авторское право 2026 Seth Bang

Install Server
A
security – no known vulnerabilities
A
license - permissive license
B
quality - B tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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