Stack · Mobile engineering

Mobile app desk

Runs a React Native or Expo app on a simulator, reads what it is doing, and takes it through an SDK upgrade and a store release.

Built for: The small team shipping one app to two stores, where the person who wrote the screen is also the person who tests it on a phone.

Install all 11 parts

The button opens the checkout, where the 4 servers and 7 skills are listed one by one. Every member is free, so the checkout lists them and asks for no card.

$0/mo
every member is free — 4 servers and 7 skills
$0
the free-tier version keeps 4 servers and 7 skills — and all 47 tools
$0
7 skills with no monthly cost
101.5k
tokens if every skill file is read in full — a skill loads its description first and the rest only when used
01 · Outcome

What your agent can do with this

The reason to buy a stack rather than five listings: each line below needs more than one member connected at the same time.

  1. 01

    Run a flow on an iOS simulator or Android emulator through agent-device and keep the screenshots, instead of describing what the screen ought to do.

  2. 02

    Read Metro's console, network requests and component tree while a screen misbehaves, without adding debug code to the app.

  3. 03

    Move the app to a new Expo SDK or React Native version with the vendors' own upgrade guides, then write the component test that proves the screen still renders.

  4. 04

    Pull the App Store reviews of the version that just shipped and the crash reports TestFlight testers sent for its build, and put them next to the performance checklist.

02 · Assembly

The assembly, part by part

What each part contributes, and why it was picked over the obvious alternative. Prices and permissions are read from the listings, so nothing here can disagree with the catalogue.

4 servers7 skills47 tools
EX01
Expo MCP server Security & Testing by expo

Expo's own local server, pointed at the dev server your app is already running on: app logs, screenshots, taps and the DevTools, from the project the simulator is showing.

6 readread-onlyruns on your machine A v0.2.4 credential not declared · runs locally
Free
$0 of the monthly total
AG02

Callstack's device automation for iOS simulators, Android emulators and physical devices, so a flow is tapped through on the device rather than described.

1 readread-onlyruns on your machine A v0.21.27 · updated 2 days ago credential not declared · runs locally
Free
$0 of the monthly total
ME03

Attaches to Metro over the Chrome DevTools Protocol and reads console output, network requests, the component tree and Redux state without changes to the app code.

read/write split not recordedruns on your machine B v0.15.0 · updated 6 weeks ago credential not declared · runs locally
Free
$0 of the monthly total
AP04

App Store Connect's API: customer reviews, TestFlight crash reports, analytics reports and Xcode Cloud builds — where a build is judged before and after it ships.

33 read7 writeruns on your machine A v0.3.0 API key · runs locally
Free
$0 of the monthly total
and the instructions that drive them A skill is a prompt file, not a server: it adds context and a procedure, never a tool or a permission of its own.
EX05
Expo Router Navigation Agent skill by expo

File-based routes, native stacks, tabs and modals in Expo Router, written the way the Expo team documents them.

12.6k tokens when loaded in full write access not declared 8 files · MIT v1.0.1 needs no server of its own
Free
no monthly cost
EX06
Expo Upgrade Agent skill by expo

Moves the project to a new Expo SDK and sorts out the dependency conflicts that follow — the upgrade most teams keep postponing.

7.4k tokens when loaded in full write access not declared 9 files · MIT v1.0.0 needs no server of its own
Free
no monthly cost
UP07
Upgrading React Native Agent skill by callstackincubator

For bare React Native: applies the template diff and carries the iOS and Android configuration, CocoaPods and Gradle changes with it.

6k tokens when loaded in full write access not declared 9 files · MIT needs no server of its own
Free
no monthly cost
RE08
React Native Best Practices Agent skill by callstackincubator

Callstack's performance guidance — dropped frames, start-up time, bundle size, re-renders — for the review before a release rather than after the one-star ratings.

45k tokens when loaded in full write access not declared 31 files · MIT needs no server of its own
Free
no monthly cost
RN09
RNTL Test Writing Guide Agent skill by callstackincubator

Component tests with React Native Testing Library, so a fixed bug leaves a test that renders the screen instead of a note in the ticket.

13.3k tokens when loaded in full write access not declared 4 files · MIT needs no server of its own
Free
no monthly cost
DO10
Dogfood (agent-device) Agent skill by callstackincubator

An exploratory pass over the app on a device through agent-device that ends in a report with reproducible steps and screenshots.

2.9k tokens when loaded in full write access not declared 3 files · MIT needs no server of its own
Free
no monthly cost
AP11
App Store Deployment Agent skill by expo

Build and submit to TestFlight, the App Store and Google Play with EAS — eas.json, signing, build numbers. EAS is a paid Expo service, and the skill says so.

14.3k tokens when loaded in full write access not declared 8 files · MIT v1.1.0 needs no server of its own
Free
no monthly cost
03 · Cost

What it costs, and on what assumption

Every member is free, so the monthly figure is $0 whatever you do with the stack: nothing here is billed by the call, and only adding a paid member could change it.

PartWhat you are paying forMonthly, as quoted
Expo Free —
Agent Device Free —
Metro Free —
App Store Connect Free —
Skills
Expo Router Navigation Free · context cost only —
Expo Upgrade Free · context cost only —
Upgrading React Native Free · context cost only —
React Native Best Practices Free · context cost only —
RNTL Test Writing Guide Free · context cost only —
Dogfood (agent-device) Free · context cost only —
App Store Deployment Free · context cost only —
Everything above $0 of servers plus $0 of skills, the same in a quiet month and a busy one $0/mo

Subscriptions at their monthly plan price; one-off licences spread over 12 months.

What moves the bill
Flat every month$0 · 0 subscriptions
Carries a call allowancenothing
Paid oncenothing
Traffic assumed5k calls / month

Nothing in this stack carries a call allowance, so nothing here can run out before the month does. The bill is decided when you install it, not when you use it.

The spend cap is one figure for the whole account, set in your dashboard and checked when an order is placed. On the call path what stops a retry loop is the plan's call allowance and its rate limit, and a refused call is never billed.

04 · Setup

Setting it up, in order

The steps below come before the install lines: what to decide and scope before connecting anything, in the order it matters. The lines themselves follow, part by part, for the client you pick.

1
Start the dev server first
The Expo member is pointed at http://localhost:8081. Run npx expo start in the project before the client connects, or the server has nothing to talk to.
2
Install the platform toolchains
Xcode for the iOS simulator and the Android SDK for the emulator. agent-device drives what is installed; it does not install either.
3
Create an App Store Connect key
APP_STORE_KEY_ID, APP_STORE_ISSUER_ID and APP_STORE_PRIVATE_KEY_PATH for an API key whose role only reads what this desk needs.
4
Install the skills last
The testing and dogfooding skills expect the device and Metro servers to be connected; installed first, they describe steps nothing can run yet.
Install, part by part11 parts of 11 in Claude Code

npx mcprush@latest stack add mobile-desk writes all 4 servers into Claude Code’s config in one go — or run the lines below one by one. The 7 skills are not included — add them with lines 05–11.

Keys you’ll need
App Store Connect
APP_STORE_KEY_ID — App Store Connect API Key ID
APP_STORE_ISSUER_ID — App Store Connect Issuer ID
APP_STORE_PRIVATE_KEY_PATH — Path to the .p8 private key file for App Store Connect authentication

Set them where you start Claude Code — export APP_STORE_KEY_ID=… in your shell profile on macOS and Linux, setx APP_STORE_KEY_ID "…" on Windows, then open a new terminal. Claude Code reads them at start; the config keeps only the names.

# 01 · Expo claude mcp add --scope user expo-mcp '--' npx -y expo-mcp --dev-server-url http://localhost:8081 # 02 · Agent Device claude mcp add --scope user agent-device-mcp '--' npx -y agent-device mcp # 03 · Metro claude mcp add --scope user metro-mcp '--' npx -y metro-mcp # 04 · App Store Connect claude mcp add --scope user --env 'APP_STORE_KEY_ID=${APP_STORE_KEY_ID}' --env 'APP_STORE_ISSUER_ID=${APP_STORE_ISSUER_ID}' --env 'APP_STORE_PRIVATE_KEY_PATH=${APP_STORE_PRIVATE_KEY_PATH}' --transport stdio gjeltep-app-store-connect-mcp '--' uvx --with 'mcp<2' app-store-connect-mcp # 05 · Expo Router Navigation npx mcprush@latest skill add expo/expo-router-navigation # 06 · Expo Upgrade npx mcprush@latest skill add expo/expo-upgrade # 07 · Upgrading React Native npx mcprush@latest skill add callstackincubator/upgrading-react-native # 08 · React Native Best Practices npx mcprush@latest skill add callstackincubator/react-native-best-practices # 09 · RNTL Test Writing Guide npx mcprush@latest skill add callstackincubator/rntl-test-writing-guide # 10 · Dogfood (agent-device) npx mcprush@latest skill add callstackincubator/dogfood-agent-device # 11 · App Store Deployment npx mcprush@latest skill add expo/app-store-deployment
Requirements and Windows tips
  • Node.js — the current LTS (24) is the safe choice (for npx).
  • uv (for uvx, docs.astral.sh/uv).
  • Windows PowerShell says 'running scripts is disabled on this system'? Run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned once, or type npx.cmd instead of npx (codex.cmd, gemini.cmd, grok.cmd likewise). PowerShell 7 needs neither.

Nothing is connected until you approve it in Claude Code. mcprush is not in the path and meters nothing here.

Before you start
  • 1 member wants an API key, set in your own client’s config on your machine — this marketplace never holds it.
  • 3 members have not declared what credential they need — check each one’s own page before you start.
  • What this stack can write is not recorded — 1 member of 4 has no imported tool surface. Section 05 says what is known before you approve anything.
  • 4 members are connected straight from their own package or address — nothing in them goes through mcprush.
05 · Permissions

What the whole stack can reach

Installed together, these tool surfaces add up. It is the first thing a security reviewer asks for, so what has been counted — and what nobody has counted yet — is on the page rather than in a PDF.

—
tools that only read
Which tools read and which write is counted from the surface a publisher imports, and 1 member of 4 has no imported tool surface.
—
tools that can change something
Not recorded, and not estimated: a total added up from the members that have a surface would be read as the whole stack’s. The table below is what is known, member by member.
0
tools that reach the network
47 of the 47 never leave your machine — they belong to the local members.
Who grants the write accessnot recorded
MemberTool surfaceWrite tools
App Store Connect imported 7
Metro not imported not recorded
Reading the number

A stack's blast radius is the union of its members, not the worst of them. That union cannot be taken here, because 1 member of 4 has no imported tool surface — so the figure a review asks for is missing rather than low, and a member marked not imported is one nobody has counted rather than one that cannot write.

Tools in total47
Write sharenot recorded
Members that can writeat least 1 of 4
Surface imported3 of 4 members
06 · Swaps

Sensible swaps

A stack is a default, not a verdict. These are the substitutions the maintainer would make, and what each one costs or saves.

A team whose device tests already live in Appium keeps them there: Appium's own server drives iOS and Android sessions and helps write the tests, instead of a second automation layer.

same money at 5k calls 33 tools instead of 1 both grade A
07 · Limits

Where this stack stops

Written by the maintainer, kept on the page rather than in a support thread.

  • It does not press the release button. Store submission goes through EAS or App Store Connect with your own account and signing credentials, and a person decides when it ships.

  • The iOS side needs a Mac with Xcode and a simulator; on Linux or Windows this desk covers Android and the JavaScript side only.

  • It does not see crashes from App Store users. The App Store Connect member reads customer reviews and the crash reports TestFlight testers submit; crashes in production need a crash reporter inside the app.

08 · Maintenance

Who keeps this current

A stack has an owner: whoever keeps it re-checks the combination when a member changes, and the members themselves are published by the people named on each row.

Maintainer
mcprush
The marketplace’s own editors — keep 40 stacks here
Version
—
Not versioned — the curator edits in place
Scanned members
4 of 4
Servers in it that carry a scan grade for the release they serve.
Member trust score
85–96
Lowest to highest client score of its 4 scanned servers, out of 100.
Composition
4 + 7
4 servers, 7 skills
Nearby

Other ready-made stacks

All 40 stacks