Model Context Protocol server for Expo.dev - enables programmatic interaction with Expo projects and EAS services
The server provides 16 well-structured tools with consistent naming patterns (verb_noun), descriptive docstrings, and explicit parameter schemas. However, several issues limit the score: (1) Output schemas are not documented, the source shows input schemas but no corresponding response schemas, making it unclear what fields agents should expect; (2) Error handling is minimal, no recovery guidance or error classification visible; (3) Some parameter descriptions lack format/constraint details; (4) The 'format' parameter appears on 15 tools but its actual effect on output structure is undocumented. Per-tool analysis: most tools score 60-70 on schema (input schemas present but output absent), 70-85 on description (clear but missing examples of valid responses), 80-95 on naming (verb_noun pattern consistently applied). The prompts and resources features are well-implemented.
Cancel a build that is currently in-queue or in-progress. Use this tool to cancel builds that are no longer needed, freeing up build queue slots and stopping unnecessary resource usage.
Trigger a new cloud build for iOS, Android, or both platforms. EAS Build compiles your app in the cloud, handling code signing and producing app binaries ready for distribution or submission to app stores.
List recent builds with optional filtering by platform, status, or profile. View build history to monitor progress, check statuses, and retrieve build IDs for further operations.
Get detailed status and information for a specific build by ID. Retrieve comprehensive build information including current status, platform, profile, logs, and download links for completed builds.
Create a new update channel for distributing updates to specific user groups. Channels allow you to control which updates reach which users. Different builds can subscribe to different channels, enabling: - Staged rollouts - Beta testing - A/B testing - Environment-specific updates
Output schemas are not documented. Input schemas are provided with types and descriptions, but there is no specification of what fields the tools return, their types, or structure. This forces LLMs to guess what data is available downstream.
The 'format' parameter (json vs markdown) appears on 15 of 16 tools, but its effect on response structure is not documented. Agents cannot reason about when to choose json vs markdown or what structural differences to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Get detailed information about the EAS project configuration. Retrieves project metadata including project ID, slug, owner, and EAS configuration.
Submit an Android build to Google Play Console for distribution. Automates the Android submission process, uploading your build to Google Play Console and placing it in the specified track (internal, alpha, beta, or production).
Submit an iOS build to App Store Connect for TestFlight or App Store review. Automates the iOS submission process, uploading your build to App Store Connect and making it available in TestFlight. For production release, manual submission from App Store Connect is still required.
List recent published updates with optional branch filtering. View update history to see what has been published, when, and to which branches.
Publish an over-the-air (OTA) update to specific branch/channel. EAS Update enables you to push bug fixes and small updates directly to users without requiring a full app store review and download.
Run comprehensive diagnostics on an Expo project to identify issues. This tool checks for common problems including: - Package version mismatches - Configuration errors - Missing dependencies - Environment setup issues - Compatibility problems
View the evaluated Expo app configuration (app.json/app.config.js). This tool reads and evaluates your app's configuration, showing the final computed values including all dynamic values from app.config.js.
Create a new Expo project with a selected template. This tool creates a new Expo project directory with all necessary files and dependencies. It's the first step in creating a new Expo application.
Install packages with automatic version validation for React Native compatibility. This tool uses Expo's smart package installer which automatically selects compatible versions of packages based on your Expo SDK version.
Generate native iOS and Android project directories for customization. This tool runs "prebuild" which generates native project folders (ios/ and android/) from your app.json configuration and config plugins.
Check the current Expo account authentication status. Verifies which Expo account is currently authenticated and whether authentication is working correctly.
No error handling guidance. Tools lack descriptions of failure modes, retryability, or recovery steps. For example, eas_build_create could fail due to authentication, rate limits, or invalid profiles, but there is no guidance on how an agent should respond.
Credential parameters not adequately secured. eas_submit_ios and eas_submit_android accept ascApiKeyPath and serviceAccountKeyPath as parameters, which could leak file paths into logs. Best practice: inject credentials via environment variables only.
Some parameter descriptions lack sufficient detail. For example, 'projectPath' is described as 'Path to the Expo project. Default: current directory' on many tools, but does not explain acceptable formats (absolute vs relative), whether it must exist, or whether it should point to the project root or a subdirectory.
No idempotency guarantees documented. Tools like eas_build_create and eas_update_publish are clearly non-idempotent (they create new resources), but the tool descriptions do not state this. Agents need to know which calls are safe to retry.
No pagination or result limits documented for list tools. eas_build_list and eas_update_list accept a 'limit' parameter but do not indicate whether there is a next_cursor, has_more flag, or how to fetch additional results. Large result sets could exhaust context.
Tool dependency chains not documented. For example, eas_build_status requires a buildId, which eas_build_list should return, but there is no statement that eas_build_list returns buildId fields or how to extract them.