Let AI agents use your real Android phones safely, with permissions, approvals and an audit log.
Let AI agents use your real Android phones, safely. benchfleet-mcp connects Claude Code, Codex, Cursor, Claude
Desktop and any other MCP client to BenchFleet, the
self-hosted control hub for real Android phones. The agent can list your phones, look at their screens, read the
elements on them, tap, type, open apps and run your published workflows — only on the phones and with the actions
you allow, with approvals for anything sensitive and every step in BenchFleet's audit log.
It is a thin connector: it forwards MCP messages to the BenchFleet app running on the same computer and reaches nothing else. The tools, the permissions and the phones are all in the app.
Install BenchFleet from https://benchfleet.com/download and connect your phones (or use its demo phones).
In BenchFleet: Settings → AI clients → Connect an AI client…, choose what the client may do (Look only, Look and operate, or chosen capabilities) and on which phones, and copy the token it shows once.
Add the server to your client:
Claude Code
claude mcp add benchfleet --env BENCHFLEET_TOKEN=<token> -- npx -y benchfleet-mcp
Codex (~/.codex/config.toml)
[mcp_servers.benchfleet]
command = "npx"
args = ["-y", "benchfleet-mcp"]
env = { BENCHFLEET_TOKEN = "<token>" }
Claude Desktop, Cursor and other clients (mcpServers)
{
"mcpServers": {
"benchfleet": {
"command": "npx",
"args": ["-y", "benchfleet-mcp"],
"env": { "BENCHFLEET_TOKEN": "<token>" }
}
}
}
The app must be running. Disconnect in BenchFleet stops the token at once.
list_devices, get_device, get_screen, get_ui_tree, find_element, read_text, wait_for, tap_element,
long_press_element, type_text, type_secret (a password from BenchFleet's vault, never its value), swipe,
scroll_to, press_key, launch_app, stop_app, take_screenshot, get_device_logs, list_workflows,
run_workflow, queue_task (a workflow, or a goal in plain words for the phones' AI agents), get_task_status,
pause_device, resume_device, request_manual_control. A client sees only the tools its access allows. There is
no shell, file transfer or install tool. A phone a person is controlling, a paused phone and a phone without
Automation allowed refuse every action; CAPTCHAs and other human-only checks stop the agent and ask a person.
| Variable | Meaning |
|---|---|
BENCHFLEET_TOKEN | Required: the client's token from the app (CONTROLHUB_TOKEN also works) |
BENCHFLEET_URL | Optional: the app's address, when it is not found in its data folder |
CONTROLHUB_HOME | Optional: the app's data folder, when it is not the default one |
Plans: AI clients need BenchFleet Pro or Team (https://benchfleet.com/pricing); the personal edition has no limits. Support: support@benchfleet.com.
/plugin marketplace add benchfleet/benchfleet-mcp
/plugin install benchfleet@benchfleet-plugins
Set BENCHFLEET_TOKEN in your environment first (the token from BenchFleet: Settings → AI clients).
gemini extensions install https://github.com/benchfleet/benchfleet-mcp
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y benchfleet-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-jimbob1414-benchfleet": {
"command": "npx",
"args": [
"-y",
"benchfleet-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencebenchfleet-mcpnpmBenchFleet works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.