Give Windsurf an Android phone: an Android MCP server for Cascade.

Set it up

1. Get a key. Paste this into Windsurf. It installs the Phonebox CLI and signs you in from the terminal, so you never paste a key into the chat. Then put the key in your environment with export PHONEBOX_API_KEY=$(phonebox token).

Paste into your agent
Read https://phonebox.dev/setup.md and set me up with Phonebox from here: get me signed in and ready, then find out what I want to use phones for and help me with that.

2. Add the server. Add this to Windsurf's mcp_config.json: ~/.codeium/windsurf/mcp_config.json in older builds, or ~/.config/devin/mcp_config.json in current ones. ${env:PHONEBOX_API_KEY} reads the key from your environment, so the file holds no secret.

mcp_config.json
{
  "mcpServers": {
    "phonebox": {
      "serverUrl": "https://phonebox.dev/mcp",
      "headers": { "Authorization": "Bearer ${env:PHONEBOX_API_KEY}" }
    }
  }
}

3. Check it. Open the Cascade panel's … menu, then MCPs. You should see phonebox with 13 tools. list_phones is a safe first call: it only reads.

What Windsurf can do with the phone

The Phonebox MCP tools Windsurf gets
TaskTools
Get a phonecreate_phone, list_phones, get_phone, start_phone
See the screenobserve: numbered text elements with labels, plus a screenshot
Use appsact: up to 20 taps, types, swipes and key presses per call
Install your buildcreate_app_upload, complete_app_upload, install_app, list_apps
Hand off to a personlive_view_url: a link to watch and control the phone
Stop payingpark_phone; reboot_phone when an app hangs

Windsurf reads the screen as text, so it taps “Sign in” by its label instead of guessing coordinates. Phonebox never retries a write to the phone on its own, so a slow response can't turn into a double order. A parked phone is free and keeps its apps, files and sign-ins. A running one costs $0.06 a minute, billed per second, and new accounts get $2 of credit with no card.

A first task

Paste into your agent
Build the debug APK and install it on my Phonebox phone.
Walk through the onboarding and settings screens I changed in this branch.
Read the screen before every action. Report anything that looks broken,
with the screen text you saw. Park the phone when you finish.

Other agents

The same server works in Claude Code, Codex, Cursor, Gemini CLI, Cline and GitHub Copilot. See the Android MCP server guide for every tool, and cloud phones for AI agents for the bigger picture.

Questions

Can Windsurf control an Android phone or emulator?

Yes, through MCP. Add Phonebox's hosted server to mcp_config.json with serverUrl set to https://phonebox.dev/mcp and an Authorization header. Windsurf's Cascade agent can then create a cloud Android phone, read its screen, tap, type, install an APK and park it.

How do I keep the Phonebox key out of mcp_config.json?

Write the header as "Bearer ${env:PHONEBOX_API_KEY}" and set the variable with export PHONEBOX_API_KEY=$(phonebox token) before starting Windsurf. An unset variable becomes an empty string, and the server answers 401.

What does it cost?

$0.06 per phone-minute while the phone runs, billed per second. Parked phones are free and keep their apps and sign-ins. New accounts get $2 of credit with no card.

Get started with Phonebox — $2 in free credit, no card required.

The Phonebox team

← All guides