Screenshot MCP Server

Capture screenshots do Windows a partir de assistentes de IA no WSL, com opções para monitores ou janelas específicas.

Documentação

Este repositório está em modo Somente Leitura e foi substituído

Use o repositório WSLSnapIt-MCP em vez deste (funciona melhor, com mais recursos!)

Screenshot MCP Server

Um servidor Model Context Protocol (MCP) que permite que assistentes de IA executados no WSL capturem capturas de tela do Windows com recursos avançados, como seleção de monitor e captura de janelas específicas.

Recursos

  • 📸 Captura de Tela Completa - Captura todos os monitores (comportamento padrão)
  • 🖥️ Seleção de Monitor - Captura monitores específicos (primário, 1, 2, etc.)
  • 🪟 Captura de Janela - Captura janelas específicas por correspondência de título com reconhecimento de DPI
  • 🚀 Captura por Processo - Captura janelas por nome do processo (ex.: notepad.exe)
  • 📂 Locais de Salvamento Personalizados - Salva em qualquer pasta usando caminhos WSL ou Windows
  • 🔄 Conversão Automática de Caminhos - Converte caminhos WSL para caminhos Windows
  • 📁 Armazenamento Organizado - Capturas de tela salvas em workspace/screenshots/ por padrão
  • 🎯 Reconhecimento de DPI - Escala adequada para monitores de alta densidade de pixels
  • 🖼️ Captura Completa de Janela - Inclui sombras e bordas da janela sem cortes

Pré-requisitos

  • Windows com WSL (Subsistema Windows para Linux)
  • Node.js instalado no WSL
  • Claude Desktop ou Claude Code com suporte a MCP

Instalação

  1. Clone este repositório:
git clone https://github.com/peterparker57/screenshot-mcp.git
cd screenshot-mcp
  1. Instale as dependências:
npm install
# or with bun:
bun install
  1. Adicione à sua configuração do Claude (~/.claude.json ou ~/.claude/claude_desktop_config.json):
{
  "mcpServers": {
    "screenshot": {
      "command": "node",
      "args": [
        "/path/to/screenshot-mcp/index.js"
      ],
      "disabled": false,
      "alwaysAllow": [
        "take_screenshot"
      ]
    }
  }
}
  1. Reinicie o Claude Desktop/Code

Uso

Após a instalação, você pode pedir ao Claude para tirar capturas de tela:

Uso Básico

Take a screenshot

Capturar Monitor Específico

Take a screenshot of monitor 1
Take a screenshot of the primary monitor

Capturar Janela Específica por Título

Take a screenshot of the "Chrome" window
Take a screenshot of window titled "Visual Studio Code"

Capturar Janela Específica por Nome do Processo

Take a screenshot of notepad.exe
Take a screenshot of the chrome process
Take a screenshot of process "Code"

Nome de Arquivo Personalizado

Take a screenshot and save it as "test.png"

Salvar em Pasta Personalizada

Take a screenshot and save it to /mnt/c/Users/username/Pictures/
Take a screenshot and save to C:\Users\username\Desktop\
Take a screenshot of monitor 1 and save to folder "../docs/images"

Referência da API

O servidor MCP fornece uma única ferramenta:

take_screenshot

Parâmetros:

  • filename (opcional): Nome do arquivo de captura de tela (padrão: "screenshot.png")
  • monitor (opcional): Qual monitor capturar
    • "all" - Captura todos os monitores (padrão)
    • "primary" - Captura apenas o monitor primário
    • 1, 2, etc. - Captura monitor específico por índice
  • windowTitle (opcional): Captura uma janela específica pelo título (correspondência parcial suportada)
  • processName (opcional): Captura uma janela específica pelo nome do processo (ex.: "notepad.exe" ou "notepad")
  • folder (opcional): Caminho de pasta personalizado para salvar a captura de tela
    • Suporta caminhos WSL: /mnt/c/Users/...
    • Suporta caminhos Windows: C:\Users\...
    • Suporta caminhos relativos: ../images
    • Padrão: workspace/screenshots/

Retornos:

  • Mensagem de sucesso com o caminho do arquivo
  • Mensagem de erro se a captura falhar

Observações:

  • Se ambos windowTitle e processName forem fornecidos, windowTitle tem precedência
  • Pastas personalizadas são criadas automaticamente se não existirem
  • Os formatos de caminho são convertidos automaticamente entre WSL e Windows conforme necessário

Detalhes Técnicos

Arquitetura

  • Servidor MCP: Node.js com @modelcontextprotocol/sdk
  • Captura de Tela: PowerShell com .NET Windows Forms
  • Comunicação: Executa comandos PowerShell a partir do WSL
  • Codificação: Codificação Base64 para execução confiável de comandos

Recursos de Captura de Janela

  • Reconhecimento de DPI: Lida automaticamente com monitores de alta densidade de pixels para capturas nítidas
  • Preenchimento de Janela: Adiciona 10px de preenchimento para capturar sombras e bordas da janela
  • Aguardar Renderização: Aguarda 200ms após focar a janela para garantir renderização completa
  • Verificação de Limites: Evita coordenadas negativas quando as janelas estão próximas às bordas da tela
  • Correspondência de Processo: Correspondência inteligente de nomes de processo (remove a extensão .exe automaticamente)

Como Funciona

  1. O servidor MCP recebe a solicitação de captura de tela do Claude
  2. Determina o local de salvamento (pasta personalizada ou padrão)
  3. Converte caminhos entre formatos WSL e Windows conforme necessário
  4. Constrói o script PowerShell apropriado com base nos parâmetros
  5. Codifica o script em base64 para evitar problemas de escape
  6. Executa o comando PowerShell a partir do WSL
  7. O PowerShell captura a tela usando APIs do Windows Forms
  8. A imagem é salva no local especificado

Tratamento de Erros

  • Filtra a saída CLIXML do PowerShell (logs detalhados, não erros)
  • Valida índices de monitor
  • Fornece mensagens de erro claras para janelas ou processos ausentes
  • Lista janelas disponíveis quando a captura falha
  • Cria diretórios automaticamente se necessário
  • Lida com formatos de caminho WSL e Windows

Solução de Problemas

Pasta de capturas de tela não criada

O servidor cria pastas automaticamente conforme necessário. Certifique-se de ter permissões de escrita no local de destino.

Erros de execução do PowerShell

Verifique sua política de execução do PowerShell:

Get-ExecutionPolicy

Erros de janela não encontrada

  • Certifique-se de que a janela está aberta e não minimizada
  • A correspondência de título não diferencia maiúsculas de minúsculas e suporta correspondências parciais
  • Tente usar um título de janela mais específico
  • Ao pesquisar por processo, a ferramenta listará todas as janelas disponíveis para ajudar a identificar a correta

Captura de janela cortada

A versão mais recente inclui preenchimento automático e reconhecimento de DPI. Se ainda houver cortes:

  • Certifique-se de estar usando a versão mais recente
  • Tente maximizar a janela antes da captura
  • Verifique se a janela tem renderização incomum (alguns aplicativos usam bordas personalizadas)

Problemas de conversão de caminho

O servidor converte automaticamente entre formatos de caminho WSL e Windows:

  • Caminhos WSL como /mnt/c/... são convertidos para C:\... para o PowerShell
  • Caminhos Windows como C:\... são convertidos para /mnt/c/... para verificação de arquivos
  • Certifique-se de que seus caminhos sejam acessíveis tanto pelo WSL quanto pelo Windows

Atualizações Recentes

v1.2.0

  • Adicionado suporte a pasta personalizada com o parâmetro folder
  • Suporta caminhos WSL (/mnt/...) e caminhos Windows (C:\...)
  • Conversão automática de caminhos entre formatos WSL e Windows
  • Cria diretórios personalizados automaticamente se não existirem
  • Mantém compatibilidade retroativa com a pasta padrão de capturas de tela

v1.1.0

  • Adicionado suporte a captura por nome de processo
  • Agora é possível capturar janelas por nome do processo (ex.: "notepad.exe")
  • Tratamento inteligente da extensão .exe
  • Mensagens de erro aprimoradas mostrando janelas disponíveis

v1.0.1

  • Corrigidos problemas de corte na captura de janelas
  • Adicionado reconhecimento de DPI para monitores de alta densidade de pixels
  • Adicionado preenchimento para capturar sombras da janela
  • Melhorado o tempo de espera de renderização da janela
  • Adicionada verificação de limites para casos extremos

Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes

Agradecimentos