Expo MCP connector
OAuth2.1/DCRDeveloper ToolsExpo is a platform for building universal React Native apps; its MCP server exposes developer services including EAS builds, submissions, and project...
Expo MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'expomcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Expo MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'expomcp_build_list',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "expomcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Expo MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="expomcp_build_list",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Validate workflow — Validates an EAS workflow YAML file for syntax and configuration errors
- Run workflow, build — Triggers an EAS workflow run for a project
- Logs workflow, build — Fetches logs for a specific job in an EAS workflow run
- List workflow, build — Lists recent EAS workflow runs for a project
- Info workflow, build — Fetches detailed information about a specific EAS workflow run by ID including status, job results, errors, and artifacts
- Create workflow — Creates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
expomcp_add_library#Add an Expo library to the project using expo install and attach usage instructions when available.2 params
Add an Expo library to the project using expo install and attach usage instructions when available.
libraryNamestringrequiredName of the Expo library to installprojectRootstringrequiredRoot directory of the Expo projectexpomcp_appstore_delete_review_response#Delete the public developer response on an App Store customer review. No-op-safe — if the review has no response, it reports that nothing was deleted.1 param
Delete the public developer response on an App Store customer review. No-op-safe — if the review has no response, it reports that nothing was deleted.
reviewIdstringrequiredThe ID of the customer review whose response should be deletedexpomcp_appstore_reply_review#Post or edit the public developer response to an App Store customer review. The response is visible to everyone on the App Store. Any existing response is replaced.2 params
Post or edit the public developer response to an App Store customer review. The response is visible to everyone on the App Store. Any existing response is replaced.
responseBodystringrequiredThe response text, posted publicly as the developer response (max 5970 characters)reviewIdstringrequiredThe ID of the customer review to respond to (from appstore_reviews)expomcp_appstore_reviews#Fetch public App Store customer reviews for an app including rating, title, body, reviewer, and territory. For TestFlight beta feedback use testflight_feedback instead.3 params
Fetch public App Store customer reviews for an app including rating, title, body, reviewer, and territory. For TestFlight beta feedback use testflight_feedback instead.
bundleIdstringrequiredThe bundle ID of the app e.g. com.example.myappcursorstringoptionalPagination cursor from a previous responselimitintegeroptionalMaximum number of reviews to return (default: 20, max: 100)expomcp_build_cancel#Cancels an EAS build that is queued or in progress. Use build_info to check the current status first.1 param
Cancels an EAS build that is queued or in progress. Use build_info to check the current status first.
buildIdstringrequiredThe ID of the build to cancelexpomcp_build_info#Fetches detailed information about a specific EAS build by ID including status, platform, artifacts, and logs URL.1 param
Fetches detailed information about a specific EAS build by ID including status, platform, artifacts, and logs URL.
buildIdstringrequiredThe ID of the build to fetch details forexpomcp_build_list#Lists recent EAS builds for a project. Provide either appId (from app.json extra.eas.projectId) or appFullName (e.g. @owner/my-app).5 params
Lists recent EAS builds for a project. Provide either appId (from app.json extra.eas.projectId) or appFullName (e.g. @owner/my-app).
appFullNamestringoptionalThe full name of the app e.g. @owner/my-app. Either appId or appFullName is required.appIdstringoptionalThe Expo project/app ID (UUID). Either appId or appFullName is required.limitnumberoptionalMaximum number of builds to return (default: 10, max: 100)platformstringoptionalFilter builds by platformstatusstringoptionalFilter builds by statusexpomcp_build_logs#Fetches the build logs for a specific EAS build. Returns log output to help debug build failures.1 param
Fetches the build logs for a specific EAS build. Returns log output to help debug build failures.
buildIdstringrequiredThe ID of the build to fetch logs forexpomcp_build_run#Triggers a new EAS build using a build profile from eas.json. Requires a GitHub repository to be connected to the project.8 params
Triggers a new EAS build using a build profile from eas.json. Requires a GitHub repository to be connected to the project.
buildProfilestringrequiredThe build profile name from eas.json e.g. development, preview, productiongitRefstringrequiredGit reference (branch name, tag, or commit SHA) to build fromplatformstringrequiredThe platform to build for (ANDROID or IOS)appFullNamestringoptionalThe full name of the app e.g. @owner/my-app. Either appId or appFullName is required.appIdstringoptionalThe Expo project/app ID (UUID). Either appId or appFullName is required.autoSubmitbooleanoptionalWhether to automatically submit the build after completionbaseDirectorystringoptionalBase directory for monorepos e.g. apps/mobilesubmitProfilestringoptionalSubmit profile to use if autoSubmit is trueexpomcp_build_submit#Submits an existing EAS build to the App Store (iOS) or Google Play (Android). Provide appId or appFullName, the buildId, and platform.6 params
Submits an existing EAS build to the App Store (iOS) or Google Play (Android). Provide appId or appFullName, the buildId, and platform.
buildIdstringrequiredThe ID of the build to submitplatformstringrequiredThe platform to submit to (ANDROID or IOS)appFullNamestringoptionalThe full name of the app e.g. @owner/my-app. Either appId or appFullName is required.appIdstringoptionalThe Expo project/app ID (UUID). Either appId or appFullName is required.ascAppIdentifierstringoptionalFor iOS: The App Store Connect app identifier (Apple ID of the app). Required for iOS submissions.trackstringoptionalFor Android: The release track (internal, alpha, beta, production). Required for Android submissions.expomcp_learn#Learn Expo how-to for a specific topic and remember it for future conversations.1 param
Learn Expo how-to for a specific topic and remember it for future conversations.
topicstringrequiredThe Expo topic to learn aboutexpomcp_playstore_crashes#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.4 params
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.
packageNamestringrequiredThe Android package name of the app e.g. com.example.myappcursorstringoptionalPagination cursor from a previous responseissueIdstringoptionalSpecific error issue ID to fetch the full report for. If omitted, lists recent issues.limitintegeroptionalMaximum number of issues to list (default: 20, max: 100, ignored when issueId is provided)expomcp_playstore_reply_review#Post a public developer reply to a Google Play user review, or edit the existing reply. Each review has a single developer reply, so replying again replaces it. Reply text is limited to 350 characters.3 params
Post a public developer reply to a Google Play user review, or edit the existing reply. Each review has a single developer reply, so replying again replaces it. Reply text is limited to 350 characters.
packageNamestringrequiredThe Android package name of the app e.g. com.example.myappreplyTextstringrequiredThe reply text, posted publicly as the developer reply (max 350 characters)reviewIdstringrequiredThe ID of the review to reply to (from playstore_reviews)expomcp_playstore_reviews#Fetch user reviews from Google Play including author, star rating, device info, and comment text. Note: Google Play only exposes production reviews with text from approximately the last week.3 params
Fetch user reviews from Google Play including author, star rating, device info, and comment text. Note: Google Play only exposes production reviews with text from approximately the last week.
packageNamestringrequiredThe Android package name of the app e.g. com.example.myappcursorstringoptionalPagination cursor from a previous responselimitintegeroptionalMaximum number of reviews to return (default: 20, max: 100)expomcp_read_documentation#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.2 params
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.
urlstringrequiredURL of the Expo documentation page to fetchoffsetintegeroptionalCharacter offset to start reading from. Defaults to 0.expomcp_testflight_crashes#Fetch TestFlight crash data. Without crashId, lists recent crashes. With crashId, returns the full crash log with stack trace.4 params
Fetch TestFlight crash data. Without crashId, lists recent crashes. With crashId, returns the full crash log with stack trace.
bundleIdstringrequiredThe bundle ID of the app e.g. com.example.myappcrashIdstringoptionalSpecific crash ID to fetch full details for. If omitted, lists recent crashes.cursorstringoptionalPagination cursor from a previous responselimitintegeroptionalMaximum number of crashes to list (default: 20, max: 100, ignored when crashId is provided)expomcp_testflight_feedback#Fetch screenshot feedback from TestFlight including device info, user comments, and screenshot URLs.3 params
Fetch screenshot feedback from TestFlight including device info, user comments, and screenshot URLs.
bundleIdstringrequiredThe bundle ID of the app e.g. com.example.myappcursorstringoptionalPagination cursor from a previous responselimitintegeroptionalMaximum number of feedback submissions to return (default: 20, max: 100)expomcp_workflow_cancel#Cancels an EAS workflow run that is queued or in progress.1 param
Cancels an EAS workflow run that is queued or in progress.
workflowRunIdstringrequiredThe ID of the workflow run to cancelexpomcp_workflow_create#Creates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation. Use when users want to create CI/CD workflows in .eas/workflows/ or need to learn EAS workflow syntax.4 params
Creates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation. Use when users want to create CI/CD workflows in .eas/workflows/ or need to learn EAS workflow syntax.
actionstringrequiredAction to perform: create to make a new EAS workflow YML file, learn to get syntax documentationfileNamestringoptionalWorkflow file name e.g. build-and-deploy.yml (required for create action)projectRootstringoptionalRoot directory of the project (required for create action)workflowYamlstringoptionalComplete YAML content for the EAS workflow (required for create action)expomcp_workflow_info#Fetches detailed information about a specific EAS workflow run by ID including status, job results, errors, and artifacts.1 param
Fetches detailed information about a specific EAS workflow run by ID including status, job results, errors, and artifacts.
workflowRunIdstringrequiredThe ID of the workflow run to fetch details forexpomcp_workflow_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).4 params
Lists recent EAS workflow runs for a project. Provide either appId (from app.json extra.eas.projectId) or appFullName (e.g. @owner/my-app).
appFullNamestringoptionalThe full name of the app e.g. @owner/my-app. Either appId or appFullName is required.appIdstringoptionalThe Expo project/app ID (UUID). Either appId or appFullName is required.limitnumberoptionalMaximum number of workflow runs to return (default: 10, max: 100)statusstringoptionalFilter workflow runs by statusexpomcp_workflow_logs#Fetches logs for a specific job in an EAS workflow run. Call without sectionIndex or phase to get a summary of log sections; then call again with sectionIndex or phase to fetch that section.4 params
Fetches logs for a specific job in an EAS workflow run. Call without sectionIndex or phase to get a summary of log sections; then call again with sectionIndex or phase to fetch that section.
jobNamestringrequiredThe name of the job to fetch logs forworkflowRunIdstringrequiredThe ID of the workflow runphasestringoptionalPhase name to fetch logs forsectionIndexintegeroptionalIndex of the log section to fetchexpomcp_workflow_run#Triggers an EAS workflow run for a project. Provide either appId (from app.json extra.eas.projectId) or appFullName (e.g. @owner/my-app) and the workflow file name.4 params
Triggers an EAS workflow run for a project. Provide either appId (from app.json extra.eas.projectId) or appFullName (e.g. @owner/my-app) and the workflow file name.
workflowFileNamestringrequiredThe workflow file name to run e.g. build-and-deploy.ymlappFullNamestringoptionalThe full name of the app e.g. @owner/my-app. Either appId or appFullName is required.appIdstringoptionalThe Expo project/app ID (UUID). Either appId or appFullName is required.gitRefstringoptionalGit reference (branch name, tag, or commit SHA) to run the workflow onexpomcp_workflow_validate#Validates an EAS workflow YAML file for syntax and configuration errors. Use after workflow_create to ensure the workflow is valid before running.2 params
Validates an EAS workflow YAML file for syntax and configuration errors. Use after workflow_create to ensure the workflow is valid before running.
fileNamestringrequiredWorkflow file name to validate e.g. build-and-deploy.ymlprojectRootstringrequiredRoot directory of the project