# Expo MCP connector

The Expo connector brings builds, workflows, documentation, TestFlight feedback and app store reviews into Claude, ChatGPT, Cursor and the Elaichi Agent, so each person works with Expo inside their own access and every action is logged.

Source: https://elaichi.ai/connectors/expo/

## Facts

| | |
| --- | --- |
| Application | Expo |
| Category | Application Development |
| AI tools | 25 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. Expo builds and runs this MCP server. Elaichi adds sign-in, access controls and an audit log on top |
| Support for its tools | expo.dev/contact |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Expo is connected

- Why did the latest iOS build fail?
- Summarize this week's App Store reviews and draft replies.
- Which TestFlight crashes showed up after yesterday's build?

## Connect Expo in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Expo.
2. Optionally set Share with, then press Connect.
3. Approve it in Expo. Expo's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Expo tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Expo MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Expo MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Expo MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Expo to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Expo tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Expo through Elaichi

### Find out why a build failed

Mobile engineering. Ask for the latest failed Expo build and read its logs in plain language, then start a new build once the fix is in.

### Ship a release without opening a terminal

Release. Run the release workflow, watch its progress, and submit the finished build to TestFlight and Google Play from the same conversation.

### Triage crashes before the standup

QA. Pull this week's TestFlight and Play Store crashes, group them by screen, and turn the worst ones into tickets.

### Answer app store reviews in bulk

Support. Read new App Store and Play Store reviews, draft replies in your own voice, and post them. If a reply went out wrong, remove it.

### Summarize what testers are saying

Product. Gather TestFlight feedback and store reviews from the last sprint and summarize the recurring requests and complaints.

### Look up Expo docs while you work

Engineering. Search Expo's documentation from Cursor, get a plain answer, and add the library you need to the project without switching windows.

## Elaichi vs Zapier MCP vs Composio for Expo

All three can connect Expo to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Expo tools | Allow or restrict single Expo tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Expo call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Expo to Claude?

Connect Expo in Elaichi first: pick Expo from the catalog and sign in with your Expo account over OAuth, the same way you sign in to the Expo website. There is no OAuth application to register and no client ID or secret to generate. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Claude asks you to sign in to Elaichi once, and Expo appears.

### Does Expo work with ChatGPT and Cursor as well as Claude?

Yes. Once Expo is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Expo once and every client picks it up.

### What can an AI agent actually do with my Expo data?

With Expo connected, an agent can list your builds and read their logs, start or cancel a build, submit one to the stores, and run, check or cancel a workflow. It can also pull TestFlight crashes and feedback, read App Store and Play Store reviews and crashes, post or remove a reply to a review, and search Expo's documentation. Short, concrete asks like "why did the last iOS build fail" work better than long paragraphs.

### Does connecting Expo give the AI access to every project and account?

No. Everything an agent does in Expo runs as the person who signed in, so it sees only the projects, builds and store listings that person's Expo account can already see. Elaichi can narrow that further with restrictions, but it never widens it beyond what Expo itself allows.

### Can my team share one Expo connection?

Yes. One person connects Expo in Elaichi and shares the connection with a team, and nobody else ever handles an Expo credential. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who canceled a build or replied to a review, not the account owner.

### Can I stop an agent from deleting or changing things in Expo?

Yes. Restrictions in Elaichi apply per action, so you can allow reading Expo builds and reviews while blocking cancels, submissions or review replies. A restricted action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt can reach it.

### What happens to an Expo connection when someone leaves?

Offboarding a person in Elaichi ends their access to Expo through every client at once. If they connected a shared Expo account, the connection keeps working for everyone else on the team. Disconnecting Expo once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

### Does the Expo MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Expo is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Expo?

Yes. Both let Claude, ChatGPT or Cursor use Expo. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Expo call.

### How is Elaichi different from Composio for Expo?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Expo: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 25 Expo tools

Every tool below is callable through https://api.elaichi.ai/mcp once Expo is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Add library** (Add). Add an Expo library to the project using expo install and attach usage instructions when available.
- **Read documentation** (Action). Fetch a single Expo documentation page and return its content as markdown. Returns up to ~5000 tokens per call. Use offset to paginate through long pages.
- **Search documentation** (Search). Search the official Expo documentation and return page URLs ranked by relevance for a user query. Use read_documentation to fetch the full content of specific pages, starting from the top.
- **Learn** (Action). Learn Expo how-to for a specific topic and remember it for future conversations. Use this to teach the assistant about specific Expo features or workflows.
- **Workflow create** (Create). Creates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation. Use this when users want to create CI/CD workflows in .eas/workflows/ or need to learn EAS workflow syntax. After creating, use workflow_validate to validate the file.
- **Workflow info** (Action). Fetches detailed information about a specific EAS workflow run by ID. Use this to check the status, job results, errors, and artifacts of a workflow run. If workflow has multiple jobs, draw them in a diagram to show the dependencies between jobs.
- **Workflow list** (List). Lists recent EAS workflow runs for a project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
- **Workflow logs** (Action). Fetches logs for a specific job in an EAS workflow run. Call without sectionIndex or phase to get a summary of log sections (phase names and line ranges); then call again with sectionIndex or phase to fetch that section.
- **Workflow run** (Run). Triggers an EAS workflow run from a git reference. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app"). The workflow file must exist at the specified git reference.
- **Workflow cancel** (Cancel). Cancels a running EAS workflow. Use workflow_info to get the workflow run ID.
- **Workflow validate** (Validate). Validates EAS workflow YAML syntax and configuration. Use this after creating a workflow to ensure it is valid. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
- **Build list** (List). Lists EAS builds for a project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app"). Use this to see recent builds, their status, and available artifacts.
- **Build info** (Action). Fetches the status and detailed information about a specific EAS build by ID. Use this to check build status, errors, artifacts, and other details.
- **Build logs** (Action). Fetches the logs for a specific EAS build. The build must be completed (finished or errored) to have logs available.
- **Build submit** (Action). Submits an EAS build to the app store (Google Play Store for Android, App Store for iOS). The build must be a finished build with the appropriate distribution type. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
- **Build run** (Run). Triggers a new EAS build using a build profile from eas.json. Requires a GitHub repository to be connected to the project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
- **Build cancel** (Cancel). Cancels an EAS build that is queued or in progress. Use build_info to check the current status first.
- **Testflight crashes** (Action). Fetch TestFlight crash data. Without crashId, lists recent crashes. With crashId, returns the full crash log with stack trace.
- **Testflight feedback** (Action). Fetch screenshot feedback from TestFlight. Returns feedback metadata including device info, user comments, and screenshot URLs.
- **Appstore reviews** (Action). Fetch public App Store customer reviews for an app (rating, title, body, reviewer, territory). For TestFlight beta feedback use testflight_feedback instead.
- **Appstore reply review** (Reply). Post or edit the public developer response to an App Store customer review. This is a write action: the response is visible to everyone on the App Store, and Apple publishes it after a short review. App Store Connect allows a single response per review, so any existing…
- **Appstore delete review response** (Delete). Delete the public developer response on an App Store customer review. This is a write action: it removes the response from the App Store. No-op-safe — if the review has no response, it reports that nothing was deleted.
- **Playstore crashes** (Action). Fetch crash and ANR data from Google Play (Android Vitals). Without issueId, lists recent crash/ANR issues. With issueId, returns the full error report with stack trace.
- **Playstore reviews** (Action). Fetch user reviews from Google Play. Returns review metadata including author, star rating, device info, and comment text. Note: Google Play only exposes production reviews with text from approximately the last week.
- **Playstore reply review** (Reply). Post a public developer reply to a Google Play user review, or edit the existing reply. This is a write action: the reply is visible to users on the store listing. Each review has a single developer reply, so replying again replaces it. Reply text is limited to 350 characters.
