Skip to main content
Glama
sethbang

MCP Screenshot Server

by sethbang

MCP de captura de pantalla universal

npm version MCP Registry License

Un servidor MCP (Model Context Protocol) que proporciona a los asistentes de IA capacidades de captura de pantalla, tanto de páginas web mediante Puppeteer como de capturas de pantalla del sistema multiplataforma utilizando herramientas nativas del SO.

Características

  • Capturas de pantalla de páginas web — Capture cualquier URL pública utilizando un navegador Chromium sin interfaz gráfica (headless).

  • Capturas de pantalla del sistema multiplataforma — Captura de pantalla completa, ventana o región utilizando herramientas nativas del SO (macOS screencapture, Linux maim/scrot/gnome-screenshot/etc., Windows PowerShell+.NET).

  • Diseño centrado en la seguridad — Prevención de SSRF, protección contra recorrido de rutas (path traversal), defensa contra rebinding de DNS, prevención de inyección de comandos y limitación de DoS.

  • Nativo de MCP — Se integra directamente con Claude Desktop, Cursor y cualquier cliente compatible con MCP.

Related MCP server: Webpage Screenshot MCP Server

Requisitos

  • Node.js >= 18.0.0

  • Chromium se descarga automáticamente mediante Puppeteer en la primera ejecución.

Requisitos específicos de la plataforma para take_system_screenshot

Plataforma

Herramientas requeridas

Notas

macOS

screencapture (integrado)

No requiere instalación adicional

Linux

Una de las siguientes: maim, scrot, gnome-screenshot, spectacle, grim o import (ImageMagick)

Se recomienda maim o scrot para una compatibilidad total de funciones. Para capturar ventanas por nombre, instale también xdotool.

Windows

powershell (integrado)

Utiliza .NET System.Drawing: no requiere instalación adicional

Ejemplos de instalación en 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

Inicio rápido

Instalar desde npm

npm install -g universal-screenshot-mcp

O ejecútelo directamente con npx:

npx universal-screenshot-mcp

Instalar desde el código fuente

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

Configurar su cliente MCP

Añada el servidor a la configuración de su cliente MCP. Para Claude Desktop, edite ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "screenshot-server": {
      "command": "npx",
      "args": ["-y", "universal-screenshot-mcp"]
    }
  }
}

O si se instaló desde el código fuente:

{
  "mcpServers": {
    "screenshot-server": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-screenshot-server/build/index.js"]
    }
  }
}

Para Cursor u otros clientes MCP, consulte su documentación para obtener la configuración equivalente.

Herramientas

El servidor expone dos herramientas MCP:

take_screenshot

Captura una página web (o un elemento específico) a través de un navegador Puppeteer sin interfaz gráfica.

Parámetro

Tipo

Requerido

Descripción

url

string

URL a capturar (solo http/https)

width

number

Ancho del viewport (1–3840)

height

number

Alto del viewport (1–2160)

fullPage

boolean

Capturar la página completa desplazable

selector

string

Selector CSS para capturar un elemento específico

waitForSelector

string

Esperar a este selector antes de capturar

waitForTimeout

number

Retraso en milisegundos (0–30000)

outputPath

string

Ruta del archivo de salida (predeterminado: ~/Documents/screenshots)

Ejemplo de prompt:

Toma una captura de pantalla de https://example.com a 1920x1080

take_system_screenshot

Captura el escritorio, una ventana de aplicación específica o una región de la pantalla utilizando herramientas nativas del SO. Funciona en macOS, Linux y Windows.

Parámetro

Tipo

Requerido

Descripción

mode

enum

fullscreen, window o region

windowId

number

ID de ventana para el modo ventana

windowName

string

Nombre de la aplicación (ej. "Safari", "Firefox") para el modo ventana

region

object

{ x, y, width, height } para el modo región

display

number

Número de pantalla para configuraciones multipantalla

includeCursor

boolean

Incluir el cursor del ratón en la captura

format

enum

png (predeterminado) o jpg

delay

number

Retraso de captura en segundos (0–10)

outputPath

string

Ruta del archivo de salida (predeterminado: ~/Documents/screenshots)

Compatibilidad de funciones multiplataforma

Función

macOS

Linux

Windows

Pantalla completa

Región

✅ (maim, scrot, grim, import)

Ventana por nombre

⚠️ X11 + xdotool

⚠️ mejor esfuerzo

Ventana por ID

✅ solo X11

⚠️ HWND

Multipantalla

⚠️ depende de la herramienta

Incluir cursor

⚠️ depende de la herramienta

⚠️

Retraso

Ejemplo de prompt:

Toma una captura de pantalla del sistema de la ventana de Safari

Configuración

Variables de entorno

Variable

Predeterminado

Descripción

SCREENSHOT_OUTPUT_DIR

Documents/screenshots

Directorio de salida predeterminado relativo a ~

ALLOW_LOCAL

false

Establecer en true para permitir capturas de pantalla de localhost/127.x.x.x/[::1] (útil para servidores de desarrollo locales)

Directorios de salida

Las capturas de pantalla se guardan en ~/Documents/screenshots de forma predeterminada (configurable mediante SCREENSHOT_OUTPUT_DIR). Las rutas de salida personalizadas deben resolverse en uno de estos directorios permitidos:

Directorio

Descripción

~/Documents/screenshots

Ubicación de salida predeterminada (configurable)

~/Desktop/Screenshots

Ubicación predeterminada original

~/Downloads

Carpeta de descargas del usuario

~/Documents

Carpeta de documentos del usuario

/tmp

Directorio temporal del sistema

Seguridad

Este servidor implementa múltiples capas de refuerzo de seguridad:

ID

Amenaza

Mitigación

SEC-001

SSRF / Rebinding de DNS

URLs validadas contra rangos de IP bloqueados; DNS resuelto antes de la solicitud con fijación de IP mediante --host-resolver-rules; redirecciones de navegación revalidadas

SEC-003

Inyección de comandos

Todos los subprocesos utilizan execFile (sin shell); nombres de aplicaciones validados contra SAFE_APP_NAME_PATTERN

SEC-004

Recorrido de rutas

Rutas de salida validadas con resolución de enlaces simbólicos fs.realpath(); restringido a directorios permitidos

SEC-005

Denegación de servicio

Instancias concurrentes de Puppeteer limitadas a 3 mediante semáforo

Para obtener todos los detalles, consulte docs/security.md.

Desarrollo

Scripts

Comando

Descripción

npm run build

Compilar TypeScript a build/

npm run watch

Recompilar ante cambios de archivos

npm test

Pruebas unitarias (rápidas, totalmente simuladas)

npm run test:integration

Pruebas de integración (DNS/sistema de archivos real)

npm run test:e2e

Pruebas E2E (Puppeteer/herramientas nativas reales)

npm run test:all

Todos los niveles de prueba juntos

npm run test:linux

E2E de Linux mediante Docker (requiere Docker)

npm run test:watch

Ejecutar pruebas en modo watch

npm run test:coverage

Ejecutar pruebas con informe de cobertura

npm run lint

Analizar código fuente con ESLint

npm run inspector

Iniciar el Inspector MCP para depuración

Estructura del proyecto

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)

Pruebas

Las pruebas utilizan Vitest en tres niveles:

  • Unitarias (npm test) — Inyección de dependencias completa, sin E/S real. Bucle de retroalimentación rápido.

  • Integración (npm run test:integration) — Resolución de DNS real, sistema de archivos real con directorios temporales, Puppeteer real contra un servidor HTTP local.

  • E2E (npm run test:e2e) — Herramientas de captura de pantalla nativas reales. Las pruebas de macOS se ejecutan de forma nativa; las pruebas de Linux se ejecutan en Docker mediante npm run test:linux.

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

Depuración con el Inspector MCP

npm run inspector

Esto inicia el Inspector MCP conectado a su servidor compilado, lo que le permite invocar herramientas de forma interactiva.

Licencia

Apache-2.0 — Copyright 2026 Seth Bang

Install Server
A
license - permissive license
B
quality
-
maintenance - not tested

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