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 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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| displayIndex | integer | 0 | Display para capturar (baseado em 0) |
| maxWidth | integer | 1920 | Largura máxima para redimensionamento |
| delay | number | 0 | Atraso em segundos |
| instant | boolean | false | Pular 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| x | integer | Sim | Coordenada X |
| y | integer | Sim | Coordenada Y |
| width | integer | Sim | Largura da região |
| height | integer | Sim | Altura da região |
| maxWidth | integer | Não | Largura máxima para redimensionamento (padrão: 1920) |
| delay | number | Não | Atraso em segundos (padrão: 0) |
| instant | boolean | Não | Pular 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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| duration | integer | 30 | Duração da gravação em segundos (1-120) |
| interval | number | 1.0 | Intervalo de captura em segundos (0.25-10) |
| displayIndex | integer | 0 | Display para gravar (baseado em 0) |
| maxWidth | integer | 1280 | Largura máxima para quadros completos (320-1920) |
| changeThreshold | number | 2.0 | % mínima de mudança para manter o quadro (0-100) |
| maxFrames | integer | 30 | Máximo de quadros para manter (5-100) |
| thumbnailWidth | integer | 320 | Largura 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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| totalDuration | integer | 60 | Duração total para monitorar (10-600 seg) |
| snapshots | array | obrigatório | Lista de configurações de rajada de snapshots |
| displayIndex | integer | 0 | Display para gravar (baseado em 0) |
| maxWidth | integer | 1280 | Largura máxima para quadros completos |
| thumbnailWidth | integer | 320 | Largura da miniatura para a grade |
Configuração de Rajada de Snapshots:
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
| at | number | obrigatório | Quando iniciar a rajada (segundos desde o início) |
| count | integer | 3 | Número de snapshots na rajada (1-20) |
| interval | number | 1.0 | Tempo 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| recordingId | string | Sim | ID da gravação para recuperar o quadro |
| frameIndex | integer | Não | Índice do quadro para recuperar (baseado em 0) |
| timestamp | number | Não | Carimbo 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