MCP Screenshot Server
Universal Screenshot MCP
Сервер MCP (Model Context Protocol), предоставляющий ИИ-ассистентам возможности создания скриншотов — как захват веб-страниц через Puppeteer, так и кроссплатформенные системные скриншоты с использованием нативных инструментов ОС.
Возможности
Скриншоты веб-страниц — Захват любого публичного URL с помощью headless-браузера Chromium
Кроссплатформенные системные скриншоты — Захват всего экрана, окна или области с помощью нативных инструментов ОС (macOS
screencapture, Linuxmaim/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 |
| Дополнительная установка не требуется |
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 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.
Параметр | Тип | Обязательный | Описание |
| 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
Делает скриншот рабочего стола, конкретного окна приложения или области экрана с помощью нативных инструментов ОС. Работает на macOS, Linux и Windows.
Параметр | Тип | Обязательный | Описание |
| enum | ✅ |
|
| number | — | ID окна для режима окна |
| string | — | Имя приложения (например, |
| object | — |
|
| number | — | Номер дисплея для конфигураций с несколькими мониторами |
| boolean | — | Включить курсор мыши в захват |
| enum | — |
|
| number | — | Задержка захвата в секундах (0–10) |
| string | — | Путь к выходному файлу (по умолчанию: |
Поддержка функций на разных платформах
Функция | macOS | Linux | Windows |
Весь экран | ✅ | ✅ | ✅ |
Область | ✅ | ✅ (maim, scrot, grim, import) | ✅ |
Окно по имени | ✅ | ⚠️ X11 + xdotool | ⚠️ best-effort |
Окно по ID | ✅ | ✅ только X11 | ⚠️ HWND |
Несколько дисплеев | ✅ | ⚠️ зависит от инструмента | ✅ |
Включить курсор | ✅ | ⚠️ зависит от инструмента | ⚠️ |
Задержка | ✅ | ✅ | ✅ |
Пример запроса:
Сделай системный скриншот окна Safari
Конфигурация
Переменные окружения
Переменная | По умолчанию | Описание |
|
| Директория вывода по умолчанию относительно |
|
| Установите |
Директории вывода
Скриншоты по умолчанию сохраняются в ~/Documents/screenshots (настраивается через SCREENSHOT_OUTPUT_DIR). Пользовательские пути вывода должны указывать на одну из разрешенных директорий:
Директория | Описание |
| Расположение вывода по умолчанию (настраиваемое) |
| Исходное расположение по умолчанию |
| Папка загрузок пользователя |
| Папка документов пользователя |
| Системная временная директория |
Безопасность
Этот сервер реализует несколько уровней защиты:
ID | Угроза | Смягчение |
SEC-001 | SSRF / DNS-ребиндинг | URL проверяются на соответствие заблокированным диапазонам IP; DNS разрешается до запроса с привязкой IP через |
SEC-003 | Инъекция команд | Все подпроцессы используют |
SEC-004 | Обход путей | Пути вывода проверяются с помощью |
SEC-005 | Отказ в обслуживании | Параллельные экземпляры Puppeteer ограничены 3 с помощью семафора |
Для получения полной информации см. docs/security.md.
Разработка
Скрипты
Команда | Описание |
| Компиляция TypeScript в |
| Перекомпиляция при изменениях файлов |
| Модульные тесты (быстрые, полностью замоканные) |
| Интеграционные тесты (реальный DNS/файловая система) |
| E2E-тесты (реальный Puppeteer/нативные инструменты) |
| Все уровни тестов вместе |
| Linux e2e через Docker (требуется 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 на трех уровнях:
Модульные (
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
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