Android 빌드를 업로드하여 브라우저에서 실행 가능한 링크를 생성하고, AI 어시스턴트를 통해 클라우드 Android 기기에서 테스트합니다.
다른 이름 Romildoescoding/taptry-cli, taptry-cli
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 1.1.0
- 마지막 커밋
- 2026년 11월 1일
- 라이선스
- MIT
TapTry MCP란?
TapTry은(는) MCP server입니다. Android 빌드를 업로드하여 브라우저에서 실행 가능한 링크를 생성하고, AI 어시스턴트를 통해 클라우드 Android 기기에서 테스트합니다.
프로젝트 README에서 생성된 요약
TapTry MCP server 정보
TapTry는 Android 빌드를 브라우저에서 실행 가능한 링크로 변환하여, 수동 설치나 사이드로딩 없이 누구나 애플리케이션을 테스트할 수 있는 방법을 제공합니다. 개발자는 .apk, .aab, .apks, .xapk, .apkm을 포함한 다양한 파일 형식을 최대 500MB까지 업로드할 수 있습니다. 서비스는 링크가 활성화되기 전 VirusTotal을 통해 자동으로 악성코드 검사를 수행합니다. 이 도구는 CLI, GitHub Actions와 같은 CI/CD 파이프라인, 또는 Model Context Protocol을 사용하는 AI 어시스턴트를 통해 사용할 수 있도록 설계되었습니다.
Claude Desktop 또는 Cursor와 같은 MCP 클라이언트에 연결하면, 서버를 통해 AI가 전체 테스트 라이프사이클을 관리할 수 있습니다. 빌드 관리를 위해 upload_app, get_status, list_apps와 같은 도구를 제공합니다. 특히, 어시스턴트가 실제 클라우드 Android 기기에서 애플리케이션과 상호작용할 수 있도록 지원합니다. 특정 명령을 통해 어시스턴트는 tap, type_text, swipe, screenshot 등의 동작을 수행하여 앱 동작을 검증하고 디버깅을 위한 로그를 가져올 수 있습니다.
활용 사례
- 1즉각적인 브라우저 미리보기 생성Android 빌드를 업로드하여 웹 브라우저에서 바로 실행되는 공유 가능한 링크를 받습니다.
- 2Pull Request 테스트 자동화GitHub Action을 구성하여 모든 pull request에 비공개 미리보기 링크를 댓글로 자동 게시합니다.
- 3원격 기기 상호작용AI 클라이언트를 사용하여 실제 Android 기기에서 스와이프나 타이핑과 같은 수동 방식의 상호작용을 수행합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
TapTry MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 TapTry MCP 설치
$ claude mcp add --env TAPTRY_API_KEY=<YOUR_TAPTRY_API_KEY> taptry-cli -- npx -y taptryCursor에 TapTry MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"taptry-cli": {
"command": "npx",
"args": [
"-y",
"taptry"
],
"env": {
"TAPTRY_API_KEY": "<YOUR_TAPTRY_API_KEY>"
}
}
}
}VS Code에 TapTry MCP 설치
.vscode/mcp.json
{
"servers": {
"taptry-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"taptry"
],
"env": {
"TAPTRY_API_KEY": "<YOUR_TAPTRY_API_KEY>"
}
}
}
}Claude Desktop에 TapTry MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"taptry-cli": {
"command": "npx",
"args": [
"-y",
"taptry"
],
"env": {
"TAPTRY_API_KEY": "<YOUR_TAPTRY_API_KEY>"
}
}
}
}Codex에 TapTry MCP 설치
~/.codex/config.toml
[mcp_servers.taptry-cli] command = "npx" args = ["-y", "taptry"] [mcp_servers.taptry-cli.env] TAPTRY_API_KEY = "<YOUR_TAPTRY_API_KEY>"
Gemini CLI에 TapTry MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"taptry-cli": {
"command": "npx",
"args": [
"-y",
"taptry"
],
"env": {
"TAPTRY_API_KEY": "<YOUR_TAPTRY_API_KEY>"
}
}
}
}구성
TAPTRY_API_KEY필수비밀A TapTry API key - create one at https://taptry.in/settings/api-keys
| 이름 | 설명 | 유형 |
|---|---|---|
| TAPTRY_API_KEY | A TapTry API key - create one at https://taptry.in/settings/api-keys | 필수비밀 |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능romildoescoding/taptry-cli is public and reachablegithub.com/romildoescoding/taptry-cli ↗통과
- 패키지가 이 저장소를 소스로 지정taptry names romildoescoding/taptry-cli as sourcenpmjs.com/package/taptry ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-01github.com/romildoescoding/taptry-cli ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from taptry통과
- 패키지와 의존성에 심각한 보안 권고 없음1 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기taptry
Turn an Android build into a link anyone can run in their browser - no install, no sideloading. From your terminal, from CI on every pull request, or from your coding assistant.
npx taptry upload app/build/outputs/apk/release/app-release.apk
# Uploading app-release.apk (18.2 MB)…
# Created My Game - https://taptry.in/app/my-game
# Waiting for the malware scan and checks (this can take a few minutes)…
# Checking for malware…
# Ready
# https://taptry.in/app/my-game
Takes .apk, .aab, .apks, .xapk and .apkm, up to 500MB. Every upload
is malware-scanned before its link works. Needs Node 20+; no dependencies.
Setup
- In TapTry, open Settings > API keys and create a key.
- Either save it on your machine -
npx taptry login- or setTAPTRY_API_KEY(what CI should do).
CLI
taptry upload <file> [--name <name>] [--ref <ref>] [--unlisted | --private] [--no-wait] [--timeout <s>] [--json]
taptry status <app> | --ref <ref>
taptry list [--ref <ref>]
taptry delete <app> | --ref <ref> [--yes]
taptry login | logout | whoami
taptry mcp
--refis your own id for an app, e.g.github:me/game#42. Uploading again with the same ref replaces that app's file and keeps its link - use it for anything you upload repeatedly.- Visibility: public by default (on your TapTry profile, anyone can
run it).
--unlisted: listed nowhere, and the link printed is a secret link only the people you send it to can open.--private: only you. uploadwaits for the checks by default and prints the link on stdout, soURL=$(taptry upload app.apk)works.--jsonprints the whole result.deleteasks first; without a terminal it needs--yes.
Exit codes: 0 ok · 1 error (network, auth, refused request) · 2 bad
usage · 3 the app failed its checks (malware, not an app, …) · 4 timed out
waiting for the checks.
GitHub Action: a preview link on every pull request
Each pull request gets one TapTry app and one comment with its link, updated on every push and deleted when the PR closes. Previews are unlisted by default: anyone with the link in the PR can run them, and they never show up on your TapTry profile.
# .github/workflows/taptry-preview.yml
name: TapTry preview
on:
pull_request:
types: [opened, synchronize, reopened, closed]
permissions:
contents: read
pull-requests: write
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
if: github.event.action != 'closed'
- uses: actions/setup-java@v4
if: github.event.action != 'closed'
with:
distribution: temurin
java-version: 17
- name: Build
if: github.event.action != 'closed'
run: ./gradlew assembleDebug
- uses: Romildoescoding/taptry-cli@v1
with:
api-key: ${{ secrets.TAPTRY_API_KEY }}
file: app/build/outputs/apk/debug/app-debug.apk
Add your key as the repository secret TAPTRY_API_KEY. Pull requests from
forks don't get secrets, so their previews are skipped with a warning.
| Input | Default | |
|---|---|---|
api-key |
- | Required. |
file |
- | The build output. A glob is fine if it matches exactly one file. |
name |
from the file | App name, set on the first upload. |
ref |
github:<repo>#<PR> or github:<repo>@<branch> |
Same ref, same app. |
visibility |
unlisted |
unlisted (anyone with the link, listed nowhere), public or private. |
wait / timeout |
true / 900 |
Wait for the checks. |
comment |
true |
Keep one PR comment up to date. |
delete-on-close |
true |
Delete the preview when the PR closes. |
fail-on-error |
true |
Fail the step when the build is refused. |
Outputs: url, app-id, slug, status, ready.
Outside pull requests (e.g. on: push to main), it keeps one app per
branch: github:<repo>@main.
MCP server: "build it and give me a link"
taptry mcp is a Model Context Protocol
server for Claude Code, Cursor, Claude Desktop and other MCP clients. Tools:
upload_app, get_status, get_link, list_apps, delete_app. The
assistant is told to ask before uploading or deleting, and delete_app
refuses unless confirm: true is passed.
Claude Code
claude mcp add taptry -e TAPTRY_API_KEY=tt_your_key -- npx -y taptry mcp
Cursor (~/.cursor/mcp.json) or Claude Desktop
(claude_desktop_config.json):
{
"mcpServers": {
"taptry": {
"command": "npx",
"args": ["-y", "taptry", "mcp"],
"env": { "TAPTRY_API_KEY": "tt_your_key" }
}
}
}
After taptry login you can leave out the env block.
Claude Code plugin - the MCP server and the TapTry skill in one install (set TAPTRY_API_KEY in your environment first):
/plugin marketplace add Romildoescoding/taptry-cli
/plugin install taptry@taptry
Let your assistant test the app on a real device
The MCP server can also run your uploaded app on a cloud Android device and
let the assistant use it: start_session, then screenshot (it sees the
screen) and get_ui (the elements, with coordinates), tap (by label or
position), type_text, press_key, swipe, get_logs (crashes and
recent log lines) and end_session. So "upload the build, open it, sign up
with a test account and tell me if anything crashes" works end to end. Each
session uses one of your runs and ends after 5 minutes without a call; at
most 2 run at once.
Data and privacy
Everything here talks to one service: the TapTry API at https://api.taptry.in, using your API key.
- Sent to TapTry: app files you upload (
.apk,.aab,.apks,.xapk,.apkm), the app name and settings you give, and - in device sessions - the taps, swipes, keys and text you send to your app. - Read from TapTry: your account name and plan (
whoami), your apps and their status, and in device sessions the screenshots, on-screen elements and logs of your own app. Screenshots and logs can contain whatever your app displays or logs. - Kept by TapTry: uploaded apps until you delete them (
taptry delete, or in the web app); run counts and analytics for your apps. Device-session screenshots, UI reads and logs are returned to you and not stored. Uploaded files are malware-scanned by VirusTotal. Privacy policy · Terms. - Stored locally:
taptry loginsaves your API key in your user config folder (mode 0600). Nothing else is written.
API
Everything here wraps TapTry's public HTTP API at
https://api.taptry.in/api/v1 (bearer-token auth with the same key). A
full reference for using it directly is coming to TapTry's docs.
License
MIT
TapTry MCP 질문
TapTry MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env TAPTRY_API_KEY=<YOUR_TAPTRY_API_KEY> taptry-cli -- npx -y taptry를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
TapTry MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
TapTry에서 업로드 가능한 파일 형식은 무엇인가요?
.apk, .aab, .apks, .xapk, .apkm 파일을 최대 500MB까지 업로드할 수 있습니다.
AI 어시스턴트가 어떻게 Android 앱을 테스트할 수 있나요?
MCP server를 통해 어시스턴트가 클라우드 기기에서 세션을 시작하여 스크린샷 촬영, UI 요소 검사, 탭, 타이핑, 스와이프 및 로그를 가져올 수 있습니다.
업로드된 앱은 보안 검사를 거치나요?
네, 모든 업로드 파일은 링크가 활성화되기 전에 악성코드 검사를 수행합니다.