Expo MCP Server: Setup, Tools & Real Limits
Expo's first-party MCP server is worth using for live Expo and EAS context, but its write tools and still-experimental local bridge demand tighter controls than the quick-start suggests.

Expo MCP is Expo's official remote server for connecting an AI coding agent to current documentation, EAS operations, app-store data, and a local project. Use it for investigation and supervised development, not unattended releases: its tools can start paid builds, cancel jobs, submit binaries, and publish public review replies.
Table of contents
- What Expo MCP actually is
- What exists today
- How to set up Expo MCP
- Tools you get
- Permissions and blast radius
- Real limits
- When not to use it
What Expo MCP actually is
Expo MCP gives an MCP-compatible agent a structured route into Expo's documentation and services. It does not add an AI model to Expo or replace source control and testing.
An agent can read current Expo docs, install an SDK-compatible library, inspect EAS builds and workflows, retrieve store crash data, and perform selected writes. With the local bridge, it can inspect routes, collect logs, open React Native DevTools, find a view by testID, tap it, and capture a simulator screenshot. Expo's official overview distinguishes server-side from local capabilities.
Remote access answers “why did the build fail?” Local access answers “did the button render and respond?” MCP Directory's capability guide explains how tools differ from prompts and resources. My view: use Expo MCP to gather evidence; keep the agent and CI responsible for the engineering process.
What exists today
Expo provides a first-party remote server at https://mcp.expo.dev/mcp. You do not need an unknown community server to reach Expo or EAS.
The official setup has two parts:
- The hosted Streamable HTTP server provides documentation, EAS, TestFlight, App Store, and Google Play tools.
- The official
expo-mcpdevelopment dependency adds local logs, screenshots, taps, DevTools, and route inspection.
Expo warns that capabilities can change with package or server updates, and local mode uses an environment flag containing UNSTABLE. I would use hosted read tools with a team, but keep local automation in development and confirm consequential writes. Expo's AI agents overview explains how MCP, Expo Skills, and project context work together.
Community tools are complementary when you need physical-device coverage or richer profiling. Expo documents Callstack's agent-device as a separate third-party toolkit. For discovery beyond this integration, see our best MCP servers guide.
How to set up Expo MCP
Setup is a remote OAuth connection followed by an optional local package. Verify harmless read access before exposing a simulator.
Prerequisites
You need an Expo account, a current Expo project, and a client supporting remote MCP over Streamable HTTP. Local capabilities require SDK 54 or later.
Use the client's add-server workflow. The MCP Directory config generator can locate the right format, but the authoritative values are the remote URL, Streamable HTTP, and OAuth. Client schemas differ, so a generic mcpServers block may be wrong.
Remote connection and authentication
Connect the URL, complete browser authentication, and test a documentation read. Expo documents these commands:
claude mcp add --transport http expo https://mcp.expo.dev/mcp
codex mcp add expo --url https://mcp.expo.dev/mcp
Claude Code users then run /mcp; Codex prompts for authentication. In VS Code, choose MCP: Add Server, HTTP, and name the URL expo. The Expo setup page says browser sign-in creates the access token. It documents no user-selectable MCP OAuth scopes, so the account role is the practical least-privilege boundary.
Optional local capabilities
Local mode needs the official package, a matching Expo CLI login, and Expo's feature flag. Run:
npx expo install expo-mcp --dev
npx expo whoami || npx expo login
EXPO_UNSTABLE_MCP_SERVER=1 npx expo start
Both sessions must use the same Expo account. Reconnect the MCP client whenever the development server starts or stops; otherwise screenshot or tap tools may appear missing.

Tools you get
Expo MCP exposes read and write tools based on your plan and whether local mode runs. These are confirmed names from Expo's current capability reference.
| Tool name | What it does | Risk |
|---|---|---|
read_documentation | Returns one docs page as Markdown, with pagination | Read |
search_documentation | Finds official docs URLs; paid EAS plan required | Read |
add_library | Installs a library with expo install | Project write |
build_list, build_info, build_logs | Lists, inspects, or retrieves completed build logs | Read |
build_run, build_cancel, build_submit | Starts, cancels, or submits a build | Cost/release |
workflow_list, workflow_info, workflow_logs | Inspects workflow runs and logs | Read |
workflow_create, workflow_validate, workflow_run, workflow_cancel | Creates or validates YAML and controls runs | Files/CI |
testflight_crashes, testflight_feedback | Reads crashes and screenshot feedback | Sensitive read |
appstore_reply_review, playstore_reply_review | Publishes or replaces a public reply | Public write |
collect_app_logs, open_devtools | Collects logs or opens DevTools | Local read |
automation_find_view, automation_tap, automation_take_screenshot | Finds, interacts with, or captures the app | Local action |
The list also includes store reviews, Google Play crash/ANR data, App Store response deletion, and an Expo Router sitemap. Inspect the tools your client reports because the catalog can change.
Permissions and blast radius
Use a dedicated Expo organization member with the lowest workable role. Do not authenticate as an Owner for routine troubleshooting.
Expo says a personal access token acts across every personal account and organization its user can access. Organization roles are the useful control: Viewer cannot modify projects; Developer can create builds, release updates, and manage credentials; Admin and Owner can do more. Expo's programmatic-access documentation says tokens should be treated like passwords.
My default is a dedicated Developer in a non-production organization with client-side approval. Try Viewer for inspection. Keep production submissions and store replies in a separate manual session. A careless call can consume build credit, cancel a release, submit a binary, replace a public response, or send screenshots and logs through Expo.
Expo says it neither trains on MCP data nor runs the model, but it proxies local captures to the client. The client and model provider apply their own retention rules, so review them for sensitive workloads as Expo's privacy notes advise.
Real limits
Expo MCP is bounded by model context, backing services, platforms, and a changing catalog. It cannot make an agent deterministic or EAS unlimited.
read_documentation returns about 5,000 tokens per call and uses offset pagination. Build and workflow logs favor summary-first, section-by-section retrieval. Agents can miss evidence outside the fetched slice, so request specific failing phases rather than every log.
Expo publishes no separate requests-per-minute quota on its MCP setup page. Treat throttling as unspecified and expect underlying limits: EAS Build caps pending builds at 50 per platform per account and cancels jobs over two hours, according to its build limitations. Paid usage can incur overages, and documentation search plus build/workflow tools require a paid EAS plan.
Hard functional gaps include:
- Only one local development-server connection at a time.
- Local iOS support requires macOS and a simulator, not a physical iPhone.
build_logsworks only for finished or errored builds.build_runrequires a connected GitHub repository.- Google Play exposes roughly one week of recent production reviews with text.
- Coordinate taps and screenshots are not semantic test guarantees; prefer stable
testIDvalues.
When not to use it
Skip Expo MCP when static instructions, a deterministic CLI command, or repeatable CI can work with less authority. Use it when an agent must choose among live data or inspect a running app.
For SDK patterns and upgrades, Expo Skills plus project context may be enough without EAS or store access. For a fixed release pipeline, use reviewed workflow YAML and the EAS CLI instead of model-selected steps; Expo's EAS CLI reference is the source for scripts.
I would avoid local Expo MCP automation for cross-platform device QA because iOS is simulator-only and the bridge is single-server. A device framework better fits physical-device testing and deterministic artifacts. Browse MCP Directory's official collection when first-party maintenance is mandatory, but do not grant release authority based on an official badge. Use Expo MCP for scoped investigation and supervised changes; keep billing, submissions, and public communication under human review.