tapflow MCP Server
tapflow MCP server: an agent controls iOS simulators and Android emulators on your Mac and replays flows for CI
- 1,975 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent taps, types, installs and launches apps on your team's devices
- A token with build-write rights opens the relay and the builds uploaded to it
- Screenshots and the UI tree enter the model's context and may include personal data of test accounts
Install
- Works in
Manual install
npm install -g @tapflowio/mcp-serverNeeds a running tapflow relay: `npm install -g tapflow`, then `tapflow start`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent taps, types, installs and launches apps on your team's devices
- A token with build-write rights opens the relay and the builds uploaded to it
- Screenshots and the UI tree enter the model's context and may include personal data of test accounts
This is third-party code. Review the repository files before installing.
What it does
The `@tapflowio/mcp-server` package exposes iOS simulators and Android emulators to LLM agents as tools. It is part of tapflow, a mobile QA alternative to Appetize and BrowserStack that you host yourself. A relay on your server links the team's browser to an agent on a Mac, and that agent drives the simulators and emulators. The server provides 17 tools. The agent lists devices, connects and boots them, takes screenshots, taps, swipes, types text, presses buttons, and installs and launches apps. `query_ui_tree` returns the accessibility tree with roles, labels and frames normalized from 0 to 1, so the agent taps an element and has no need to guess coordinates from an image. `run_flow` replays a YAML flow in the `@tapflowio/flow-runner` format with no LLM calls: write the flow once with the agent and repeat it deterministically. `list_runs` and `get_run` read the run records that `tapflow flow run` leaves, including the screen where a failed flow stopped. That lets the agent repair a CI flow and check it again.
Who it is for. For mobile developers and QA engineers who already run a tapflow relay and want Claude Code or Codex to check apps on simulators.
Good fit when
- The agent must install a build on a simulator, walk through sign-up and take screenshots of each step
- You want to write a check flow once with the agent and then run it in CI without spending tokens
- A flow failed in CI and the agent needs to open the screen where it stopped and fix the steps
- Taps should go to elements of the accessibility tree, each with a role and a label
Not a fit when
- No tapflow relay is deployed: the MCP server has nothing to connect to
- You need real phones: tapflow works with simulators and emulators and is not a device farm
- You need an Appium or WebDriverAgent integration: the developer ruled it out and ships its own minimal flow runner
Example request
Boot an iPhone simulator in tapflow, install the latest build, go through sign-up and save a screenshot of every screenMCP
- Transport
- stdio
- Authentication
- key is optional
Environment variables
TAPFLOW_RELAY_URLrequired- Address of the tapflow relay, for example ws://localhost:4000
TAPFLOW_TOKENsecret- API-type token with view and build-write rights; without it credentials.json is read
Limitations
- Needs a running tapflow relay and an agent on a Mac. iOS requires macOS 26 or 27, Xcode 26 or 27 and the iOS Simulator runtime.
- The project is at version 0.x, and releases can bring breaking changes.
- The access token must be an API-type token with view and build-write rights. Without it the server reads `~/.config/tapflow/credentials.json`.
- The relay runs on Linux and macOS, and the simulator agent runs only on a Mac.
How to disable. Remove the tapflow entry from `.mcp.json` or your agent's MCP configuration. `npm uninstall -g @tapflowio/mcp-server` removes the package. Revoke the token in the tapflow dashboard.
FAQ
How do I connect tapflow to Claude Code?
Run `npm install -g @tapflowio/mcp-server`, then add a server with the command `tapflow-mcp` and the variables `TAPFLOW_RELAY_URL` and `TAPFLOW_TOKEN` to `.mcp.json`. The relay starts with `tapflow start`.
Which tools does the tapflow MCP server provide?
They include `list_devices`, `connect_device`, `boot_device`, `screenshot`, `query_ui_tree`, `tap`, `swipe`, `type_text`, `install_app`, `launch_app` and `run_flow`. There are 17 in total; the package README has the full list.
How can the agent avoid spending tokens on repeated checks?
Write a flow with the agent and save it in the `@tapflowio/flow-runner` format. The `run_flow` tool repeats it with no model calls.
Does the MCP server need a token?
Yes, an API-type token with view and build-write rights. If `TAPFLOW_TOKEN` is not set, the server reads `~/.config/tapflow/credentials.json` and rereads it when the relay refuses a token.
Does this work on Linux or Windows?
Partly: the relay runs on Linux, but the simulator agent needs a Mac. Windows is not on the platform list.
Discussion
No questions or reviews yet.
Related
MCP serversCLI, MCP server and typed Node.js API so an agent can verify its changes in a live mobile app on iOS, Android and more
BrowserStack MCP Server: testing on real devices
BrowserStack MCP Server
The official BrowserStack MCP server: real devices, automated tests and test cases driven by an agent from your editor
An agent gets a live session of your web, iOS or Android app, sees the screen, writes tests and checks its own edits.
kogiQA MCP gives an agent a browser that finds page elements without selectors, for debugging web apps and writing e2e tests
A Playwright-style iOS and Android framework: the agent drives a phone through the accessibility tree and a skill writes tests.
An MCP server for end-to-end testing: the agent sees a running Flutter, React Native, Electron or other app and drives it
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| tapflow MCP Server (this card) | yes | key is optional | 1,975 | |
| iOS Simulator MCP Server | no | not required | 2,217 | controls an iOS simulator on one machine, without a team relay or Android |
| Mobile MCP | no | not required | 10,529 | general mobile device automation, without a team browser dashboard or YAML flow replay |
README in short
The project README explains why mobile QA teams need tapflow and compares it with Appetize, BrowserStack and physical devices. It then shows a diagram of the relay, the agent and the browser dashboard, a quick start and the requirements. The `@tapflowio/mcp-server` package has its own README.