Course contents
Expo's tools for coding agents
Connect Codex to Expo's MCP server and skills so it reads current Expo docs, checks builds, and screenshots your running app instead of guessing.
Models learn Expo from training data that's months or years old, and Expo changes every few months. Expo's own docs index for agents opens with a warning: “AI models and LLMs frequently provide outdated information about Expo.” As of November 2026, Expo ships several tools that give an agent current knowledge and real eyes on your app. This lesson wires them into Codex.
What Expo ships for agents
| Tool | What it gives Codex | How to add it |
|---|---|---|
| Expo MCP Server | Tools to search and read Expo docs, inspect and trigger EAS builds and workflows, read TestFlight crashes and feedback | Hosted at https://mcp.expo.dev/mcp; free on every Expo plan since May 2026, with a monthly usage allowance |
| Local capabilities | Screenshots of your running app, taps and typing by testID, finding views, opening DevTools | npx expo install expo-mcp --dev, then start the dev server with EXPO_UNSTABLE_MCP_SERVER=1 (SDK 54 and later) |
| Expo Skills | Expo-specific instructions that load when a task needs them, such as routing, native UI, upgrades and store submission | The expo plugin for Codex, or npx skills add expo/skills for skills only |
@expo/agent-cli | An experimental CLI built for agents on top of Expo CLI, EAS CLI and expo-doctor | npx @expo/agent-cli@latest agents:setup |
| Docs as Markdown | Every docs page as clean Markdown, plus an index at docs.expo.dev/llms.txt | Append .md to any docs URL |
The MCP server and the skills do different jobs. MCP gives Codex tools: things it can call to fetch a docs page, list your builds or take a screenshot. Skills give it instructions: how Expo wants a task done, loaded only when relevant. The expo-overview skill is the entry point and routes Codex to more specific ones, such as expo-router, expo-ui, expo-upgrade and eas-app-stores. In Codex you can call a skill by name with $expo-overview or browse them with /skills.
A model answered a Tipjar question from memory. Click the lines that are out of date as of November 2026.
Server tools versus local tools
Most of the MCP server's tools talk to Expo's services and the stores, so they work with no dev server running: searching docs, listing builds, reading a build's logs, starting a workflow, pulling TestFlight crash reports and tester feedback. The local capabilities are different. They need the expo-mcp package in your project and a dev server started with the MCP flag, next to a simulator or emulator. That's what lets Codex take a screenshot, find a button by its testID, tap it, and check the result, which turns “I think the layout is fixed” into evidence.
Which of these needs expo-mcp in the project and EXPO_UNSTABLE_MCP_SERVER=1 npx expo start running?
Give it eyes, but watch the three legs
Connecting an agent to your build and store accounts is powerful, and it changes your risk. The Expo MCP server can read private project data, it can read text written by strangers (tester feedback, store reviews), and some of its tools act in public: submitting a build, or replying to an App Store review. Security people call that combination the lethal trifecta. Explore it with Tipjar's setup.
Move the controls and watch what changes.
You ask Codex to triage this week's TestFlight feedback. Which setup breaks the trifecta without losing the triage?
The agent CLI (experimental)
SDK 58 introduced @expo/agent-cli, which Expo describes as “built by agents and designed for agents.” It sits on top of Expo CLI, EAS CLI and expo-doctor. status answers whether the project is compatible with Expo Go without starting the app, dev starts the app with one command and decides when a build is needed, smoke runs dev, takes a screenshot and stops, and skills:sync sets up agent skills that packages ship inside node_modules. It's experimental, so tell Codex to use it in AGENTS.md and expect its output to change.
Install the Expo plugin for Codex
The plugin bundles Expo's skills and registers the Expo MCP server. You can also browse for it with
/pluginsinside a session.bashcodex plugin add expo@openai-curatedVerify/pluginsin a new Codex session lists the Expo plugin as installed.Sign the MCP server in to your Expo account
Authenticate once in the browser. Without the plugin, add the server yourself first with
codex mcp add expo --url https://mcp.expo.dev/mcp.bashcodex mcp login expoVerify/mcpshowsexpoconnected, and asking “search the Expo docs for NativeTabs” returns docs links.Turn on local capabilities
Add the dev-only package, then start the dev server with the MCP flag while the simulator is running Tipjar.
bashnpx expo install expo-mcp --dev EXPO_UNSTABLE_MCP_SERVER=1 npx expo startVerifyAsk Codex to “take a screenshot of the running app” and it shows you Tipjar's home screen.Try the agent CLI
Run the setup once, then check the project's status. Remember it's experimental.
bashnpx @expo/agent-cli@latest agents:setup npx @expo/agent-cli statusVerifystatusreports whether Tipjar can run in Expo Go and suggests next steps.Tell Codex in AGENTS.md
Add two lines so every session uses the tools without being reminded.
markdown## Expo tools - Check Expo questions against the Expo MCP docs tools before answering from memory. - After visual changes, take a screenshot with the Expo MCP tools and describe what you see.VerifyIn a fresh session, a layout change ends with Codex attaching a screenshot without being asked.
expo eject. What's the best next move?npx skills add expo/skills?Plain-English definitions from the AI Coding Dictionary.