Expo MCP Server

Expo's hosted MCP server for Expo docs, EAS builds and workflows, store data and a running app

Official · expo.dev Remote (hosted) · Streamable HTTP Developer toolsDevOps and monitoringTesting

40 popularity score

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude Codeterminal
claude mcp add --transport http expo https://mcp.expo.dev/mcp
Claude (desktop and web)Settings → Connectors → Add custom connector
https://mcp.expo.dev/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "expo": {
      "url": "https://mcp.expo.dev/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "expo": {
      "type": "http",
      "url": "https://mcp.expo.dev/mcp"
    }
  }
}
Codexterminal
codex mcp add expo --url https://mcp.expo.dev/mcp

What it does

Expo MCP Server is a remote server run by Expo at https://mcp.expo.dev/mcp, reached over Streamable HTTP and signed into with an Expo account through OAuth. Nothing is installed to use its server-side tools: an assistant can search and read the current Expo documentation, add Expo libraries at versions known to fit the project, and work with EAS: list, start, cancel and submit builds, read build logs, and create, validate, run and inspect EAS workflows.

It also reaches store data linked to the Expo project: TestFlight crashes and screenshot feedback, App Store reviews, and Google Play crashes, ANRs and reviews. Several of these tools post, edit or delete public developer replies to store reviews, so it acts as well as reads.

A second set of local tools appears when the project has the expo-mcp package (0.2.4 on npm at the time of writing) as a dev dependency and the dev server is started with EXPO_UNSTABLE_MCP_SERVER=1. These take screenshots of the app in a simulator or emulator, tap by coordinates or React Native testID, find views, collect native and JavaScript logs, open React Native DevTools and list Expo Router routes. Their data passes from the dev server through Expo's server to the client.

The endpoint's sign-in metadata (/.well-known/oauth-protected-resource) names mcp.expo.dev itself as the authorization server and a single scope, mcp:access, for all methods; there are no per-tool scopes to grant.

What it needs

An Expo account, signed in through OAuth in the browser when the client asks. An Expo project on the latest SDK. A client with remote MCP support; Claude Code users run /mcp to finish sign-in, Codex users run `codex mcp login expo`. Local tools need SDK 54 or later, `npx expo install expo-mcp --dev`, the Expo CLI logged in with the same account (`npx expo login`), and the dev server started with `EXPO_UNSTABLE_MCP_SERVER=1 npx expo start`. iOS local tools need macOS and a simulator. search_documentation is marked as needing an EAS paid plan; build_run needs a GitHub repository connected to the project.

Limits

The local tools handle one development server connection at a time; iOS local tools work only with simulators on macOS hosts, not physical devices. The client must reconnect after the dev server starts or stops to see the local tools. The tool list in the docs is called a reference that may be out of date. read_documentation returns about 5000 tokens per call, paginated with offset. build_logs works only on finished or errored builds. Google Play replies are capped at 350 characters and Google Play exposes only about the last week of production reviews with text. The local mode's switch is named EXPO_UNSTABLE_MCP_SERVER.

Who it suits

Suits developers building with Expo and EAS who want an assistant to look up current Expo docs, chase failed builds and workflows, or check the UI of a running app in a simulator. It is official and hosted, so there is nothing to run apart from the optional dev-server package, but every call goes through Expo's servers and needs an Expo account. Its write tools can start builds, submit builds to the stores and post public review replies, so teams that want read-only access should limit which tools their client allows. Not useful for React Native projects that do not use Expo, or for testing on physical iOS devices.

Tools 31

add_library
Installs an Expo library with expo install and adds usage notes
read_documentation
Returns one Expo docs page as markdown, paginated
search_documentation
Searches the Expo docs and returns ranked page links
learn
Fetches how-to guidance on an Expo topic for later use
workflow_create
Writes a new EAS workflow YAML file or returns workflow syntax
workflow_info
Shows status, jobs, errors and artifacts of a workflow run
workflow_list
Lists recent EAS workflow runs for a project
workflow_logs
Returns log sections for a job in a workflow run
workflow_run
Starts an EAS workflow run from a git reference
workflow_cancel
Cancels a running EAS workflow
workflow_validate
Checks an EAS workflow file's syntax and configuration
build_list
Lists EAS builds with status and artifacts
build_info
Shows details and errors of one EAS build
build_logs
Returns logs of a finished or errored EAS build
build_submit
Submits a finished build to the App Store or Google Play
build_run
Starts a new EAS build from an eas.json profile
build_cancel
Cancels a queued or running EAS build
testflight_crashes
Lists TestFlight crashes or returns one crash log
testflight_feedback
Returns TestFlight screenshot feedback with device details
appstore_reviews
Returns public App Store customer reviews
appstore_reply_review
Posts or replaces the public reply to an App Store review
appstore_delete_review_response
Removes the public reply from an App Store review
playstore_crashes
Lists Google Play crash and ANR issues or returns one report
playstore_reviews
Returns recent Google Play user reviews
playstore_reply_review
Posts or replaces the public reply to a Google Play review
expo_router_sitemap
Lists the routes of the local Expo Router project (local)
open_devtools
Opens React Native DevTools for the running app (local)
collect_app_logs
Gathers native and JavaScript logs over a short window (local)
automation_tap
Taps the running app by coordinates or testID (local)
automation_take_screenshot
Captures the screen or one view of the running app (local)
automation_find_view
Returns position, size and visibility of a view by testID (local)

Similar servers