MAS MCP 서버

Claude Code, Cursor, Codex 및 모든 MCP 클라이언트를 위한 안드로이드 MCP 서버

AI 클라이언트에 안드로이드를 보는 눈과 조작하는 손을 주는 도구 41개: 직접 볼 수 있는 스크린샷, OCR과 템플릿 매칭, 탭·스와이프·입력, 매크로 실행, 그리고 한 문장으로 매크로를 만드는 에이전트. Windows나 Mac의 BlueStacks, LDPlayer, MuMu, MEmu 등 adb 호환 에뮬레이터, PC에 연결한 휴대폰, 항상 켜져 있는 클라우드 안드로이드 기기를 이미 쓰는 클라이언트에서 제어하세요.

MAS 키를 헤더에 담아 호스팅 서버를 연결하고, 앱이 켜져 있는 동안 로컬 서버는 URL로 추가합니다.

claude mcp add --transport http mas-cloud https://api.automationmacro.com/mcp --header "X-API-Key: $MAS_API_KEY"
claude mcp add --transport http mas-local http://127.0.0.1:3846/mcp

무엇인가

MAS 안드로이드 MCP 서버가 하는 일

MCP는 AI 클라이언트가 외부 도구를 호출할 때 쓰는 프로토콜입니다. 이 서버는 안드로이드 기기를 그 도구로 바꿉니다. 클라이언트가 스크린샷을 요청하면 직접 볼 수 있는 이미지를 받고, 화면에 무엇이 적혀 있는지 물으면 신뢰도와 박스가 있는 OCR 줄을 받고, 템플릿을 보내면 위치를 돌려받고, 탭·스와이프·입력·키 누르기를 하고, 앱을 열고 닫습니다. 이것은 모든 안드로이드 MCP 서버가 하는 부분이며, 에뮬레이터, 연결한 휴대폰, 클라우드 기기에서 똑같이 동작합니다.

MAS 서버는 기기 서버가 할 수 없는 부분도 합니다. 라이브러리의 매크로를 읽고 실행하고, MAS Agent에게 앱을 탐색해 완성된 Python 매크로를 돌려달라고 요청하고, 에이전트가 학습한 앱 맵과 전체 SDK 레퍼런스를 MCP 리소스로 제공해 클라이언트가 하우스 스타일로 매크로 코드를 쓸 수 있게 합니다. 그래서 기기 계층에서는 안드로이드 자동화용 MCP 서버이고, 그 위 계층인 매크로, 에이전트, 맵에서는 모바일 자동화 MCP 서버입니다. Android Studio 플러그인도, 코딩 어시스턴트도 아닙니다. 기기를 조작합니다.

호스팅 서버

도구 41개 전부, 내 클라우드 기기에서

원격 HTTP 엔드포인트 하나. 클라우드 기기를 임대하고, 조작하고, 서버 측에서 매크로를 실행하고, 에이전트로 새 매크로를 만들고, 앱 맵을 읽습니다. 설치할 것이 없고 PC를 꺼도 됩니다.

앱 안의 로컬 서버

도구 38개, 내 컴퓨터에서

데스크톱 앱이 곧 서버입니다. Integrations (MCP)에서 켜고 클라이언트를 루프백 URL로 향하게 하세요. adb가 보는 모든 것을 제어합니다: Windows나 macOS의 BlueStacks, LDPlayer, MuMu, MEmu, 또는 USB 디버깅을 켠 휴대폰. 매크로 라이브러리, 이미지 라이브러리, 에이전트 제작, 개발 루프, 스케줄러도 함께 옵니다.

에뮬레이터

안드로이드 에뮬레이터 제어: Windows나 Mac의 BlueStacks, LDPlayer, MuMu, MEmu

로컬 서버는 이미 책상 위에 있는 에뮬레이터를 위한 안드로이드 에뮬레이터 MCP 서버입니다. 앱의 Integrations (MCP)에서 켜고 클라이언트를 http://127.0.0.1:3846/mcp로 향하게 하세요. 모든 기기 도구는 device를 받습니다. list_devices가 준 id, adb 시리얼, 또는 포트 번호만으로도 되고, 에뮬레이터가 하나만 켜져 있으면 생략할 수 있습니다. adb는 앱이 함께 가져오므로, 대부분의 사람이 찾는 MCP 안드로이드 에뮬레이터 설정이 이것입니다: 토글 하나, URL 하나, 끝.

  • BlueStacks
  • LDPlayer
  • MuMu
  • MEmu
  • Windows
  • macOS

게임은 접근성 트리 기반 서버가 무너지는 경우입니다: 읽을 트리가 없으니까요. 두 서버 모두 픽셀로 동작하므로, 모델이 설정 화면을 다루듯 게임 화면도 플레이할 수 있습니다.

클라우드 기기

설치할 것 없는 클라우드 안드로이드 기기

호스팅 서버는 MAS가 대신 운영하는 항상 켜져 있는 기기에 연결됩니다. lease_device가 제어 세션을 열고 모든 기기 도구에 필요한 임대 id를 반환하며, auto_start를 설정하면 중지된 기기를 먼저 부팅합니다. 임대는 호출할 때마다 갱신되고 유휴 10분 후 만료되므로, 잊힌 클라이언트가 기기를 영원히 붙들 수 없습니다. run_macro는 기기에서 서버 측으로 실행되고 author_macro는 MAS Agent를 그 기기에서 작업시킵니다. 둘 다 PC를 꺼 두어도 됩니다.

기기 도구에는 호출당 요금이 없습니다. 계정이 소유한 클라우드 기기에서 동작하며, 기기당 월 $80에 월 크레딧이 포함됩니다. 클라우드 기기 보기.

내 휴대폰

책상 위 휴대폰을 위한 안드로이드 ADB MCP 서버

USB 디버깅을 켜고 휴대폰을 연결하면 로컬 서버가 에뮬레이터 옆에 휴대폰을 나열합니다. 모든 화면·입력·비전 도구가 그대로 동작합니다: 모델이 에뮬레이터를 제어하듯 MCP로 안드로이드 휴대폰을 제어할 수 있고, 이미 쓰는 클라이언트에서, 휴대폰에는 아무것도 설치하지 않습니다.

비전

모델이 볼 수 있는 스크린샷, OCR, 템플릿 매칭

  • screenshot은 화면을 이미지 콘텐츠로 반환하므로, 모델이 트리에서 추측하는 대신 직접 봅니다. 로컬 서버는 기본적으로 긴 변 기준 1280px로 축소하고 배율을 알려 줍니다.
  • read_text는 화면 전체나 한 영역에 OCR을 실행해 각 줄을 신뢰도와 바운딩 박스와 함께 반환하므로, "Claim이라는 단어를 탭해"가 희망이 아니라 좌표가 됩니다.
  • find_image는 보낸 템플릿을 OpenCV로 매칭하며, 임계값을 직접 정할 수 있고, 점수와 탭할 중심점을 반환합니다.

도구

전체 도구 41개

모든 도구의 이름과 매개변수. "로컬 및 호스팅" 도구는 두 창구 모두에 있고, 그렇지 않은 몇몇에는 어느 쪽에 속하는지 표시했습니다.

Device control

Pick a device and drive it: the same taps, swipes and keys a person would use.

  • get_status 로컬 및 호스팅
    Call this first. What the server is, whether the account can run anything (subscription, AI credits), the devices it can reach, and hints, including that local emulators are only reachable through the desktop app's local server. The same body as the mas://status resource; needs no scope.
  • list_devices 로컬 및 호스팅
    List the devices the server can reach, with their state. On the hosted server that is your cloud devices and quota; on the local server, the emulators the app sees over adb (id, serial, port, whether a macro is using one).
  • lease_device (device_id, auto_start) 호스팅
    Open a control session on one of your cloud devices and get the lease_id every device tool needs. auto_start boots a stopped device first. A lease renews on every call and expires after ten idle minutes; one lease per device, and a device that is running a macro cannot be leased.
  • release_device (lease_id) 호스팅
    End the control session. The device keeps running.
  • tap (x, y) 로컬 및 호스팅
    Tap the screen at device coordinates.
  • swipe (x1, y1, x2, y2, duration_ms) 로컬 및 호스팅
    Swipe between two points for scrolling and flicks, with a chosen duration (default 300 ms).
  • long_press (x, y, duration_ms) 로컬 및 호스팅
    Press and hold at a point for duration_ms (default 800, 100 to 5000): context menus, drag handles, app icons.
  • drag (x1, y1, x2, y2, duration_ms) 로컬 및 호스팅
    Touch down, move to a second point over duration_ms (default 600, 100 to 5000) and release: slow enough for sliders and drag-and-drop, unlike a flick swipe.
  • type_text (text) 로컬 및 호스팅
    Type text into the focused input field.
  • press_key (key) 로컬 및 호스팅
    Press BACK, HOME, ENTER, TAB, DEL or any KEYCODE_ name.
  • open_app (package) 로컬 및 호스팅
    Launch an app by package name.
  • close_app (package) 로컬 및 호스팅
    Force-stop an app by package name.
  • current_app 로컬 및 호스팅
    Report the package in the foreground.
  • screen_size 로컬 및 호스팅
    Return the screen size in pixels, the coordinate space for tap and swipe.
  • wait (ms) 로컬 및 호스팅
    Pause for animations and loading screens: up to 10 seconds per call on the hosted server, up to 60 seconds locally. Prefer wait_for when you know what you are waiting for.

Screen understanding

Let the model see the screen and locate things on it without guessing coordinates: pixels, OCR, template matching and the accessibility tree.

  • screenshot (max_width) 로컬 및 호스팅
    Capture the screen and return it as an image the model looks at directly. Pass max_width (200 to 2000) for a smaller image; the reply then reports the scale, and tap coordinates stay in device pixels (device_x = image_x / scale). The local server limits the long side to 1280 px by default and always reports the scale.
  • read_text (region {x1, y1, x2, y2}) 로컬 및 호스팅
    OCR the whole screen or one region into text lines. The hosted server returns a confidence and a bounding box per line; the local server returns the lines and the scanned box.
  • find_image (template_base64 | image_id, threshold) 로컬 및 호스팅
    Locate a template on screen with OpenCV matching and return the score and tap coordinates. The template is inline (template_base64) or an image_id from your image library, so a crop made once with crop_image is found every time.
  • get_ui_tree (max_nodes) 로컬 및 호스팅
    The Android accessibility hierarchy as compact text, one visible element per line with its class, id, text, description, bounds and flags. Cheaper and more exact than a screenshot for buttons, fields and labels; games and canvas views expose little.
  • find_element (id, text, desc, class, contains, index) 로컬 및 호스팅
    Find UI elements by resource id, text, content description and/or class (selectors combine). Returns the match at index with its bounds and tap centre, plus up to 20 matches. contains=true (default) matches substrings.
  • wait_for (image_id | template_base64 | text | element {id, text, desc, class}, threshold, timeout_ms, interval_ms) 로컬 및 호스팅
    Poll the screen until one target appears or timeout_ms (default 15000, max 60000) passes: a library image (image_id) or inline template, on-screen text (OCR), or a UI element selector. Returns where it was found and the elapsed time. Use it instead of wait plus screenshot loops.

Macros and runs

Your macro library, readable and runnable from the client. Hosted runs execute server-side on a cloud device; local runs are the editor's Run button on your emulator.

  • list_macros (page, page_size) 로컬 및 호스팅
    List your saved macros with name, id and type (code, or legacy for a retired block macro).
  • get_macro_code (macro_id, file) 로컬 및 호스팅
    Read a code macro's project: the entry script and the file listing by default, or one file you name.
  • run_macro (macro_id, device_id, args) 로컬 및 호스팅
    Start a saved code macro with optional argument overrides and return a run_id at once. Hosted: server-side on a cloud device of yours (it starts if stopped). Local: on the named emulator, which stays busy for the other device tools until the run ends.
  • get_run (run_id) 호스팅
    The state of a hosted run, from launching through running to finished or failed, with its message and timings.
  • get_run_status (run_id) 로컬
    The state of a local run (running, stopping, completed, failed, stopped), its timestamps and the exit code once it ended. The local name for get_run.
  • stop_run (run_id) 로컬 및 호스팅
    Stop a running macro.
  • get_run_log (run_id, max_lines) 로컬 및 호스팅
    The trailing stdout and stderr lines of a run, newest last, while it runs or after. Hosted runs come from run_macro, validate_macro or a schedule.

Image library

Your Image Library, the same one the app shows: crop a control once, then find it by id from any tool or macro.

  • list_images (folder, query, limit, page) 로컬 및 호스팅
    List your library images, newest first, optionally within one folder or matching a name substring; each with id, name, folder, pixel size and byte size.
  • get_image (image_id) 로컬 및 호스팅
    Fetch one library image by id: the picture itself, to confirm it is the template you mean, plus its name, folder and size.
  • crop_image (region {x, y, width, height}, name, folder) 로컬 및 호스팅
    Crop a rectangle of the device's current screen into the library as a PNG template and return its new image_id with a small preview. The region is clamped to the screen; at least 8 by 8 pixels must remain; a name already used in the folder gets a numeric suffix.

Agent authoring

Hand a goal to MAS Agent and get a finished macro back, from any client.

  • author_macro (prompt, device_id, model, macro_id, parent_session_id, pipeline) 로컬 및 호스팅
    Ask MAS Agent to build a macro from a plain-language goal: it explores the app on the device, captures what it needs, writes and validates the macro. macro_id improves one of your macros instead, parent_session_id continues an earlier session, pipeline picks how the code is produced (build, review, author, author_fast). Async and minutes long; returns a session_id. Hosted authoring always uses the metered cloud model; local authoring uses the provider the app has selected (provider overrides it).
  • get_agent_session (session_id, after_seq) 로컬 및 호스팅
    Progress of an authoring session: state, summary, the macro id once it exists, and any question the agent is waiting on. Hosted sessions also return the transcript events after your cursor.
  • answer_agent_session (session_id, qid, answers) 로컬 및 호스팅
    Answer the agent's pending question so it can continue. Hosted: qid plus an answers object keyed by question header; local: one answer string (an option label or free text).
  • stop_agent_session (session_id) 로컬 및 호스팅
    Stop a session early. Work done so far is saved.

Developer loop

Write a macro yourself, in the house style: scaffold the project, install it as a code macro, prove it with one run.

  • scaffold_macro (name, activities, description, app_package) 로컬 및 호스팅
    Generate the house project skeleton for a new code macro: src/app.py wiring, one src/activities/<name>.py stub per activity, common_logic.py, the scheduler library, task.yaml, ui.xml, requirements.txt and README.md. Pure: nothing is saved; returns {files: {path: content}} for you to fill in.
  • install_macro (name, files, macro_id, description) 로컬 및 호스팅
    Create a code macro from project files, or replace the code of one of yours when macro_id is given, through the same create and code-sync path the app uses. files is {path: content}, 2 MB total; the code is syntax-checked on intake. The local server also takes project_dir, a folder on your PC.
  • validate_macro (macro_id, device_id, timeout_s, args) 로컬 및 호스팅
    Run a macro once and wait for the verdict: passed, exit code and the log tail. Hosted: one run on a cloud device, default 300 s; a run still going at the timeout is stopped. Local: the engine's validation job on your emulator, which also checks task.yaml; pass macro_id or project_dir, and runs (1 to 5) for the graduation ladder.

App maps

What the agent has learned about an app, readable by your client.

  • get_map (package, profile) 호스팅
    The learned menu map of an app: its screens and the proven routes between them.

Scheduling

The same scheduler the app's Schedule card uses. Hosted jobs run on a cloud device with your PC off; local jobs fire while the app is open.

  • schedule_macro (macro_id, device_id, at, every, timezone, name, weekdays) 로컬 및 호스팅
    Schedule a code macro to run without you: once at `at` (RFC 3339) or recurring with every = daily, weekly (with weekdays) or monthly, in an IANA timezone. No hourly recurrence: a macro that repeats within the day recurs itself. Missed occurrences are skipped; the job pauses after three consecutive failures. Returns job_id and next_run_at.
  • list_schedules (status, target, page) 로컬 및 호스팅
    Your scheduled jobs, cloud and local, with status, next and last run, failures and the auto-pause reason. Filter by status or target.
  • cancel_schedule (job_id) 로컬 및 호스팅
    Delete a scheduled job for good; a run still going on a cloud device is stopped first. Use the app to skip one occurrence or pause a job.

리소스

클라이언트가 대화를 벗어나지 않고 매크로 코드를 쓸 수 있도록 서버가 게시하는 문서.

  • mas://status Read first: the server, the account (subscription, AI credits), the devices it reaches, connected clients on the local server, and where local emulators live (the desktop app).
  • mas://docs/sdk-reference The complete reference of the pre-installed mas SDK macros are written against: device control, vision, elements, app management, storage, types and exceptions.
  • mas://docs/house-library The house library MAS Agent builds macros with: the scheduler skeleton, the activity runner and the runtime-UI template that scaffold_macro ships verbatim.

설정

1분 만에 추가하기

호스팅 서버는 요청마다 키를 받습니다: 앱의 Integrations (MCP)나 API 키에서 키를 만들고, 원하는 스코프를 고르고, X-API-Key나 Authorization 헤더로 보내세요. 수명이 짧은 자격 증명을 선호하는 클라이언트는 그 키를 1시간짜리 액세스 토큰으로 교환할 수 있고, 대화형으로 로그인하는 클라이언트는 자기 토큰을 받습니다. 로컬 서버에는 키가 전혀 필요 없습니다.

curl -s -X POST https://api.automationmacro.com/api/mcp/oauth/token -d grant_type=client_credentials -d client_secret=$MAS_API_KEY

Claude Code

키를 헤더에 담아 호스팅 서버를, 이어서 앱이 켜져 있는 동안 URL로 로컬 서버를:

claude mcp add --transport http mas-cloud https://api.automationmacro.com/mcp --header "X-API-Key: $MAS_API_KEY"
claude mcp add --transport http mas-local http://127.0.0.1:3846/mcp

Cursor

.cursor/mcp.json에 두 서버를 모두 HTTP 항목으로:

{
  "mcpServers": {
    "mas-cloud": {
      "url": "https://api.automationmacro.com/mcp",
      "headers": { "X-API-Key": "<your key>" }
    },
    "mas-local": { "url": "http://127.0.0.1:3846/mcp" }
  }
}

Codex CLI

~/.codex/config.toml에, 키는 환경 변수로. 로컬 서버는 codex mcp add mas-local --url입니다:

[mcp_servers.mas-cloud]
url = "https://api.automationmacro.com/mcp"
bearer_token_env_var = "MAS_API_KEY"

Hermes, OpenCode, Gemini CLI 및 나머지

헤더가 있는 HTTP 서버를 받는 모든 클라이언트. Claude Desktop은 URL을 부르는 대신 명령을 실행하므로, 앱 자체를 로컬 서버로 가는 브리지로 씁니다. 설치 경로가 채워진 블록은 앱이 보여 줍니다.

{
  "mcpServers": {
    "mas-cloud": { "type": "http", "url": "https://api.automationmacro.com/mcp", "headers": { "X-API-Key": "<your key>" } },
    "mas-local": { "type": "http", "url": "http://127.0.0.1:3846/mcp" }
  }
}

확인: 클라이언트에 기기 목록을 요청한 뒤 스크린샷을 요청하세요. 엔드포인트 https://api.automationmacro.com/mcp, 프로토콜 2025-06-18, 디스커버리 문서는 /.well-known 아래에 있습니다.

도구로서의 에이전트

author_macro: AI 탐색에서 완성된 Python 매크로까지

대부분의 안드로이드 MCP 서버는 기기에서 멈춥니다. 이 서버는 에이전트를 건네줍니다. author_macro는 일상 언어의 목표와 클라우드 기기를 받아 MAS Agent 세션을 시작합니다. 세션은 앱을 탐색하고, 필요한 템플릿 이미지와 텍스트 영역을 실제 화면에서 캡처하고, 결정적 Python 매크로를 컴파일하고, 재실행으로 검증합니다. get_agent_session은 커서가 있는 대화 기록과 에이전트의 질문을 반환하고, answer_agent_session이 답합니다. 완성된 매크로는 세션에 id가 담긴 채 라이브러리에 들어가 run_macro로 실행할 수 있으며, 그 이후 모든 실행은 AI 크레딧 0입니다. MAS Agent 보기.

QA

안드로이드 앱 테스트와 QA 워크플로

에뮬레이터나 클라우드 기기의 테스트 빌드에 클라이언트를 연결하고, tap, type_text, press_key로 흐름을 진행하고, read_text나 find_image로 각 화면을 확인하세요. author_macro로 흐름을 한 번 지나가면 예약할 수 있는 반복 가능한 검사가 됩니다. 사용자가 하듯 화면을 통해 앱을 테스트하며, 단위 테스트 프레임워크는 아닙니다.

보안

원격 서버, HTTP 전송, 스코프 키, 그리고 내 컴퓨터에만 응답하는 로컬 서버

호스팅 서버는 엔드포인트 하나의 HTTPS 기반 무상태 JSON-RPC입니다. 키는 앱에서 만들고, 한 번만 표시되며, 만료일을 둘 수 있고, 클릭 한 번으로 폐기합니다. 키로 발급한 토큰은 1시간 동안 유효하며 키를 폐기하면 함께 무효가 됩니다. 각 키는 부여한 스코프만 갖습니다:

  • devices:control lease a cloud device, see its screen, tap, type, manage apps and the image library
  • macros:run list and read macros; start, check, validate and stop runs; read run logs; manage schedules
  • macros:author start, follow, answer and stop an agent authoring session; scaffold and install macro code
  • maps:read read the learned map of an app

로컬 서버는 루프백에서 듣고 내 컴퓨터에만 응답합니다: 다른 호스트의 요청이나 다른 오리진의 브라우저 페이지 요청은 거부됩니다. 앱이 켜져 있는 동안 동작하며, 켠 자리에서 그대로 끄면 됩니다.

안드로이드 MCP 서버 FAQ

안드로이드 MCP 서버란 무엇인가요?

MCP(Model Context Protocol)는 Claude Code, Cursor, Codex 같은 AI 클라이언트가 외부 도구를 호출하는 방식입니다. 안드로이드 MCP 서버는 안드로이드 기기를 도구로 노출합니다: 스크린샷 찍기, 화면의 텍스트 읽기, 탭, 스와이프, 입력, 앱 열기. MAS 서버는 도구 41개를 노출하며, 기기 서버만으로는 할 수 없는 것을 더합니다: 저장된 매크로 실행, MAS Agent에게 매크로 제작 요청, 에이전트가 학습한 앱 맵 읽기.

Claude Code를 안드로이드 에뮬레이터에 어떻게 연결하나요?

내 에뮬레이터라면 앱의 Integrations (MCP)에서 로컬 서버를 켜고 그 URL을 등록하세요: claude mcp add --transport http mas-local http://127.0.0.1:3846/mcp. adb가 보는 모든 기기를 제어합니다. 클라우드 기기라면 claude mcp add --transport http로 호스팅 서버를 추가한 뒤, Claude Code 안의 /mcp에서 로그인하거나 키를 헤더로 보내세요. 두 스니펫 모두 이 페이지에 있습니다.

BlueStacks, LDPlayer, MuMu, MEmu에서 동작하나요?

예. 로컬 서버는 adb devices가 나열하는 모든 것과 통신하며, 여기에는 Windows나 macOS의 BlueStacks, LDPlayer, MuMu, MEmu와 다른 adb 호환 에뮬레이터가 포함됩니다. 특정 에뮬레이터 브랜드에 묶인 것은 없습니다.

Cursor나 Codex가 MCP로 안드로이드 에뮬레이터를 제어할 수 있나요?

예. Cursor는 두 서버를 모두 mcp.json의 HTTP 항목으로 받습니다: 호스팅 서버는 키를 헤더에 담고, 로컬 서버는 루프백 URL로 넣습니다. Codex CLI는 codex mcp add와 환경 변수의 키로 호스팅 서버를, --url로 로컬 서버를 추가합니다. 어느 쪽이든 같은 도구 이름이 나타납니다.

다른 어떤 MCP 클라이언트가 동작하나요?

HTTP로 MCP 서버를 호출할 수 있는 모든 클라이언트: Claude Code, Cursor, Codex, Hermes, OpenCode, Gemini CLI 등. Claude Desktop과 claude.ai는 호스팅 서버를 사용자 지정 커넥터로 추가하고 로그인시킵니다. 로컬 서버의 경우 Claude Desktop은 URL을 호출하는 대신 명령을 실행하므로 앱 자체를 실행합니다.

ADB나 Android Studio를 설치해야 하나요?

로컬 서버는 adb로 에뮬레이터를 조작하고 그 adb는 데스크톱 앱이 함께 가져오므로, 앱 말고는 설치할 것이 없습니다. Android Studio도 필요 없습니다. 호스팅 서버는 아무것도 설치할 필요가 없습니다: 클라우드 기기는 서버 측에서 조작되며 클라이언트는 도구만 호출합니다.

모델이 정말 화면을 볼 수 있나요?

예. screenshot은 모델이 직접 보는 이미지로 화면을 반환합니다. read_text는 OCR을 실행해 각 줄을 신뢰도와 바운딩 박스와 함께 반환하고, find_image는 보낸 템플릿을 매칭해 점수와 탭 좌표를 반환합니다. 접근성 트리가 필요 없으며, 그래서 게임에서도 동작합니다.

PC에 연결한 실제 안드로이드 휴대폰을 제어할 수 있나요?

예, 로컬 서버를 통해서요. USB 디버깅을 켜고 휴대폰을 연결하면 다른 에뮬레이터처럼 list_devices에 나타납니다. 화면, 입력, 비전 도구가 같은 방식으로 동작합니다.

원격 MCP 서버인가요, 로컬에서 실행되나요?

둘 다입니다. 호스팅 서버는 원격 HTTP 엔드포인트 하나(https://api.automationmacro.com/mcp)로, 클라우드 기기용 도구 41개 전부를 제공합니다. 로컬 서버는 데스크톱 앱 자체이며, http://127.0.0.1:3846/mcp에서 에뮬레이터와 연결한 휴대폰용 도구 38개를 제공합니다: 기기, 비전, 매크로, 이미지 라이브러리, 제작, 개발 루프, 예약 도구가 그대로 있고 기기 임대와 앱 맵만 빠집니다. 다른 것은 작업이 어디서 도는지입니다.

인증은 어떻게 동작하나요?

호스팅 서버는 앱에서 만들고 스코프를 고른 키를, 요청마다 X-API-Key나 Authorization: Bearer 헤더로 받습니다. MCP 클라이언트 자격 증명 확장을 구현한 클라이언트는 https://api.automationmacro.com/api/mcp/oauth/token에서 그 키를 1시간짜리 토큰으로 교환할 수 있고, 대화형으로 로그인하는 클라이언트는 자기 토큰을 받습니다. 키를 폐기하면 전부 멈춥니다. 디스커버리 문서는 /.well-known 아래에 게시됩니다. 로컬 서버에는 키가 없습니다.

author_macro는 무엇을 반환하고, 얼마나 걸리나요?

클라우드 기기에서 MAS Agent 세션을 시작하고 즉시 세션 id를 반환합니다. 에이전트는 몇 분 동안 앱을 탐색합니다. get_agent_session이 커서와 함께 대화 기록을 스트리밍하고 에이전트의 질문을 보여 주며, answer_agent_session으로 답합니다. 끝나면 매크로 id가 세션에 담기고 매크로는 라이브러리에 들어가 run_macro로 실행할 수 있습니다. 제작에는 AI 크레딧이 들고, 완성된 매크로 실행은 0입니다. MAS Agent 보기.

무료인가요? 클라우드 기기는 얼마인가요?

로컬 서버는 데스크톱 앱의 일부이며 추가 요금이 없습니다. 앱이 켜져 있고 로그인되어 있어야 합니다. 호스팅 서버는 MAS 계정의 일부입니다. 기기 도구는 소유한 클라우드 기기에서 동작하며, 기기당 월 $80에 월 크레딧이 포함되고, 기기 도구에는 호출당 요금이 없습니다. 완성된 매크로 실행은 크레딧 0이고, 에이전트 제작은 작업하는 만큼 크레딧을 씁니다. 요금제 보기.

PC를 켜 두지 않고 클라우드 기기에서 24시간 실행할 수 있나요?

예. lease_device가 클라우드 기기에 제어 세션을 열고 중지된 기기를 부팅할 수 있으며, run_macro는 서버 측에서 실행됩니다. PC를 켜 둘 필요가 없고, 임대는 호출할 때마다 갱신되며 유휴 10분 후 만료됩니다. 클라우드 기기 보기.

안드로이드 앱 테스트와 QA에 쓸 수 있나요?

예. 클라이언트를 테스트 빌드에 연결하고, tap, type, press_key로 흐름을 진행하고, read_text나 find_image로 각 화면을 확인하고, author_macro로 한 번 지나간 흐름을 반복 가능한 검사로 바꾸세요. 사용자가 하듯 화면을 통해 앱을 자동화하며, 단위 테스트 프레임워크는 아닙니다.