CCPhoto
CCPhoto
Conecta la cámara de tu teléfono a Claude Code a través de la red local.
CCPhoto es un servidor MCP que te permite hacer fotos con tu teléfono y enviarlas directamente a Claude Code. Apunta tu teléfono a una placa de circuito, una pizarra, una etiqueta... lo que sea, y Claude lo ve al instante. No se requiere instalar ninguna aplicación; la cámara del navegador de tu teléfono hace todo el trabajo.
+----------+ WiFi +-----------+ MCP +-------------+
| Phone | photos, voice, | CCPhoto | image/text | Claude |
| Camera | mode switches | Server | data | Code |
| + Mic | <--------------- | (local) | <--------------- | |
+----------+ TTS, guidance +-----------+ send_to_phone +-------------+Inicio rápido
npx ccphoto --setup # One-time: register CCPhoto as an MCP serverLuego, en Claude Code, solo di "toma una foto" — Claude se encarga del resto.
Related MCP server: phone-mcp
Cómo funciona
Claude llama a la herramienta MCP
capture_photo.Aparece un código QR en tu terminal.
Escanéalo con tu teléfono: se abre una página de cámara en tu navegador.
Toma una foto: Claude recibe la imagen directamente.
No es necesario instalar ninguna aplicación. La cámara nativa del teléfono se accede
mediante el atributo HTML <input capture>.
Modo siempre activo
El servidor se inicia en la primera llamada a capture_photo y permanece en ejecución
durante toda la sesión. Tu teléfono permanece conectado: no es necesario volver a
escanear el código QR. Toma todas las fotos que quieras y recupera cualquiera de ellas
pidiéndoselo a Claude.
Notificaciones de solicitud de foto
Cuando tu teléfono ya está conectado y Claude vuelve a llamar a capture_photo, el
teléfono recibe una notificación push SSE. El botón de captura parpadea para indicarte
que Claude está esperando una nueva foto. Solo toca y dispara.
Mensajería bidireccional
Claude puede enviar contenido a tu teléfono mediante la herramienta send_to_phone.
El texto, el markdown y las imágenes aparecen en un panel plegable en el teléfono. Esto
convierte tu teléfono en una pantalla de referencia: Claude puede mostrar instrucciones
de cableado, diagramas de pines o fragmentos de código mientras trabajas con las dos
manos.
Anotaciones de fotos
Después de tomar una foto, aparece una pantalla de anotación donde puedes dibujar sobre la imagen antes de enviarla. Usa los rotuladores de colores (rojo, azul, verde, blanco) para rodear componentes, dibujar flechas o resaltar áreas de interés. Toca "Enviar" para subir la imagen anotada, o "Omitir" para enviar la foto original sin anotaciones.
Asistente de vídeo en directo
Inicia una transmisión de vídeo semi en tiempo real desde la cámara de tu teléfono. Claude observa la transmisión en directo (un fotograma cada 3 segundos) y proporciona orientación en tiempo real: apunta la cámara hacia donde Claude te pida y recibe instrucciones en la pantalla de tu teléfono.
Requiere HTTPS (para el acceso a la cámara). En Android Chrome, acepta la advertencia de certificado una vez. Actualmente solo Android/Chrome; el soporte para iOS está planificado.
Interacción por voz
Toca el botón de micrófono en tu teléfono para hablar con Claude. El habla se transcribe
con la API de reconocimiento de voz integrada en el navegador y se envía como texto.
Claude puede responder con audio hablado usando send_to_phone con speak: true: el
teléfono lee la respuesta en voz alta mediante texto a voz.
Esto permite flujos de trabajo manos libres: haz una pregunta mientras sostienes el soldador y escucha la respuesta sin mirar una pantalla. El botón de micrófono solo aparece en los navegadores que admiten reconocimiento de voz (Android Chrome).
UI generativa
Claude puede generar una UI enriquecida y contextual en tu teléfono basándose en lo que ve. Apunta la cámara a un producto, componente, receta o lo que sea: Claude lo analiza y envía una interfaz interactiva personalizada a la pantalla de tu teléfono.
12 tipos de componentes: Card, Text, Image, Metric, MetricGrid, Checklist, StepByStep, Alert, Table, Timer, Badge y Divider. Claude los combina en diseños contextuales: una tarjeta de cuidado de plantas con lista de comprobación de riego, una tabla de componentes de circuitos con diagramas de pines o una guía de reparación paso a paso con temporizadores.
Usa send_to_phone con el parámetro ui_spec para generar una UI personalizada.
Instalación
npx (recomendado, sin instalación)
npx ccphoto --setupInstalación global
npm install -g ccphoto
ccphoto --setupDesde el código fuente
git clone https://github.com/stepankaiser/ccphoto.git
cd ccphoto
npm install
npm run build
node dist/index.js --setupSi prefieres registrar el servidor MCP manualmente en lugar de usar --setup:
claude mcp add ccphoto -- npx ccphoto --mcpReferencia de herramientas MCP
Tool | Description | Parameters |
| Inicia el servidor y muestra un código QR. Si ya hay un teléfono conectado, recibe una notificación push en su lugar. | -- |
| Bloquea hasta que se suba una foto o expire el tiempo de espera. Llama a esta función inmediatamente después de |
|
| Devuelve la foto más reciente, o una foto específica por nombre de archivo. |
|
| Lista todas las fotos capturadas con nombres de archivo, marcas de tiempo y tamaños. | -- |
| Envía texto, imágenes o UI generativa enriquecida a la pantalla del teléfono. El teléfono se convierte en una pantalla de referencia para instrucciones, diagramas o pines. |
|
| Inicia una transmisión de vídeo en directo desde la cámara del teléfono. Genera un certificado HTTPS y devuelve el código QR. | -- |
| Obtiene el último fotograma de la transmisión de cámara en directo con la marca de tiempo de actualización. | -- |
Modo CLI independiente
CCPhoto también puede ejecutarse de forma independiente, sin Claude Code:
npx ccphoto # Start with defaults
npx ccphoto --port 4000 --output-dir ./photos # Custom port and directorySe imprime un código QR en la terminal. Escanéalo, toma fotos y se guardan en el disco. El servidor permanece en ejecución para múltiples capturas.
Opciones de CLI
Opción | Descripción | Valor predeterminado |
| Registra CCPhoto como servidor MCP en Claude Code | -- |
| Se ejecuta como servidor MCP (usado internamente por Claude Code) | -- |
| Puerto del servidor HTTP |
|
| Directorio donde se guardan las fotos |
|
| Muestra la ayuda | -- |
Configuración
Variable de entorno | Descripción | Valor predeterminado |
| Sobrescribe el directorio de almacenamiento de fotos predeterminado |
|
Seguridad
Token de sesión — Se genera un token hexadecimal criptográficamente aleatorio de 32 caracteres para cada sesión del servidor. Cada solicitud debe incluir el token.
Comparación segura frente a temporización — La validación del token usa
crypto.timingSafeEqualpara evitar ataques de temporización.Solo red local — El servidor se vincula a la IP de tu red local. Ningún dato sale de tu red.
Sin servicios externos — Las fotos se transfieren directamente entre tu teléfono y el servidor por HTTP en tu LAN. Nada se sube a la nube.
Solución de problemas
No se pudo detectar la IP de la red local
Asegúrate de que tu ordenador esté conectado a WiFi (no solo a Ethernet en algunas configuraciones). CCPhoto necesita una dirección IP de LAN a la que tu teléfono pueda acceder.
El código QR no se escanea
Intenta aumentar el tamaño de fuente de la terminal o reducir el ancho de la terminal para que el código QR se represente con una resolución escaneable. También puedes copiar la URL impresa debajo del código QR y escribirla manualmente en el navegador de tu teléfono.
La cámara del teléfono no se abre
La función de captura de cámara requiere HTTPS en algunos navegadores, pero la mayoría de los navegadores móviles lo permiten en HTTP simple para direcciones de red local. Si tu navegador bloquea el acceso a la cámara, prueba con Safari (iOS) o Chrome (Android).
La subida falla
Verifica que tu teléfono y tu ordenador estén en la misma red WiFi. Las redes corporativas con aislamiento de cliente pueden bloquear el tráfico entre dispositivos. Prueba con un punto de acceso personal o una red doméstica.
Desarrollo
npm install # Install dependencies
npm run build # Compile TypeScript
npm run dev # Watch mode (recompile on change)
npm test # Run the test suite (94 tests)Los tests usan el ejecutor de pruebas integrado de Node.js y requieren la dependencia
de desarrollo tsx para la ejecución de TypeScript.
Estructura del proyecto:
src/
index.ts CLI entry point and arg parsing
mcp.ts MCP server with tool definitions
server.ts HTTP server, SSE, upload handling
mobile-page.ts Self-contained HTML for the phone camera page
storage.ts Photo file management
network.ts Local IP detection
token.ts Session token generation and validation
types.ts Shared TypeScript interfacesHoja de ruta
Dominio real + certificados de Let's Encrypt — Usa un dominio registrado con certificados válidos para eliminar las advertencias del navegador en cualquier dispositivo, incluido iOS Safari.
Soporte de vídeo en directo en iOS — La transmisión de vídeo en directo funciona actualmente en Android/Chrome. El soporte para iOS Safari requiere certificados de confianza.
Superposiciones de RA en la transmisión de cámara — Dibuja anotaciones directamente en la vista de cámara en directo en tiempo real.
Soporte multicámara — Conecta varios teléfonos simultáneamente para diferentes ángulos de visión.
Transmisión WebRTC — Reemplaza la consulta periódica de fotogramas por HTTP con WebRTC cuando mejore la latencia del procesamiento de visión de Claude.
Contribuciones
Las contribuciones son bienvenidas.
Haz un fork del repositorio
Crea una rama de funcionalidad (
git checkout -b my-feature)Haz tus cambios
Ejecuta
npm testpara verificar que nada esté rotoConfirma tus cambios (
git commit -m "Add my feature")Sube los cambios a tu rama (
git push origin my-feature)Abre un pull request
Al informar de un error, incluye tu versión de Node.js, tu sistema operativo y los pasos para reproducir el problema.
Licencia
This server cannot be deployed
Maintenance
Related MCP Connectors
Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Run Instagram automation on your own real phones from Claude, Cursor or any AI agent.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables Claude Code sessions on a PC to access iPhone data such as photos, video, location, contacts, calendar, and clipboard over Tailscale, and supports plugin-based browser automations for logged-in services.MIT
- AlicenseNot gradedqualityBmaintenanceEnables desktop agents such as Claude Code and Codex to control an Android phone as a long-lived action endpoint, pairing over outbound WebSocket and exposing phone capabilities as MCP tools with local pause and revocation.MIT
- AlicenseNot gradedqualityBmaintenanceEnables voice-driven control of coding agents via Claude on your phone, allowing status checks, stand-ups, sending prompts, and receiving push notifications when agents finish or need decisions.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude or any MCP agent to see and operate a real Android phone over adb, with fast screen reads, tap/type/swipe actions, app launching, deep links, and brand-aware setup guidance, all without admin rights or an Android SDK.MIT