
tapflow MCP Server: Setup for Claude Code, Cursor and Other Apps
Lets Claude Code, Cursor and other assistants drive iOS simulators and Android emulators on your own tapflow server.
tapflow MCP lets your assistant boot a simulator, install a build, tap and type, take screenshots and replay saved test flows. It is part of the open-source tapflow project, but it only works if you already run a tapflow relay.
It runs on your computer and talks to your relay with a personal access token. The project marks the MCP server and flow runner as experimental, so expect rough edges after an app launches.
Good for
- Mobile developers who want an assistant to test builds on simulators
- QA teams writing test flows in plain English
- CI owners who want failed flow runs explained and repaired
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install tapflow MCP
Claude Code
- 1
Copy this prompt.
Add the tapflow MCP server to Claude Code. Run this command: claude mcp add tapflow -e TAPFLOW_TOKEN=<TAPFLOW_TOKEN> -- npx -y @tapflowio/mcp-server Ask me for TAPFLOW_TOKEN and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js, A running tapflow relay.
Needs a running tapflow relay and an API-type personal access token (Settings, Tokens, New token in the tapflow dashboard). Replace the token placeholder with yours. If your relay is not on this computer, also set TAPFLOW_RELAY_URL, for example wss://your-relay.example.com. The project's README installs the package globally and runs tapflow-mcp; the npx form above runs the same program. The package is marked experimental.
Built from the package data we hold. Not yet tested by us.
Tools
Explains how to test a mobile feature with these tools
Returns a written guide for the assistant: which cases to cover, what cannot be tested, how to avoid false bug reports and how to save a flow. Ask for it once before a test session.
Try: “Read the testing guide before we test the checkout screen.”
Read ·
get_testing_guideLists the app builds on your relay
Shows every app and build your tapflow relay holds, with the build numbers the install and launch tools need.
Try: “Which builds of our app are on the relay?”
Network ·
list_buildsLists past flow runs
Shows recorded flow runs from CI and local machines, newest first, filtered by status, build or flow name.
Try: “Show the failed CI flow runs from today.”
Network ·
list_runsShows why one flow run failed
Returns the steps, failure message and screen of a recorded run, and says whether the app or the environment failed. Screenshots of up to four failed flows come back as images.
Try: “Why did run 42 fail?”
Network ·
get_runLists simulators and emulators
Shows the iOS simulators and Android emulators registered on your relay, with their session and device IDs.
Try: “What devices can I test on?”
Network ·
list_devicesJoins a device session
Opens a session on a device so you can control it. Boot, install and launch need this first.
Try: “Connect to the iPhone 15 Pro simulator.”
Write ·
connect_deviceLeaves a device session
Ends your session on a device. The device keeps running.
Try: “Disconnect from the simulator.”
Write ·
disconnect_deviceStarts a simulator or emulator
Boots the device in your session and waits up to 3 minutes until it is ready.
Try: “Boot the Pixel emulator.”
Write ·
boot_devicePowers a simulator or emulator off
Stops the device to free resources or force a cold start next time. This differs from disconnect, which leaves it running.
Try: “Shut the iPhone simulator down.”
Write ·
shutdown_deviceReads the buttons and fields on screen
Returns the interactive elements on the current screen with role, label, position and whether they are enabled. The assistant uses it to tap an element instead of guessing coordinates.
Try: “List what is on the current screen.”
Network ·
query_ui_treeReplays a saved test flow
Runs a flow written in YAML, either inline or from a file path on your machine, with no model in the loop. Steps include launch, tap, type, scroll, swipe, open a URL and assert, and a clearState step wipes the app's data. On failure it saves a screenshot to a temp file.
Try: “Replay login.yaml on the connected device.”
Write ·
run_flowTakes a picture of the device screen
Captures the device's current screen and returns the image so the assistant can look at it.
Try: “Take a screenshot and tell me what screen this is.”
Network ·
screenshotTaps at a screen position
Taps at pixel coordinates that match the latest screenshot.
Try: “Tap the Sign in button.”
Write ·
tapSwipes between two points
Swipes from one pixel position to another, for scrolling or dismissing.
Try: “Scroll down the list.”
Write ·
swipeTypes text on the device
Types the given text into the field that has focus on the device.
Try: “Type test@example.com into the email field.”
Write ·
type_textPresses a keyboard key
Presses a key by its browser key name, such as Enter, Backspace, Escape or Tab.
Try: “Press Enter.”
Write ·
press_keyPresses a hardware button
Presses a device button by a cross-platform name such as home, lock, volume up or volume down.
Try: “Press the home button.”
Write ·
press_buttonInstalls a build on the device
Installs a build from your relay onto the connected device and waits up to 2 minutes.
Try: “Install build 118 on the iPhone simulator.”
Write ·
install_appOpens an installed app
Launches an installed build, optionally with launch arguments or environment values, and waits up to 15 seconds.
Try: “Launch build 118.”
Write ·
launch_app
Read from the source code
Permissions
medium risk · 4 things to watch
Medium risk
The assistant can tap, type, install and launch on real simulator sessions, and a replayed flow can wipe an app's saved data on the test device. Use a test relay and a token that only reaches test devices.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can act on any device your token reaches
The assistant can boot, shut down, install and launch on shared simulators and emulators. Create a token for test devices only. github.com
Flows can clear an app's data
run_flow supports a clearState step that wipes the app's stored data on the device. Check a flow before you replay it on a device that holds data you need. github.com
run_flow reads a file path you give it
It opens a flow file from the folder the server runs in, and saves a failure screenshot to a temp file. github.com
The project calls it experimental
The docs warn of rough edges in selector matching and timing right after an app launches. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Talks to | your tapflow relay (ws://localhost:4000 by default) |
|---|---|
| Sign-in and keys | Token comes from TAPFLOW_TOKEN, or from a credentials file under ~/.config/tapflow if the variable is not set. |
Questions
Is the tapflow MCP server official?
Yes. It is published by the tapflow project itself (@tapflowio/mcp-server, from the jo-duchan/tapflow repo), as the project's own AI agent interface.
What do I need before I can use it?
A running tapflow relay, which you host yourself, and an API-type personal access token from the tapflow dashboard under Settings, then Tokens. The relay address defaults to ws://localhost:4000.
Does it send my app data to a cloud service?
The docs say the server is a local process that bridges your assistant to your self-hosted relay, and that app data stays on your network.
Which clients does it work with?
The docs show Claude Code and Codex setups and say any MCP-compatible agent can use it. Use the install box for the exact config.
Can it run read-only?
No. Most tools tap, type, install or launch. Only the guide, build, run, device list, screenshot and screen-reading tools only read.
Is it stable?
The project labels the MCP server experimental and says the manual dashboard is its most mature part.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
@tapflowio/mcp-server- Registry
- npm
- Transport
- stdio
- Auth
- token in env
- Version
- 0.32.0
- License
- MIT
- Last commit
- Oct 31, 2026
- Open issues
- 44
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- mcp-server.md · github.com
- README.md · github.com
- tools.ts · github.com