Windows Screenshots

Un servidor del Model Context Protocol (MCP) que proporciona funcionalidad de captura de pantalla en sistemas Windows.

Documentación

MCP Windows Screenshots

Un servidor de Model Context Protocol (MCP) que proporciona funcionalidad de captura de pantalla en sistemas Windows.

Características

  • Capturas de pantalla completas: Captura monitores completos o todos los monitores
  • Capturas de región: Selección interactiva de área para capturas específicas
  • Gestión de capturas: Lista y gestiona las capturas de pantalla realizadas
  • Inserción de imágenes: Inserción opcional de imágenes en base64 en las respuestas MCP
  • Soporte multi-monitor: Maneja configuraciones de múltiples monitores

Requisitos previos

  • Sistema operativo Windows (actualmente solo Windows)
  • Node.js >= 18.0.0
  • Ejecutable auxiliar: Un ejecutable de Windows (RegionSnip.exe) que maneja la captura de pantalla real

Instalación

  1. Clona el repositorio

  2. Instala las dependencias:

npm install
  1. Compila el proyecto:
npm run build
  1. Asegúrate de que el ejecutable auxiliar exista en bin/RegionSnip.exe

Uso

Como servidor MCP

Este servidor se comunica a través de stdio y puede usarse con cualquier cliente compatible con MCP (como Claude Desktop).

Inicia el servidor:

npm start

O con el inspector MCP para depuración:

npm run inspector

Uso con npx

Puedes ejecutar este servidor MCP directamente usando npx sin instalarlo globalmente:

Cursor

Añade a tu .cursor/mcp.json:

{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Claude Desktop

Añade a tu claude_desktop_config.json:

{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Windsurf

Añade a tu ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Herramientas disponibles

takeScreenshot

Captura una captura de pantalla completa.

Parámetros:

  • mode: Siempre "full" (predeterminado)
  • allMonitors: Captura todos los monitores (predeterminado: true)
  • monitor: Número de monitor específico (opcional)
  • includeImage: Inserta la imagen como base64 en la respuesta (predeterminado: false)
  • timeoutMs: Tiempo de espera en milisegundos (predeterminado: 60000)

Ejemplo:

{
  "mode": "full",
  "allMonitors": true,
  "includeImage": true
}

Respuesta:

{
  "ok": true,
  "cancelled": false,
  "path": "screenshots/full-2024-01-14T10-53-52-000Z.png",
  "rect": {"x": 0, "y": 0, "width": 1920, "height": 1080},
  "width": 1920,
  "height": 1080,
  "mode": "full",
  "allMonitors": true,
  "monitor": null
}

takeSelectedAreaScreenshot

Permite la selección interactiva de una región de pantalla para capturar.

Parámetros:

  • mode: Siempre "region" (predeterminado)
  • includeImage: Inserta la imagen como base64 en la respuesta (predeterminado: false)
  • timeoutMs: Tiempo de espera en milisegundos (predeterminado: 120000)

Ejemplo:

{
  "includeImage": true
}

Respuesta:

{
  "ok": true,
  "cancelled": false,
  "path": "screenshots/region-2024-01-14T10-53-52-000Z.png",
  "rect": {"x": 100, "y": 100, "width": 800, "height": 600},
  "width": 800,
  "height": 600,
  "mode": "region"
}

listScreenshots

Lista las capturas de pantalla guardadas en el directorio de capturas.

Parámetros:

  • limit: Número máximo de capturas a devolver (predeterminado: 50, máximo: 200)

Ejemplo:

{
  "limit": 10
}

Respuesta:

{
  "items": [
    {
      "path": "screenshots/region-2024-01-14T10-53-52-000Z.png",
      "sizeBytes": 245760,
      "createdAt": "2024-01-14T10:53:52.000Z"
    }
  ]
}

Configuración

Ejecutable auxiliar

El servidor requiere un ejecutable auxiliar en bin/RegionSnip.exe que admita los siguientes argumentos de línea de comandos:

  • --mode full|region: Modo de captura
  • --out <path>: Ruta del archivo de salida
  • --all: Captura todos los monitores (solo modo completo)
  • --monitor <n>: Número de monitor específico (solo modo completo)

El ejecutable debe generar JSON en stdout con la siguiente estructura:

{
  "ok": true,
  "cancelled": false,
  "rect": {"x": 0, "y": 0, "width": 1920, "height": 1080},
  "width": 1920,
  "height": 1080
}

Directorio de capturas

Las capturas de pantalla se guardan automáticamente en el directorio screenshots/ en la raíz del proyecto. Este directorio se crea automáticamente si no existe.

Desarrollo

Compilación

npm run build

Pruebas

El servidor se puede probar usando el inspector MCP:

npm run inspector

Esto inicia el servidor y abre una interfaz de depuración para probar las herramientas disponibles.

Estructura del proyecto

├── src/
│   └── index.ts          # Main server implementation
├── build/                # Compiled JavaScript output
├── screenshots/          # Screenshot storage directory
├── bin/
│   └── RegionSnip.exe    # Helper executable (not included)
├── package.json
└── README.md