PlugWiki
tapflow logo

tapflow MCP Server: Setup for Claude Code, Cursor and Other Apps

OfficialLocal
Getnpm@tapflowio/mcp-serverjo-duchan/tapflow

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.

Install tapflow MCP

Claude Code

  1. 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. 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_guide

  • Lists 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_builds

  • Lists 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_runs

  • Shows 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_run

  • Lists 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_devices

  • Joins 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_device

  • Leaves a device session

    Ends your session on a device. The device keeps running.

    Try: “Disconnect from the simulator.”

    Write · disconnect_device

  • Starts 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_device

  • Powers 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_device

  • Reads 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_tree

  • Replays 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_flow

  • Takes 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 · screenshot

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 toyour tapflow relay (ws://localhost:4000 by default)
Sign-in and keysToken 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

WebsiteGitHubnpmChangelogIssues

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 3
  1. mcp-server.md · github.com
  2. README.md · github.com
  3. tools.ts · github.com

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.