Local Expo
БесплатноНе проверенA single MCP server that orchestrates Expo CLI, Metro, and adb for local Expo project management, including device interaction and session summaries.
Описание
A single MCP server that orchestrates Expo CLI, Metro, and adb for local Expo project management, including device interaction and session summaries.
README
local-expo-mcp is a single user-visible MCP server for local Expo workflows.
It gives agents one local MCP surface for:
- Expo project inspection
- Metro start, stop, restart, status, logs, and recent error summaries
- local Android-capable Expo runs
- hidden
expo-mcpattach after Metro is healthy - device listing and logs
- screenshots, app launch, app terminate, and foreground-app inspection through hidden
mobile-mcp - session summaries for the current project
Scope
Current validated scope is Windows-first local development.
Today:
- Windows is actively implemented and tested
- macOS is deferred
- Linux is not yet validated
- EAS is intentionally out of scope
Why It Exists
Using expo-mcp and mobile-mcp directly means the user has to manage multiple MCP servers and their startup order. local-expo-mcp keeps that orchestration internal:
- one public MCP server only
- direct control of Expo CLI and
adb - lazy hidden child MCP startup only when needed
- structured results instead of raw terminal output
Installation
Requirements:
- Node 20+
- local Expo tooling for the projects you want to work on
- Android tooling on PATH if you want
adbfallbacks or local Android runs
Run it locally with npx once published:
npx local-expo-mcp
For repo development:
bun install
bun run build
node dist/server.js
Add It To Your AI Client
local-expo-mcp is a local stdio MCP server. In practice, every client needs the same core launch command:
command: npx
args: [-y, local-expo-mcp]
If a client can run a local stdio MCP server with a command and args array, it can usually run local-expo-mcp.
General MCP Pattern
For clients that support generic stdio MCP configuration, use this shape:
{
"mcpServers": {
"local-expo": {
"command": "npx",
"args": ["-y", "local-expo-mcp"]
}
}
}
If the client is on native Windows and cannot launch npx directly, use a command wrapper that the client supports, for example:
{
"mcpServers": {
"local-expo": {
"command": "cmd",
"args": ["/c", "npx", "-y", "local-expo-mcp"]
}
}
}
Claude
Claude Code supports local stdio MCP servers. Anthropic documents both CLI-based setup and JSON configuration.
Claude Code CLI, native Windows-safe form:
claude mcp add --transport stdio local-expo -- cmd /c npx local-expo-mcp
Note: omit -y on Windows — Claude Code parses it as an unknown option before passing args through.
Claude Code CLI, typical macOS/Linux form:
claude mcp add --transport stdio local-expo -- npx -y local-expo-mcp
Claude project config via .mcp.json:
{
"mcpServers": {
"local-expo": {
"command": "cmd",
"args": ["/c", "npx", "local-expo-mcp"]
}
}
}
Claude Desktop config uses the same mcpServers JSON shape. On Windows that file is typically %APPDATA%\Claude\claude_desktop_config.json.
Codex
Codex supports MCP in its shared CLI and IDE config.
Codex CLI command:
codex mcp add local-expo -- npx -y local-expo-mcp
Project-scoped .codex/config.toml:
[mcp_servers.local-expo]
command = "npx"
args = ["-y", "local-expo-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true
Local repo development example:
[mcp_servers.local-expo]
command = "node"
args = ["dist/server.js"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true
Useful commands:
codex mcp list
codex mcp get local-expo
Gemini
Gemini CLI supports MCP servers through ~/.gemini/settings.json.
Gemini CLI command:
gemini mcp add local-expo npx -y local-expo-mcp
If your Windows Gemini setup cannot launch npx directly, use:
gemini mcp add local-expo cmd /c npx -y local-expo-mcp
Example settings.json:
{
"mcpServers": {
"local-expo": {
"command": "npx",
"args": ["-y", "local-expo-mcp"],
"timeout": 30000
}
}
}
If your Windows Gemini setup cannot launch npx directly, use:
{
"mcpServers": {
"local-expo": {
"command": "cmd",
"args": ["/c", "npx", "-y", "local-expo-mcp"],
"timeout": 30000
}
}
}
After configuring it, restart Gemini CLI and inspect MCP status from the CLI.
GitHub Copilot
GitHub Copilot in VS Code supports MCP servers via a .vscode/mcp.json file in your workspace or via VS Code user settings.
Workspace config (.vscode/mcp.json):
{
"servers": {
"local-expo": {
"type": "stdio",
"command": "npx",
"args": ["-y", "local-expo-mcp"]
}
}
}
On native Windows, wrap the command:
{
"servers": {
"local-expo": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "local-expo-mcp"]
}
}
}
After saving, open the Copilot Chat panel, switch to Agent mode, and the local-expo server will appear in the tools list.
OpenCode
OpenCode supports local MCP servers in opencode.json or opencode.jsonc.
OpenCode CLI command:
opencode mcp add
This will prompt you for the server details. Choose local (stdio) and provide the command npx with arguments -y local-expo-mcp.
Example opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"local-expo": {
"type": "local",
"command": ["npx", "-y", "local-expo-mcp"],
"enabled": true,
"timeout": 120000
}
}
}
OpenCode also exposes MCP helper commands such as opencode mcp list.
Public Tools
Current public tools:
project_inspectmetro_startmetro_stopmetro_restartmetro_statusmetro_logs_recentmetro_errors_recentdev_server_attachandroid_rundevice_listdevice_logs_recentdevice_screenshotdevice_app_launchdevice_app_terminatedevice_foreground_appsession_summary
All tools return structured JSON-like data. Failures use this envelope:
{
"ok": false,
"error": {
"code": "ERROR_CODE",
"message": "Human readable summary",
"details": {}
}
}
Development
Common commands:
bun install
bun run build
bun run commitlint
bunx vitest run
bun run test:windows
bun run test:live:windows
bun run test:acceptance
Live repro apps live under test/live-projects/.
Repo-specific contributor and agent guidance lives in AGENT.md.
Testing
This repo ships with:
- non-live unit and integration coverage
- Windows-specific test coverage
- required Windows live Metro coverage
- repo-owned live Expo smoke projects for regression reproduction
If you are working inside this repo, use the validation guidance in AGENT.md.
CI and Publishing
This repo includes:
- CI for install, commitlint, tests, and build
- a PR-based release workflow in release.yml
- Trusted Publisher (GitHub OIDC) so npm publishing runs without a static
NPM_TOKEN - Dependabot for npm and GitHub Actions updates
Release Process
This repo does not publish directly from a feature PR merge. It uses a two-step flow so main stays PR-only:
- Merge a normal PR into
mainwith thepublishlabel. - The release workflow updates
release/nextwith:- the next version in package.json
- the pending release entry in CHANGELOG.md
- the pending release state file
release-plan.json
- The workflow creates or updates a PR from
release/nextintomain. - Review and merge that release PR.
- After the
release/nextPR is merged, the workflow:- runs build and tests again
- publishes to npm with OIDC
- creates or updates the GitHub release and tag
Version selection is based on the merged PR title/body using conventional-commit style rules:
feat:-> minorfix:andperf:-> patchfeat!:orBREAKING CHANGE:-> majorrefactor:,build:, andci:can still produce a patch releasedocs:andtest:alone do not create a release PR
If multiple publish-labeled PRs merge before release/next is merged, the pending release PR is updated and the version is escalated as needed.
Troubleshooting
If metro_start fails:
- verify the target project is a local Expo project
- verify the selected port is free
- inspect
metro_logs_recent
If android_run fails:
- inspect the structured Gradle summary
- inspect recent device logs
- verify local Android SDK and
adbavailability
If hidden MCP attachment fails:
- start Metro first
- confirm the dev server URL was detected
- verify local dependencies were installed successfully
Sources For Client Config Examples
These client setup examples were checked against current documentation on March 22, 2026:
- Anthropic Claude Code MCP docs: https://code.claude.com/docs/en/mcp
- OpenAI Docs MCP guide for Codex MCP configuration examples: https://developers.openai.com/learn/docs-mcp
- Gemini CLI repository docs pointing to
~/.gemini/settings.json: https://github.com/google-gemini/gemini-cli - OpenCode MCP server docs: https://opencode.ai/docs/mcp-servers/
Note
This MCP has been engineered heavily with the aid of AI agents, with human review guiding the architecture, implementation, testing, and release workflow decisions.
Установка Local Expo
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/salafidurus/local-expo-mcpFAQ
Local Expo MCP бесплатный?
Да, Local Expo MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Local Expo?
Нет, Local Expo работает без API-ключей и переменных окружения.
Local Expo — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Local Expo в Claude Desktop, Claude Code или Cursor?
Открой Local Expo на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Local Expo with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
