Expo
by mcp-dir · remote · no sign-in to list tools · v0.1.0 · published by GitHub user mcp-dir
Your Expo and EAS project in natural language: up to date SDK docs, cloud builds (status, logs, trig
25 tools: 2 can delete or cancel things, 9 change things and 14 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things9Claude Code: ask: see these tools
- Only reads14Claude Code: allow: see these tools
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http expo https://api.mcp.ai/p_expoFindings
Matches of fixed checks, with the text they matched.
The server marks "expo_workflow_cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "expo_workflow_cancel" says "cancel": a word for removing or ending something.
The server marks "expo_build_cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "expo_build_cancel" says "cancel": a word for removing or ending something.
- Infoconnect
The description mentions "credentials".
What this check looks forMatched text
description: "...nticated:true and empty pending[]. When credentials are missing, returns connect_url for th..."
- Infomarketplace
The description mentions "credential".
What this check looks forMatched text
description: "...ating the tool list. If the MCP needs a credential/login, invoke returns a connect link; i..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Deletes or cancels 2Claude Code: deny
expo_build_cancelCancels an EAS build that is queued or in progress.1 finding
Why it is in this group
- The name "expo_build_cancel" says "cancel": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "expo_build_cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "expo_build_cancel" says "cancel": a word for removing or ending something.
Description, as the server wrote it Cancels an EAS build that is queued or in progress. Use build_info to check the current status first.
Annotations the server declares
- title: expo_build_cancel
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
expo_workflow_cancelCancels a running EAS workflow.1 finding
Why it is in this group
- The name "expo_workflow_cancel" says "cancel": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "expo_workflow_cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "expo_workflow_cancel" says "cancel": a word for removing or ending something.
Description, as the server wrote it Cancels a running EAS workflow. Use workflow_info to get the workflow run ID.
Annotations the server declares
- title: expo_workflow_cancel
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 9Claude Code: ask
authenticateMCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
Annotations the server declares
- title: Authenticate
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_add_libraryAdd an Expo library to the project using expo install and attach usage instructions when availableNo findings
Why it is in this group
- The name "expo_add_library" says "add": a word for a change.
Description, as the server wrote it Add an Expo library to the project using expo install and attach usage instructions when available
Annotations the server declares
- title: expo_add_library
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
expo_build_runTriggers a new EAS build using a build profile from eas.json.No findings
Why it is in this group
- The name "expo_build_run" says "run": a word for a change.
Description, as the server wrote it 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").
Annotations the server declares
- title: expo_build_run
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
expo_build_submitSubmits an EAS build to the app store (Google Play Store for Android, App Store for iOS).No findings
Why it is in this group
- The name "expo_build_submit" says "submit": a word for a change.
Description, as the server wrote it 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").
Annotations the server declares
- title: expo_build_submit
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
expo_learnLearn Expo how-to for a specific topic and remember it for future conversations.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_learn
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_workflow_createCreates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation.No findings
Why it is in this group
- The name "expo_workflow_create" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_workflow_create
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
expo_workflow_runTriggers an EAS workflow run from a git reference.No findings
Why it is in this group
- The name "expo_workflow_run" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_workflow_run
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
marketplaceThe official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...ating the tool list. If the MCP needs a credential/login, invoke returns a connect link; i..."
Description, as the server wrote it The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
Annotations the server declares
- title: Marketplace
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
report_bugReport a bug, missing feature, or send feedback.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
Annotations the server declares
- title: Report Bug
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 14Claude Code: allow
connectReturns connection status and URLs.1 finding
Why it is in this group
- The description's first verb is "return": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...nticated:true and empty pending[]. When credentials are missing, returns connect_url for th..."
Description, as the server wrote it Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
Annotations the server declares
- title: Connection Status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_build_infoFetches the status and detailed information about a specific EAS build by ID.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetches the status and detailed information about a specific EAS build by ID. Use this to check build status, errors, artifacts, and other details.
Annotations the server declares
- title: expo_build_info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_build_listLists EAS builds for a project.No findings
Why it is in this group
- The name "expo_build_list" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_build_list
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_build_logsFetches the logs for a specific EAS build.No findings
Why it is in this group
- The name "expo_build_logs" says "log": a word for reading.
Description, as the server wrote it Fetches the logs for a specific EAS build. The build must be completed (finished or errored) to have logs available.
Annotations the server declares
- title: expo_build_logs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_read_documentationFetch a single Expo documentation page and return its content as markdown.No findings
Why it is in this group
- The name "expo_read_documentation" says "read": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_read_documentation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_search_documentationSearch the official Expo documentation and return page URLs ranked by relevance for a user query.No findings
Why it is in this group
- The name "expo_search_documentation" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_search_documentation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_testflight_crashesFetch TestFlight crash data.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch TestFlight crash data. Without crashId, lists recent crashes. With crashId, returns the full crash log with stack trace.
Annotations the server declares
- title: expo_testflight_crashes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_testflight_feedbackFetch screenshot feedback from TestFlight.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch screenshot feedback from TestFlight. Returns feedback metadata including device info, user comments, and screenshot URLs.
Annotations the server declares
- title: expo_testflight_feedback
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_workflow_infoFetches detailed information about a specific EAS workflow run by ID.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_workflow_info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_workflow_listLists recent EAS workflow runs for a project.No findings
Why it is in this group
- The name "expo_workflow_list" says "list": a word for reading.
Description, as the server wrote it Lists recent EAS workflow runs for a project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
Annotations the server declares
- title: expo_workflow_list
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_workflow_logsFetches logs for a specific job in an EAS workflow run.No findings
Why it is in this group
- The name "expo_workflow_logs" says "log": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: expo_workflow_logs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expo_workflow_validateValidates EAS workflow YAML syntax and configuration.No findings
Why it is in this group
- The name "expo_workflow_validate" says "validate": a word for reading.
Description, as the server wrote it 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").
Annotations the server declares
- title: expo_workflow_validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
show_versionShow the current MCP platform and adapter versions.No findings
Why it is in this group
- The name "show_version" says "show": a word for reading.
Description, as the server wrote it Show the current MCP platform and adapter versions.
Annotations the server declares
- title: Show Version
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
toolkit_infoReturns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
Annotations the server declares
- title: Toolkit Info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http expo https://api.mcp.ai/p_expoRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__expo__expo_read_documentation",
"mcp__expo__expo_search_documentation",
"mcp__expo__expo_workflow_info",
"mcp__expo__expo_workflow_list",
"mcp__expo__expo_workflow_logs",
"mcp__expo__expo_workflow_validate",
"mcp__expo__expo_build_list",
"mcp__expo__expo_build_info",
"mcp__expo__expo_build_logs",
"mcp__expo__expo_testflight_crashes",
"mcp__expo__expo_testflight_feedback",
"mcp__expo__show_version",
"mcp__expo__connect",
"mcp__expo__toolkit_info"
],
"ask": [
"mcp__expo__expo_add_library",
"mcp__expo__expo_learn",
"mcp__expo__expo_workflow_create",
"mcp__expo__expo_workflow_run",
"mcp__expo__expo_build_submit",
"mcp__expo__expo_build_run",
"mcp__expo__report_bug",
"mcp__expo__marketplace",
"mcp__expo__authenticate"
],
"deny": [
"mcp__expo__expo_workflow_cancel",
"mcp__expo__expo_build_cancel"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as expo. Review it before you use it.
