third-eye-mcp
Servidor MCP de captura de pantalla con prioridad en la privacidad para agentes de codificación de IA. Permite que Claude, Cursor o cualquier IA compatible con MCP vea tu pantalla con control total.
Documentación
Third Eye MCP (Python)
Un servidor MCP de captura y grabación de pantalla gratuito e ilimitado para Python. Capture capturas de pantalla y grabe la actividad de la pantalla sin límites diarios: incluye mensajes promocionales en los metadatos.
Características
- Capturas ilimitadas: Sin límites ni restricciones diarias
- Soporte multi-pantalla: Capture cualquier monitor conectado
- Captura de región: Capture áreas específicas de la pantalla
- Grabación de pantalla: Captura de fotogramas clave basada en cambios con salida en cuadrícula
- Grabación programada: Captura en ráfagas en momentos específicos (hasta 10 min)
- Redimensionado automático: Ancho máximo configurable para imágenes optimizadas
- Retardo de captura: Retardo opcional antes de la captura
- Última captura: Recupere la captura de pantalla más reciente
Instalación
pip install third-eye-mcp
O instale desde el código fuente:
git clone https://github.com/Osseni94/third-eye-mcp.git
cd third-eye-mcp
pip install -e .
Uso
Con Claude Desktop
Agregue a su configuración de Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"third-eye": {
"command": "python",
"args": ["-m", "third_eye_mcp"]
}
}
}
Con MCP Inspector
npx @modelcontextprotocol/inspector python -m third_eye_mcp
Herramientas disponibles
screen.list_displays
Lista todas las pantallas/monitores disponibles.
Entrada: Ninguna
Salida:
{
"displays": [
{
"index": 0,
"name": "Display 1",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"isPrimary": true
}
]
}
screen.capture
Capture una captura de pantalla completa de la pantalla.
Entrada:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| displayIndex | integer | 0 | Pantalla a capturar (basado en 0) |
| maxWidth | integer | 1920 | Ancho máximo para redimensionar |
| delay | number | 0 | Retardo en segundos |
| instant | boolean | false | Omitir retardo |
Salida: Imagen PNG en Base64 + JSON de metadatos con campo patrocinado
screen.capture_region
Capture una región específica de la pantalla.
Entrada:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| x | integer | Sí | Coordenada X |
| y | integer | Sí | Coordenada Y |
| width | integer | Sí | Ancho de la región |
| height | integer | Sí | Alto de la región |
| maxWidth | integer | No | Ancho máximo para redimensionar (predeterminado: 1920) |
| delay | number | No | Retardo en segundos (predeterminado: 0) |
| instant | boolean | No | Omitir retardo (predeterminado: false) |
Salida: Imagen PNG en Base64 + JSON de metadatos con campo patrocinado
screen.latest
Obtenga la captura de pantalla más reciente.
Entrada: Ninguna
Salida: Última imagen capturada + JSON de metadatos con campo patrocinado
Herramientas de grabación de pantalla
screen.record
Grabe la pantalla con captura de fotogramas clave basada en cambios. Capture fotogramas a intervalos, descarte casi duplicados y devuelva una imagen de cuadrícula compacta (hoja de contactos) con marcas de tiempo.
Entrada:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| duration | integer | 30 | Duración de la grabación en segundos (1-120) |
| interval | number | 1.0 | Intervalo de captura en segundos (0.25-10) |
| displayIndex | integer | 0 | Pantalla a grabar (basado en 0) |
| maxWidth | integer | 1280 | Ancho máximo para fotogramas completos (320-1920) |
| changeThreshold | number | 2.0 | % mínimo de cambio para conservar el fotograma (0-100) |
| maxFrames | integer | 30 | Máximo de fotogramas a conservar (5-100) |
| thumbnailWidth | integer | 320 | Ancho de miniatura para la cuadrícula (160-640) |
Salida: Imagen de cuadrícula (hoja de contactos) + JSON de metadatos + resúmenes de fotogramas
Ejemplo de respuesta:
{
"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
Grabe la pantalla con ráfagas de capturas programadas en momentos específicos. Útil para grabaciones más largas donde desea capturar momentos específicos como el inicio, el medio y el final de un proceso.
Entrada:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| totalDuration | integer | 60 | Duración total a monitorear (10-600 seg) |
| snapshots | array | requerido | Lista de configuraciones de ráfagas de capturas |
| displayIndex | integer | 0 | Pantalla a grabar (basado en 0) |
| maxWidth | integer | 1280 | Ancho máximo para fotogramas completos |
| thumbnailWidth | integer | 320 | Ancho de miniatura para la cuadrícula |
Configuración de ráfaga de capturas:
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| at | number | requerido | Cuándo iniciar la ráfaga (segundos desde el inicio) |
| count | integer | 3 | Número de capturas en la ráfaga (1-20) |
| interval | number | 1.0 | Tiempo entre capturas (0.25-10) |
Ejemplo: grabación de 4 minutos con ráfagas:
{
"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
Recupere un fotograma de resolución completa de una grabación. Use el recordingId de la respuesta de screen.record o screen.scheduled_record.
Entrada:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| recordingId | string | Sí | ID de grabación del cual recuperar el fotograma |
| frameIndex | integer | No | Índice del fotograma a recuperar (basado en 0) |
| timestamp | number | No | Marca de tiempo para encontrar el fotograma más cercano |
Salida: Imagen de resolución completa + metadatos del fotograma
Nota: Las grabaciones se almacenan en memoria durante 5 minutos (máximo 5 grabaciones). Use screen.get_frame para recuperar imágenes de resolución completa cuando necesite leer texto o ver detalles.
Formato de respuesta
Todas las herramientas de captura devuelven metadatos que incluyen un mensaje patrocinado:
{
"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"
}
Versión sin anuncios
¿Desea eliminar los anuncios? Obtenga la versión TypeScript con funciones premium en grandnasser.com/third-eye.
Licencia
Licencia MIT: consulte el archivo LICENSE para obtener más detalles.
Autor
Kaossara Osseni - grandnasser.com