프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Storepilot MCP

제작자: sonlenef버전 0.1.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.sonlenef/storepilot-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

Run an app portfolio across Google Play and the App Store: vitals, reviews, earnings, releases.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타
  • 입력해야 할 값: STOREPILOT_GOOGLE_CREDENTIALS, STOREPILOT_ASC_KEY_PATH

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: STOREPILOT_GOOGLE_CREDENTIALS, STOREPILOT_GOOGLE_REPORTS_BUCKET, STOREPILOT_ASC_KEY_PATH, STOREPILOT_ASC_KEY_ID, STOREPILOT_ASC_ISSUER_ID, STOREPILOT_ASC_VENDOR_NUMBER

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "storepilot": {
      "command": "uvx",
      "args": [
        "storepilot"
      ],
      "env": {
        "STOREPILOT_GOOGLE_CREDENTIALS": "your-value",
        "STOREPILOT_GOOGLE_REPORTS_BUCKET": "your-value",
        "STOREPILOT_ASC_KEY_PATH": "your-value",
        "STOREPILOT_ASC_KEY_ID": "your-value",
        "STOREPILOT_ASC_ISSUER_ID": "your-value",
        "STOREPILOT_ASC_VENDOR_NUMBER": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add storepilot --env STOREPILOT_GOOGLE_CREDENTIALS=your-value --env STOREPILOT_GOOGLE_REPORTS_BUCKET=your-value --env STOREPILOT_ASC_KEY_PATH=your-value --env STOREPILOT_ASC_KEY_ID=your-value --env STOREPILOT_ASC_ISSUER_ID=your-value --env STOREPILOT_ASC_VENDOR_NUMBER=your-value -- uvx storepilot

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "storepilot": {
      "command": "uvx",
      "args": [
        "storepilot"
      ],
      "env": {
        "STOREPILOT_GOOGLE_CREDENTIALS": "your-value",
        "STOREPILOT_GOOGLE_REPORTS_BUCKET": "your-value",
        "STOREPILOT_ASC_KEY_PATH": "your-value",
        "STOREPILOT_ASC_KEY_ID": "your-value",
        "STOREPILOT_ASC_ISSUER_ID": "your-value",
        "STOREPILOT_ASC_VENDOR_NUMBER": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "storepilot": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "storepilot"
      ],
      "env": {
        "STOREPILOT_GOOGLE_CREDENTIALS": "your-value",
        "STOREPILOT_GOOGLE_REPORTS_BUCKET": "your-value",
        "STOREPILOT_ASC_KEY_PATH": "your-value",
        "STOREPILOT_ASC_KEY_ID": "your-value",
        "STOREPILOT_ASC_ISSUER_ID": "your-value",
        "STOREPILOT_ASC_VENDOR_NUMBER": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • STOREPILOT_GOOGLE_CREDENTIALS 비밀 env
    Path to a Google Cloud service account JSON key with Play Console access. Enables the Google Play tools.
  • STOREPILOT_GOOGLE_REPORTS_BUCKET env
    Play reports bucket id from Play Console -> Download reports -> Copy Cloud Storage URI. Required for installs, ratings and earnings.
  • STOREPILOT_ASC_KEY_PATH 비밀 env
    Path to the App Store Connect API .p8 private key. Enables the App Store tools.
  • STOREPILOT_ASC_KEY_ID env
    App Store Connect API Key ID.
  • STOREPILOT_ASC_ISSUER_ID env
    App Store Connect API Issuer ID.
  • STOREPILOT_ASC_VENDOR_NUMBER env
    Vendor number from App Store Connect -> Payments and Financial Reports. Required only for sales reports.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 sonlenef 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32497개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32497개 중 24%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32497개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Storepilot MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: STOREPILOT_GOOGLE_CREDENTIALS, STOREPILOT_ASC_KEY_PATH

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.1)은 3개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Zoo MCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211어제 업데이트
설치

Zoo MCP

제작자: KittyCAD

An MCP server that provides access to the Zoo API for various CAD operations and tools.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

StorePilot

One MCP server for a whole app portfolio, across Google Play and the App Store.

Ask your assistant:

"Which of my apps has a crash rate above Google's threshold?"

"How much did the portfolio earn last month, per app?"

"Show me every app on both stores: version, rating, installs, revenue, crashes."

"The German description drifted between the two stores — what's different?"

"Ship 3.2.1 to the Play internal track and TestFlight."

Each question above is one tool call covering every app you own, because the tools are portfolio-shaped rather than endpoint-shaped. The last one is two, on purpose: writes preview first and wait for a human.

You need your own developer accounts — a Google Play service account, an App Store Connect API key, or both. StorePilot reads your accounts; it does not scrape public store listings.

Status: early. The read tools have run against real accounts on both

stores; the money and crash-threshold paths have not returned real data yet,

and no write has ever executed against a store. Read

Status and honest limits before trusting a number.


What is actually different

Both stores, one tool set. Google Play via the Android Publisher API, the Play Developer Reporting API and the private Cloud Storage reports bucket; the App Store via App Store Connect. 34 tools total, named consistently.

Installs and earnings, which most tooling cannot reach. Play installs, ratings and earnings have no REST API. They exist only as UTF-16 CSVs in a private Cloud Storage bucket, so most tooling skips them and "how much did this app earn?" simply cannot be answered. StorePilot reads that bucket, resolves CSV columns by name rather than position, and reports earnings per currency without ever summing across currencies. (This path is implemented and fixture-tested but has not yet read a real report — see Status.)

Portfolio-first. portfolio_overview renders every app on both stores in one table. play_portfolio_health scans an entire Play account. Neither takes a package name. Built for indie devs, app factories and agencies.

Cross-store tools. parity_check finds listing and version drift between the two stores. compare_reviews puts both stores' reviews side by side. release_both ships one version to both. metadata_pull / metadata_push use fastlane's own directory layout, so adopting StorePilot never means abandoning fastlane.

Writes are gated. Every write previews first and returns a confirmation token that is HMAC-keyed to the exact operation, single-use, and expires in 10 minutes. Production releases are forced into a staged rollout capped at 20%.

`setup_doctor`. Credential setup here is a multi-step Google Cloud + Play Console + App Store Connect maze with several silent failure modes. One tool checks every step and prints the exact fix.


Install

Requires Python 3.11+.

uvx storepilot          # no install; uv fetches it per run

or install it:

pipx install storepilot   # or: pip install storepilot

Either way you get a storepilot binary. Every client config below wants its absolute path — which storepilot prints it.

Claude Code
claude mcp add storepilot -- storepilot
Claude Desktop / any MCP client

claude_desktop_config.json:

{

"mcpServers": { "storepilot": { "command": "/absolute/path/to/storepilot", "env": { "STOREPILOT_GOOGLE_CREDENTIALS": "/path/to/service-account.json", "STOREPILOT_GOOGLE_REPORTS_BUCKET": "pubsite_prod_rev_0123456789", "STOREPILOT_ASC_KEY_PATH": "/path/to/AuthKey_XXXXXXXXXX.p8", "STOREPILOT_ASC_KEY_ID": "XXXXXXXXXX", "STOREPILOT_ASC_ISSUER_ID": "00000000-0000-0000-0000-000000000000", "STOREPILOT_ASC_VENDOR_NUMBER": "80000000" } } } }

Cursor

Settings → MCP → Add new MCP server, or add to ~/.cursor/mcp.json:

{

"mcpServers": { "storepilot": { "command": "/absolute/path/to/storepilot", "env": { "STOREPILOT_ASC_KEY_PATH": "/path/to/AuthKey_XXXXXXXXXX.p8" } } } }

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.storepilot]

command = "/absolute/path/to/storepilot" env = { STOREPILOT_ASC_KEY_PATH = "/path/to/AuthKey_XXXXXXXXXX.p8" }

Configure only the store you use. Each adapter registers its tools independently, and the cross-store tools register as soon as either store is configured. See .env.example for every variable the code reads.

A .env file also works, but it is read from the process working directory — which is whatever directory your MCP client happened to launch the server from, not the repo. Use it when you run storepilot yourself from the checkout; use the client's env block otherwise.

Credentials are read from the environment and never written anywhere by StorePilot. Keep the service account JSON and the .p8 outside the repo, and chmod 600 both — they are private keys.


Start with setup_doctor

Do not start by calling a data tool and guessing why it returned nothing. Ask your assistant to run setup_doctor first. It checks each credential step independently, so one failure never hides the rest, and every failure carries its own fix.

With nothing configured yet:

StorePilot setup check

============================================================

-- Google Play ---------------------------------------------- [skip] Google Play: not configured Fix: Set STOREPILOT_GOOGLE_CREDENTIALS to the path of a service account JSON key. Full setup: create a Google Cloud project, enable the Android Publisher and Play Developer Reporting APIs, create a service account, download its JSON key, then invite the service account email in Play Console -> Users and permissions. Docs: https://developers.google.com/android-publisher/getting_started

-- App Store Connect ---------------------------------------- [fail] ASC credentials: App Store Connect is not configured: STOREPILOT_ASC_KEY_PATH, STOREPILOT_ASC_KEY_ID, STOREPILOT_ASC_ISSUER_ID unset. Fix: In App Store Connect go to Users and Access -> Integrations -> App Store Connect API, create a team key with the Admin or App Manager role, and download the .p8 file (Apple lets you download it exactly once). Then set STOREPILOT_ASC_KEY_PATH to that file, STOREPILOT_ASC_KEY_ID to the Key ID column, and STOREPILOT_ASC_ISSUER_ID to the Issuer ID shown above the key table. Sales reports additionally need STOREPILOT_ASC_VENDOR_NUMBER from Payments and Financial Reports. Docs: https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api [skip] ASC token: cannot test until the credentials load Fix: Fix the step above, then re-run setup_doctor. [skip] ASC API reachable: cannot test until the credentials load Fix: Fix the step above, then re-run setup_doctor. [skip] ASC sales access: cannot test until the credentials load Fix: Fix the step above, then re-run setup_doctor.

============================================================ Summary: 1 fail, 4 skip Resolve the [fail] items above, then run setup_doctor again.

It also catches the failure that looks like success: without the Reply to reviews permission, Play's reviews API returns HTTP 200 and an empty list rather than an error, so "this app has no reviews" and "you lack a permission" are the same response. setup_doctor reports that ambiguity as its own diagnosis instead of guessing.

Full walkthrough for both stores: [docs/SETUP.md](docs/SETUP.md).


Tools

34 tools. Full arguments, return shapes and per-tool limitations in [docs/TOOLS.md](docs/TOOLS.md).

Google Play — read
ToolWhat it answers
play_list_appsWhich packages can this install reach?
play_get_vitalsCrash and ANR (Application Not Responding) rates vs Google's 1.09% / 0.47% thresholds
play_get_anomaliesWhat did Google's own anomaly detection flag?
play_get_statsInstalls and ratings for a month (GCS bucket)
play_get_earningsEarnings for a month, per currency (GCS bucket)
play_list_reviewsRecent production reviews, filterable by star rating
play_portfolio_healthVitals + rating + installs for every app, one table
Google Play — write (all gated)
ToolWhat it does
play_upload_bundleUpload an .aab and release it on a track
play_create_releaseRelease already-uploaded version codes
play_promote_releaseMove a build between tracks (beta → production)
play_expand_rolloutWiden a staged rollout — the only path to 100%
play_halt_rolloutStop a rollout immediately, no confirmation step
play_reply_reviewPublish a public developer reply
play_update_listingOverwrite listing copy for one locale
App Store Connect
ToolWhat it does
asc_list_appsApps visible to the key, with Apple IDs
asc_list_buildsTestFlight builds and their three review states
asc_list_reviewsCustomer reviews, filterable, full history
asc_list_versionsVersions, review state, phased-release day
asc_get_salesSales and proceeds, cached hard
asc_get_analyticsApp Analytics via Apple's async reports chain
asc_upload_buildReturns Transporter instructions — no API can upload
asc_reply_reviewPublic developer response (gated)
asc_update_metadataListing copy on the editable version (gated)
asc_submit_for_reviewSubmit to App Review after a precheck (gated)
Cross-store
ToolWhat it does
portfolio_overviewEvery app on both stores in one table
compare_reviewsBoth stores' reviews for one app, side by side
parity_checkVersion and listing drift between the stores
release_bothOne version to Play and TestFlight, one token (gated)
metadata_pullStore copy → fastlane-layout local tree
metadata_pushLocal tree → both stores (gated)
list_app_pairsShow the pairing registry
suggest_app_pairsPropose pairings from bundle-id and name evidence
pair_appsWrite one pairing into the registry

Plus setup_doctor.

Nothing in either API says a Play package and an Apple ID are the same product, so the pairing lives in ~/.storepilot/apps.toml. Run suggest_app_pairs, then pair_apps for the proposals you agree with. A proposal is inert until written — a wrong pair would attribute one app's revenue, reviews and crash rate to another, and nothing downstream would look wrong.


The safety model

Every write is two calls. The first returns a preview and a token; the second carries that token back.

The preview is the actual safety mechanism: it renders into the chat, where a human can read "that is the wrong app" or "that is the production track". Play previews are not estimates — the operation runs for real inside a throwaway Play edit that is validated and then deleted, so the preview reports the version code Google actually assigned and any error Google would actually raise.

The token exists only to prevent drift between the preview and the confirmation. It is an HMAC over a canonical fingerprint of the operation, keyed with a per-install secret kept out of tool output, single-use, and valid for 10 minutes. A plain content hash would be computable by the model itself, letting it self-confirm without ever rendering the

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기