third-eye-mcp

Servidor MCP de captura de tela com foco em privacidade para agentes de codificação de IA. Permita que Claude, Cursor ou qualquer IA compatível com MCP veja sua tela com controle total.

Documentação

Third Eye Logo

PyPI Python Versions Downloads License

Third Eye MCP (Python)

Um servidor MCP gratuito e ilimitado de captura de tela e gravação para Python. Capture screenshots e grave a atividade da tela sem limites diários - inclui mensagens promocionais nos metadados.

Recursos

  • Capturas Ilimitadas: Sem limites diários ou restrições
  • Suporte a Múltiplos Monitores: Capture qualquer monitor conectado
  • Captura de Região: Capture áreas específicas da tela
  • Gravação de Tela: Captura de keyframes baseada em mudanças com saída em grade
  • Gravação Agendada: Captura em rajadas em horários específicos (até 10 min)
  • Redimensionamento Automático: Largura máxima configurável para imagens otimizadas
  • Atraso de Captura: Atraso opcional antes da captura
  • Última Captura: Recupere o screenshot mais recente

Instalação

pip install third-eye-mcp

Ou instale a partir do código-fonte:

git clone https://github.com/Osseni94/third-eye-mcp.git
cd third-eye-mcp
pip install -e .

Uso

Com o Claude Desktop

Adicione à sua configuração do Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "third-eye": {
      "command": "python",
      "args": ["-m", "third_eye_mcp"]
    }
  }
}

Com o MCP Inspector

npx @modelcontextprotocol/inspector python -m third_eye_mcp

Ferramentas Disponíveis

screen.list_displays

Lista todos os displays/monitores disponíveis.

Entrada: Nenhuma

Saída:

{
  "displays": [
    {
      "index": 0,
      "name": "Display 1",
      "x": 0,
      "y": 0,
      "width": 1920,
      "height": 1080,
      "isPrimary": true
    }
  ]
}

screen.capture

Captura um screenshot de tela cheia.

Entrada:

ParâmetroTipoPadrãoDescrição
displayIndexinteger0Display para capturar (baseado em 0)
maxWidthinteger1920Largura máxima para redimensionamento
delaynumber0Atraso em segundos
instantbooleanfalsePular atraso

Saída: Imagem PNG em Base64 + metadados JSON com campo patrocinado

screen.capture_region

Captura uma região específica da tela.

Entrada:

ParâmetroTipoObrigatórioDescrição
xintegerSimCoordenada X
yintegerSimCoordenada Y
widthintegerSimLargura da região
heightintegerSimAltura da região
maxWidthintegerNãoLargura máxima para redimensionamento (padrão: 1920)
delaynumberNãoAtraso em segundos (padrão: 0)
instantbooleanNãoPular atraso (padrão: false)

Saída: Imagem PNG em Base64 + metadados JSON com campo patrocinado

screen.latest

Obtém o screenshot capturado mais recentemente.

Entrada: Nenhuma

Saída: Última imagem capturada + metadados JSON com campo patrocinado


Ferramentas de Gravação de Tela

screen.record

Grava a tela com captura de keyframes baseada em mudanças. Captura quadros em intervalos, descarta quase-duplicados e retorna uma imagem em grade compacta (folha de contato) com carimbos de data/hora.

Entrada:

ParâmetroTipoPadrãoDescrição
durationinteger30Duração da gravação em segundos (1-120)
intervalnumber1.0Intervalo de captura em segundos (0.25-10)
displayIndexinteger0Display para gravar (baseado em 0)
maxWidthinteger1280Largura máxima para quadros completos (320-1920)
changeThresholdnumber2.0% mínima de mudança para manter o quadro (0-100)
maxFramesinteger30Máximo de quadros para manter (5-100)
thumbnailWidthinteger320Largura da miniatura para a grade (160-640)

Saída: Imagem em grade (folha de contato) + metadados JSON + resumos dos quadros

Exemplo de Resposta:

{
  "metadata": {
    "recordingId": "abc12345",
    "duration": 30.5,
    "framesCaptured": 31,
    "framesKept": 12,
    "framesDiscarded": 19,
    "sponsored": "..."
  },
  "frames": [
    {"index": 0, "timestamp": 0.0, "changeScore": 100.0},
    {"index": 1, "timestamp": 2.0, "changeScore": 15.3}
  ]
}

screen.scheduled_record

Grava a tela com rajadas de snapshots agendadas em horários específicos. Útil para gravações mais longas onde você deseja capturar momentos específicos como início, meio e fim de um processo.

Entrada:

ParâmetroTipoPadrãoDescrição
totalDurationinteger60Duração total para monitorar (10-600 seg)
snapshotsarrayobrigatórioLista de configurações de rajada de snapshots
displayIndexinteger0Display para gravar (baseado em 0)
maxWidthinteger1280Largura máxima para quadros completos
thumbnailWidthinteger320Largura da miniatura para a grade

Configuração de Rajada de Snapshots:

PropriedadeTipoPadrãoDescrição
atnumberobrigatórioQuando iniciar a rajada (segundos desde o início)
countinteger3Número de snapshots na rajada (1-20)
intervalnumber1.0Tempo entre snapshots (0.25-10)

Exemplo - Gravação de 4 minutos com rajadas:

{
  "totalDuration": 240,
  "snapshots": [
    {"at": 0, "count": 3, "interval": 1.0},
    {"at": 120, "count": 5, "interval": 0.5},
    {"at": 230, "count": 3, "interval": 1.0}
  ]
}

screen.get_frame

Recupera um quadro em resolução total de uma gravação. Use o recordingId da resposta de screen.record ou screen.scheduled_record.

Entrada:

ParâmetroTipoObrigatórioDescrição
recordingIdstringSimID da gravação para recuperar o quadro
frameIndexintegerNãoÍndice do quadro para recuperar (baseado em 0)
timestampnumberNãoCarimbo de data/hora para encontrar o quadro mais próximo

Saída: Imagem em resolução total + metadados do quadro

Nota: As gravações são armazenadas em memória por 5 minutos (máx. 5 gravações). Use screen.get_frame para recuperar imagens em resolução total quando precisar ler texto ou ver detalhes.


Formato de Resposta

Todas as ferramentas de captura retornam metadados incluindo uma mensagem patrocinada:

{
  "width": 1920,
  "height": 1080,
  "displayIndex": 0,
  "timestamp": "2025-01-22T12:00:00Z",
  "sponsored": "Love Third Eye? Get the ad-free TypeScript version: grandnasser.com/third-eye"
}

Versão Sem Anúncios

Quer remover anúncios? Obtenha a versão TypeScript com recursos premium em grandnasser.com/third-eye.

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes.

Autor

Kaossara Osseni - grandnasser.com