MCP 문서 관리

메뉴

Phone MCP

Phone MCP

Phone MCP는 AI 에이전트가 안드로이드 모바일 장치를 제어할 수 있게 해주는 강력한 Model Context Protocol(MCP) 서버입니다. 이 서버를 통해 LLM은 모바일 앱 실행, 화면 탐색, 텍스트 입력, 알림 관리, 전화 및 문자 메시지 전송 등 다양한 모바일 작업을 자동화할 수 있습니다. 물리적 장치 또는 에뮬레이터/시뮬레이터 환경에서 작동하며, UI 요소 인식과 스크린샷 기반 상호작용을 결합하여 복잡한 모바일 워크플로우를 자동화합니다.

특징

  • 앱 관리: 앱 설치, 실행, 종료, 데이터 액세스 등 다양한 작업 지원
  • UI 자동화: 화면 요소 탭, 스와이프, 텍스트 입력 등 UI 상호작용 자동화
  • 스크린샷 분석: AI를 활용한 화면 요소 인식 및 상황 이해
  • 알림 관리: 시스템 및 앱 알림 읽기, 응답, 관리
  • 통신 기능: 전화 걸기, 문자 메시지 전송, 연락처 관리
  • 위치 서비스: GPS 위치 조회 및 위치 기반 서비스 활용
  • 복잡한 작업 흐름: 다단계 작업 시퀀스 자동화 지원
  • 클로스 플랫폼: 물리적 장치 및 에뮬레이터/시뮬레이터 지원
  • 접근성 호환: 접근성 서비스를 통한 강력한 장치 제어

API

도구

기기 및 앱 관리

  • list_available_devices: 사용 가능한 장치 목록 조회
  • 입력: 없음
  • 출력: 연결된 장치 및 에뮬레이터 목록

  • use_device: 특정 장치 선택

  • 입력: 장치 이름, 장치 유형(시뮬레이터, iOS, 안드로이드)
  • 출력: 장치 연결 상태

  • list_apps: 설치된 앱 목록 조회

  • 입력: 없음
  • 출력: 설치된 앱 목록 및 패키지 이름

  • launch_app: 앱 실행

  • 입력: 패키지 이름
  • 출력: 앱 실행 상태

  • terminate_app: 앱 종료

  • 입력: 패키지 이름
  • 출력: 앱 종료 상태

화면 상호작용

  • get_screen_size: 화면 크기 조회
  • 입력: 없음
  • 출력: 화면 너비 및 높이(픽셀)

  • click_on_screen_at_coordinates: 좌표 기반 화면 탭

  • 입력: x좌표, y좌표
  • 출력: 탭 동작 성공 여부

  • list_elements_on_screen: 화면의 요소 목록 조회

  • 입력: 없음
  • 출력: 화면에 표시된 요소, 좌표, 텍스트 정보

  • press_button: 장치 버튼 누르기

  • 입력: 버튼 유형(BACK, HOME, VOLUME_UP, VOLUME_DOWN 등)
  • 출력: 버튼 누름 성공 여부

웹 및 데이터

  • open_url: 브라우저에서 URL 열기
  • 입력: URL
  • 출력: URL 열기 성공 여부

  • swipe_on_screen: 화면 스와이프

  • 입력: 스와이프 방향(up, down)
  • 출력: 스와이프 동작 성공 여부

  • type_keys: 텍스트 입력

  • 입력: 입력할 텍스트, 제출 여부
  • 출력: 텍스트 입력 성공 여부

화면 캡처 및 분석

  • take_screenshot: 화면 캡처
  • 입력: 없음
  • 출력: 화면 이미지 데이터

  • set_orientation: 화면 방향 변경

  • 입력: 방향(portrait, landscape)
  • 출력: 방향 변경 성공 여부

  • get_orientation: 현재 화면 방향 조회

  • 입력: 없음
  • 출력: 현재 화면 방향

사용 방법

설치

# npm을 통한 설치
npm install -g phone-mcp

# 또는 Python 기반 구현
pip install mobile-mcp

구성

Claude Desktop에서 이 서버를 사용하려면 다음과 같이 설정합니다:

{
  "mcpServers": {
    "phone": {
      "command": "npx",
      "args": ["phone-mcp"],
      "env": {
        "ADB_PATH": "/path/to/adb",  // 안드로이드 디버그 브리지 경로
        "DEVICE_ID": "optional-specific-device-id"  // 특정 장치 지정(선택적)
      }
    }
  }
}

필요 조건

  • 안드로이드 SDK: adb(Android Debug Bridge) 설치 필요
  • USB 디버깅 활성화: 물리적 안드로이드 장치 연결 시 필요
  • Node.js: v14 이상 (Node.js 구현의 경우)
  • Python: 3.7 이상 (Python 구현의 경우)
  • 에뮬레이터(선택적): Android Emulator 또는 유사한 도구

사용 예시

// 사용 가능한 장치 목록 조회
const devices = await list_available_devices();
console.log(`사용 가능한 장치: ${devices.length}개`);

// 특정 장치 선택
await use_device("Pixel_4_API_30", "simulator");

// 설치된 앱 목록 조회
const apps = await list_apps();
console.log(`설치된 앱 수: ${apps.length}개`);

// 날씨 앱 실행
await launch_app("com.google.android.weather");

// 화면 요소 분석
const elements = await list_elements_on_screen();
console.log(`화면에 ${elements.length}개의 요소가 있습니다.`);

// 특정 좌표 탭하기
await click_on_screen_at_coordinates(250, 400);

// 아래로 스와이프
await swipe_on_screen("down");

// 화면 캡처
const screenshot = await take_screenshot();
console.log("화면 캡처 완료");

// 브라우저에서 URL 열기
await open_url("https://www.example.com");

// 검색창에 텍스트 입력
await type_keys("날씨 예보", true);

// 홈 버튼 누르기
await press_button("HOME");

연결된 구성 요소

  • Arduino - IoT 장치 제어와 모바일 연동
  • mcp_weather - 모바일에서 날씨 정보 조회 및 알림 설정
  • Everything Search - 모바일 장치의 파일 검색 및 관리