CCPhoto
CCPhoto
Bridge your phone camera to Claude Code over the local network.
CCPhoto는 휴대폰에서 사진을 찍어 Claude Code로 직접 보낼 수 있게 해주는 MCP 서버입니다. 휴대폰을 회로 기판, 화이트보드, 라벨 등 어떤 대상에든 비추면 Claude가 즉시 확인합니다. 앱 설치가 필요 없으며, 휴대폰 브라우저의 카메라가 모든 작업을 처리합니다.
+----------+ WiFi +-----------+ MCP +-------------+
| Phone | photos, voice, | CCPhoto | image/text | Claude |
| Camera | mode switches | Server | data | Code |
| + Mic | <--------------- | (local) | <--------------- | |
+----------+ TTS, guidance +-----------+ send_to_phone +-------------+빠른 시작
npx ccphoto --setup # One-time: register CCPhoto as an MCP server그런 다음 Claude Code에서 **"사진 찍어줘"**라고 말하기만 하면 됩니다. 나머지는 Claude가 처리합니다.
Related MCP server: Xcode MCP Server
작동 방식
Claude가
capture_photoMCP 도구를 호출합니다.터미널에 QR 코드가 나타납니다.
휴대폰으로 QR 코드를 스캔하면 브라우저에 카메라 페이지가 열립니다.
사진을 찍으면 Claude가 이미지를 직접 받습니다.
앱 설치는 필요 없습니다. 휴대폰 기본 카메라는 <input capture> HTML 속성을 통해 접근됩니다.
상시 실행 모드
서버는 첫 번째 capture_photo 호출 시 시작되어 전체 세션 동안 계속 실행됩니다. 휴대폰은 연결된 상태를 유지하므로 QR 코드를 다시 스캔할 필요가 없습니다. 원하는 만큼 사진을 찍고, Claude에게 요청하여 그중 아무 사진이나 가져올 수 있습니다.
사진 요청 알림
휴대폰이 이미 연결된 상태에서 Claude가 capture_photo를 다시 호출하면 휴대폰이 SSE 푸시 알림을 받습니다. 캡처 버튼이 깜빡이며 Claude가 새 사진을 기다리고 있음을 알려줍니다. 그냥 탭하여 촬영하면 됩니다.
양방향 메시징
Claude는 send_to_phone 도구를 사용하여 휴대폰으로 콘텐츠를 보낼 수 있습니다. 텍스트, 마크다운, 이미지가 휴대폰의 접이식 패널에 표시됩니다. 이렇게 하여 휴대폰이 참조 화면이 됩니다. Claude가 배선 지침, 핀아웃 다이어그램, 코드 조각을 표시하는 동안 양손으로 작업할 수 있습니다.
사진 주석
사진을 찍으면 전송하기 전에 이미지 위에 그림을 그릴 수 있는 주석 화면이 나타납니다. 색상 펜(빨강, 파랑, 초록, 흰색)으로 부품에 원을 그리거나, 화살표를 그리거나, 관심 영역을 강조할 수 있습니다. "전송"을 탭하면 주석이 추가된 이미지를 업로드하고, "건너뛰기"를 탭하면 주석 없이 원본 사진을 전송합니다.
라이브 비디오 어시스턴트
휴대폰 카메라에서 반실시간 비디오 스트림을 시작합니다. Claude가 라이브 피드(3초마다 1프레임)를 보면서 실시간으로 안내를 제공합니다. Claude가 요청하는 곳으로 카메라를 비추면 휴대폰 화면에서 지침을 받을 수 있습니다.
HTTPS가 필요합니다(카메라 접근용). Android Chrome에서는 인증서 경고를 한 번 수락하세요. 현재 Android/Chrome만 지원하며 iOS 지원은 계획 중입니다.
음성 상호작용
휴대폰의 마이크 버튼을 탭하여 Claude에게 말하세요. 음성은 브라우저에 내장된 Speech Recognition API를 사용하여 텍스트로 변환된 후 전송됩니다. Claude는 speak: true와 함께 send_to_phone을 사용하여 음성 오디오로 응답할 수 있습니다. 그러면 휴대폰이 Text-to-Speech를 통해 응답을 소리 내어 읽어 줍니다.
이를 통해 핸즈프리 워크플로우가 가능합니다. 인두기를 들고 있는 동안 질문하고, 화면을 보지 않고 답을 들을 수 있습니다. 마이크 버튼은 Speech Recognition을 지원하는 브라우저(Android Chrome)에서만 표시됩니다.
생성형 UI
Claude는 보고 있는 내용을 바탕으로 휴대폰에 풍부한 상황 맞춤형 UI를 생성할 수 있습니다. 제품, 부품, 레시피 등 무엇이든 카메라를 비추면 Claude가 이를 분석하고 맞춤형 대화형 인터페이스를 휴대폰 화면으로 보냅니다.
12가지 컴포넌트 유형: Card, Text, Image, Metric, MetricGrid, Checklist, StepByStep, Alert, Table, Timer, Badge, Divider. Claude는 이를 상황에 맞는 레이아웃으로 구성합니다. 예를 들어 물주기 체크리스트가 있는 식물 관리 카드, 핀 다이어그램이 있는 회로 부품 표, 타이머가 포함된 단계별 수리 가이드 등이 있습니다.
send_to_phone을 ui_spec 매개변수와 함께 사용하여 맞춤형 UI를 생성하세요.
설치
npx (권장, 설치 불필요)
npx ccphoto --setup전역 설치
npm install -g ccphoto
ccphoto --setup소스에서 설치
git clone https://github.com/stepankaiser/ccphoto.git
cd ccphoto
npm install
npm run build
node dist/index.js --setup--setup을 사용하는 대신 MCP 서버를 수동으로 등록하려면:
claude mcp add ccphoto -- npx ccphoto --mcpMCP 도구 참조
도구 | 설명 | 매개변수 |
| 서버를 시작하고 QR 코드를 표시합니다. 휴대폰이 이미 연결되어 있으면 QR 코드 대신 푸시 알림을 받습니다. | -- |
| 사진이 업로드되거나 제한 시간이 만료될 때까지 차단합니다. |
|
| 가장 최근 사진 또는 파일 이름으로 특정 사진을 반환합니다. |
|
| 캡처된 모든 사진을 파일 이름, 타임스탬프, 크기와 함께 나열합니다. | -- |
| 텍스트, 이미지 또는 풍부한 생성형 UI를 휴대폰 화면으로 보냅니다. 휴대폰이 지침, 다이어그램, 핀아웃을 위한 참조 화면이 됩니다. |
|
| 휴대폰 카메라에서 라이브 비디오 스트림을 시작합니다. HTTPS 인증서를 생성하고 QR 코드를 반환합니다. | -- |
| 라이브 카메라 스트림에서 최신 프레임을 신선도 타임스탬프와 함께 가져옵니다. | -- |
독립형 CLI 모드
CCPhoto는 Claude Code 없이도 독립적으로 실행할 수 있습니다:
npx ccphoto # Start with defaults
npx ccphoto --port 4000 --output-dir ./photos # Custom port and directoryQR 코드가 터미널에 출력됩니다. 스캔하여 사진을 찍으면 디스크에 저장됩니다. 서버는 여러 번의 캡처 동안 계속 실행됩니다.
CLI 옵션
옵션 | 설명 | 기본값 |
| CCPhoto를 Claude Code의 MCP 서버로 등록 | -- |
| MCP 서버로 실행(Claude Code에서 내부적으로 사용) | -- |
| HTTP 서버 포트 |
|
| 사진이 저장되는 디렉터리 |
|
| 도움말 표시 | -- |
구성
환경 변수 | 설명 | 기본값 |
| 기본 사진 저장 디렉터리 재정의 |
|
보안
세션 토큰 -- 각 서버 세션에 대해 암호학적으로 무작위한 32자리 16진수 토큰이 생성됩니다. 모든 요청에는 이 토큰이 포함되어야 합니다.
타이밍 안전 비교 -- 토큰 검증은 타이밍 공격을 방지하기 위해
crypto.timingSafeEqual을 사용합니다.로컬 네트워크 전용 -- 서버는 로컬 네트워크 IP에 바인딩됩니다. 어떤 데이터도 네트워크를 벗어나지 않습니다.
외부 서비스 없음 -- 사진은 LAN의 HTTP를 통해 휴대폰과 서버 간에 직접 전송됩니다. 클라우드에 업로드되는 것은 없습니다.
문제 해결
로컬 네트워크 IP를 감지할 수 없는 경우
컴퓨터가 WiFi에 연결되어 있는지 확인하세요(일부 구성에서는 이더넷만으로는 충분하지 않습니다). CCPhoto에는 휴대폰이 접근할 수 있는 LAN IP 주소가 필요합니다.
QR 코드가 스캔되지 않는 경우
QR 코드가 스캔 가능한 해상도로 렌더링되도록 터미널 글꼴 크기를 키우거나 터미널 너비를 줄여 보세요. QR 코드 아래에 출력된 URL을 복사하여 휴대폰 브라우저에 직접 입력할 수도 있습니다.
휴대폰 카메라가 열리지 않는 경우
카메라 캡처 기능은 일부 브라우저에서 HTTPS를 요구하지만, 대부분의 모바일 브라우저는 로컬 네트워크 주소에 대해 일반 HTTP에서 이를 허용합니다. 브라우저가 카메라 접근을 차단하면 Safari(iOS) 또는 Chrome(Android)을 사용해 보세요.
업로드가 실패하는 경우
휴대폰과 컴퓨터가 동일한 WiFi 네트워크에 있는지 확인하세요. 클라이언트 격리가 설정된 기업 네트워크는 기기 간 트래픽을 차단할 수 있습니다. 대신 개인 핫스팟이나 홈 네트워크를 사용해 보세요.
개발
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)테스트는 Node.js 내장 테스트 러너를 사용하며 TypeScript 실행을 위해 tsx 개발 의존성이 필요합니다.
프로젝트 구조:
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 interfaces로드맵
실제 도메인 + Let's Encrypt 인증서 -- iOS Safari를 포함한 모든 기기에서 브라우저 경고 없이 사용할 수 있도록 유효한 인증서가 있는 등록된 도메인을 사용합니다.
iOS 라이브 비디오 지원 -- 라이브 비디오 스트리밍은 현재 Android/Chrome에서 작동합니다. iOS Safari 지원에는 신뢰할 수 있는 인증서가 필요합니다.
카메라 피드의 AR 오버레이 -- 라이브 카메라 뷰에 실시간으로 주석을 직접 그립니다.
멀티 카메라 지원 -- 다양한 촬영 각도를 위해 여러 대의 휴대폰을 동시에 연결합니다.
WebRTC 스트리밍 -- Claude의 비전 처리 지연 시간이 개선되면 HTTP 프레임 폴링을 WebRTC로 대체합니다.
기여
기여를 환영합니다.
저장소를 포크합니다.
기능 브랜치를 만듭니다 (
git checkout -b my-feature).변경 사항을 적용합니다.
npm test를 실행하여 문제가 없는지 확인합니다.변경 사항을 커밋합니다 (
git commit -m "Add my feature").브랜치로 푸시합니다 (
git push origin my-feature).풀 리퀘스트를 엽니다.
버그를 보고할 때는 Node.js 버전, OS, 그리고 문제를 재현하는 단계를 포함해 주세요.
라이선스
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityFmaintenanceBridges Claude AI with Xcode, enabling AI-powered code assistance, project management, and automated development tasks securely on your local machine.7690385MIT
- -licenseNot gradedqualityNot gradedmaintenanceA server that acts as a bridge between Claude and local Xcode projects, enabling AI-powered code assistance, project management, and automated development tasks without exposing your code to the internet.
- AlicenseNot gradedqualityDmaintenanceEnables remote control and monitoring of Claude Code sessions from mobile devices through ChatGPT Custom Connectors. Allows creating, managing, and interacting with multiple Claude Code sessions via natural language commands from anywhere.3MIT
- FlicenseBqualityDmaintenanceBridges Claude Desktop with Claude Code CLI to delegate complex coding tasks like creating React apps, building APIs, and debugging scripts while maintaining interaction through the Desktop interface.51
Related MCP Connectors
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stepankaiser/ccphoto'
If you have feedback or need assistance with the MCP directory API, please join our Discord server