What the Baton MCP server does
The Baton MCP server manages local application runs for Flutter, Next.js, Vite, React Native and Expo, plus native iOS and Android projects. It can discover project details, identify available targets and devices, start applications, wait for readiness, inspect logs, and capture screenshots. The same runs are available through its local daemon, command-line interface, MCP client, and Baton app.
The main workflow is to inspect a project, boot a simulator or emulator when necessary, run a target, and wait for it to become usable. After an agent edits code, check_change applies the appropriate update: hot reload for Flutter, HMR for web and React Native, or a restart for native applications and ordinary processes. Its response focuses on newly observed results, including reload output, compiler or console errors, failed requests, and screenshots.
How it works
Set cwd to the absolute project path when using project discovery tools. boot_device can list devices that are available to start or boot a selected simulator or emulator. run_workflow supports a workflow containing an API and frontend, while run_target starts an individual target. Native projects may need a longer first build, so wait_for accepts waits of up to 15 minutes.
Web screenshots are captured in a temporary headless Chrome, Edge, or Brave session, or through the browser specified by BATON_CHROME. Viewports can be phone, tablet, desktop, or a custom width and height. Device and simulator captures use the device resolution. A screenshot confirms that an image was captured; Baton does not interact with controls or determine whether the visual result is correct.
Setup and configuration
Baton requires Node.js 24 or newer and supports macOS, Linux, and Windows. Install the package globally with npm install -g baton-run, then run baton setup to add its configuration to installed coding agents. The setup command changes only Baton’s configuration entries, creates .baton-backup files for changed configurations, and can be repeated. Use baton setup cursor codex to limit the targets, --dry-run to preview changes, or --remove to undo them.
An MCP client that accepts an mcpServers configuration can launch the server with npx -y baton-run; pinning a version such as baton-run@0.2.10 is also supported. The repository provides separate setup paths for Claude Code and Codex plugins, as well as install links for VS Code and Cursor. The project is a public developer preview.
Tools and capabilities
The Baton MCP server exposes 29 tools, including:
- Project and target discovery:
inspect_project, list_targets, list_devices, list_sessions, and list_checkouts.
- Execution and lifecycle control:
boot_device, run_target, run_workflow, wait_for, stop_session, forget_session, hot_reload, and hot_restart.
- Verification and diagnostics:
check_change, read_logs, session_summary, diagnose, screenshot, and set_debug_flag.
- Network inspection:
list_network_requests, get_network_request, and clear_network_requests.
- Configuration and evidence:
read_launch_config, write_launch_config, run_proof, list_proofs, and list_run_history.
- Dashboard controls:
show_dashboard and dashboard_action.
It can return screenshots for web apps, iOS simulators, and Android devices. For UI flows that require taps or other input, pair it with a browser, device-control, or Playwright MCP server. Agents without MCP support can use the CLI, including baton check <session> --json for a machine-readable check result.