
Argent MCP Server: Setup for Claude Code, Cursor and Other Apps
Lets Claude, Cursor and other coding assistants drive iOS simulators, Android emulators, TVs and Electron apps to test and debug your app.
Argent gives your assistant hands for your app. It can boot a simulator, tap and type, read the screen, take screenshots, watch network traffic and profile performance. You can ask it to reproduce a bug, then record the steps as a repeatable test.
It runs on your machine. iOS needs a Mac with Xcode, and Android needs the Android platform tools. The vendor's setup command writes the config for your editor.
It can run JavaScript inside the app and read its cookies and storage, so point it at test builds, not accounts you care about.
Good for
- Mobile developers who want an assistant to reproduce and debug bugs on a simulator
- React Native teams profiling slow screens and extra renders
- QA engineers recording repeatable end-to-end flows
- Electron and TV app developers testing with real input
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 Argent MCP
Claude Code
- 1
Copy this prompt.
Add the Argent MCP server to Claude Code. Run this command: claude mcp add argent -- npx -y @swmansion/argent mcp 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.
Read-only mode: There is no read-only mode. Every tool can tap, type and run code on the connected device or app.
Argent needs Node.js 20.12 or newer. For iOS and tvOS you need a Mac with Xcode. For Android you need the Android platform tools (adb) on your PATH, and the Android Emulator package to boot virtual devices. Fire TV needs the Vega SDK, and HarmonyOS needs DevEco Studio. The vendor's own route is npx @swmansion/argent@latest init, which installs the package and writes the config for your editor; this command is the manual equivalent of the docs' argent mcp entry.
Built from the package data we hold. Not yet tested by us.
Tools
Lists the simulators, emulators, devices and apps you can drive
Shows iOS simulators, Android emulators and devices, Chromium or Electron apps, Fire TV (Vega) devices and HarmonyOS phones and emulators.
Try: “What simulators and emulators do I have available?”
Read ·
list-devicesStarts a simulator or emulator, or launches an Electron app
Boots an iOS simulator, Android emulator, Vega virtual device or HarmonyOS emulator, or starts your Electron app.
Try: “Boot an iPhone simulator.”
Runs code ·
boot-deviceOpens an app on the device
Starts an app by its bundle ID on iOS or package name on Android, with optional launch arguments.
Try: “Open my app on the simulator.”
Runs code ·
launch-appCloses and reopens an app
Terminates the app and launches it again.
Try: “Restart the app.”
Runs code ·
restart-appInstalls or reinstalls an app
Installs the app you point to and clears its data and granted permissions.
Try: “Reinstall the latest build on the emulator.”
Delete ·
reinstall-appOpens a link or deep link on the device
Opens a web address or app URL scheme on the device.
Try: “Open myapp://settings on the simulator.”
Runs code ·
open-urlGrants, denies or resets an app permission
Changes a runtime permission such as camera or location without going through the Settings screens.
Try: “Grant the app camera permission.”
Write ·
settings-permissionsChanges the device orientation
Sets portrait or either landscape orientation.
Try: “Rotate the simulator to landscape.”
Write ·
rotateFolds or unfolds a foldable device
Sets a foldable simulator or emulator to a posture or hinge angle.
Try: “Unfold the foldable emulator.”
Write ·
foldShakes the device
Sends a shake gesture, for example to open a dev menu.
Try: “Shake the device.”
Write ·
shakePresses a hardware button
Presses home, back, power, volume, app switch or the action button.
Try: “Press the home button.”
Write ·
buttonPresses a TV remote button
Sends remote or D-pad presses to Apple TV, Android TV or Fire TV.
Try: “Press the down arrow twice on the Apple TV.”
Write ·
tv-remoteStops the connection to one device
Ends the session for one device and frees its resources.
Try: “Stop the connection to the iPhone simulator.”
Runs code ·
stop-simulator-serverStops everything a device uses
Stops simulator servers, native devtools and TV helpers for a device.
Try: “Shut down all Argent device services.”
Runs code ·
stop-all-simulator-serversStops the Metro bundler on a port
Stops the React Native Metro bundler listening on the port you give.
Try: “Stop Metro on port 8081.”
Runs code ·
stop-metroTakes a screenshot of the device
Captures the current screen.
Try: “Take a screenshot of the simulator.”
Read ·
screenshotReads what is on screen as text
Returns the accessibility or DOM tree for the current screen so the assistant can find buttons and fields.
Try: “Describe what is on the screen.”
Read ·
describeCompares two screenshots
Compares two PNG images and summarizes the visual differences.
Try: “Compare the baseline screenshot with the new one.”
Files ·
screenshot-diffWaits until the screen stops changing
Blocks until content has rendered and the screen is steady.
Try: “Wait for the screen to finish loading.”
Read ·
await-screen-idleWaits for a screen element to appear or change
Blocks until an element reaches a state you ask for, instead of checking over and over.
Try: “Wait until the Continue button is enabled.”
Read ·
await-ui-elementTaps the screen
Taps at coordinates given as fractions of the screen.
Try: “Tap the Sign in button.”
Write ·
gesture-tapSwipes or drags between two points
Performs a smooth swipe or drag.
Try: “Swipe up to scroll the list.”
Write ·
gesture-swipeScrolls a Chromium app
Scrolls with mouse-wheel events in an Electron or Chromium app.
Try: “Scroll down the page.”
Write ·
gesture-scrollDrags with the mouse in a Chromium app
Presses, moves and releases the mouse in a Chromium app.
Try: “Drag the slider to the right.”
Write ·
gesture-dragPinches to zoom
Performs a pinch around a center point.
Try: “Zoom into the map.”
Write ·
gesture-pinchRotates content with two fingers
Draws a two-finger arc to rotate what is on screen.
Try: “Rotate the photo 90 degrees.”
Write ·
gesture-rotateSends a custom touch sequence
Plays any sequence of touch events for complex gestures.
Try: “Draw a circle on the canvas.”
Write ·
gesture-customTypes text or presses special keys
Types into the focused field or presses keys such as Enter.
Try: “Type my email into the field.”
Write ·
keyboardPastes text via the clipboard
Puts text on the device clipboard and pastes it. Works on simulators and emulators only.
Try: “Paste this address into the search box.”
Write ·
pasteRuns several interaction steps in one call
Executes a list of steps together to save round trips.
Try: “Open Settings, tap Wi-Fi and take a screenshot.”
Write ·
run-sequenceStarts recording the screen
Records the device screen to an h264 mp4 file.
Try: “Start recording the screen.”
Write ·
screen-recording-startStops the recording and returns the video
Stops recording and retrieves the video file.
Try: “Stop recording and give me the video.”
Files ·
screen-recording-stopConnects to the app's JavaScript debugger
Attaches to the JS runtime of a React Native or Chromium app.
Try: “Connect the debugger to the app.”
Runs code ·
debugger-connectShows the debugger connection status
Reports whether the debugger is connected and any diagnostics.
Try: “Is the debugger connected?”
Read ·
debugger-statusRuns JavaScript inside the app
Executes JavaScript in the app's runtime, Hermes on a device or V8 in Chromium, and returns the result.
Try: “Evaluate the current user object in the running app.”
Runs code ·
debugger-evaluateShows the current screen as React components
Returns a compact text tree of the React components on screen.
Try: “Show the React component tree.”
Read ·
debugger-component-treeInspects the React component at a point
Returns the component hierarchy at the screen coordinate you give.
Try: “What component is at this spot?”
Read ·
debugger-inspect-elementSummarizes the app's console logs
Returns the console logs captured from the app.
Try: “Show the console errors from the app.”
Read ·
debugger-log-registryReloads the Metro bundle
Restarts the bundle without restarting the native process.
Try: “Reload the JavaScript bundle.”
Runs code ·
debugger-reload-metroLists the app's captured web requests
Returns HTTP requests captured from the running app.
Try: “Show the failed network requests.”
Read ·
view-network-logsShows one captured request in full
Returns full details of a request by its ID.
Try: “Show details of that failing request.”
Read ·
view-network-request-detailsLists and manages tabs in a Chromium app
Lists, switches, opens and closes tabs or browser windows in a Chromium or Electron app.
Try: “List the open tabs.”
Write ·
chromium-tabsReads and writes cookies in a Chromium app
Reads and writes cookies, including HttpOnly ones.
Try: “Show the session cookie of the app.”
Write ·
chromium-cookiesReads and writes browser storage in a Chromium app
Reads and writes localStorage and sessionStorage of the active page.
Try: “Show localStorage for the page.”
Write ·
chromium-storageStarts CPU and React commit profiling
Starts CPU profiling and React commit capture on a connected React Native app. If another session owns the profiler it reports who, and only takes over when forced.
Try: “Start profiling my app, then I will open the settings screen.”
Runs code ·
react-profiler-startStops profiling and keeps the data
Stops the CPU profile and collects the React commit tree, which is stored in memory for the analysis tools.
Try: “Stop the profiler and tell me how many React commits it captured.”
Runs code ·
react-profiler-stopChecks the profiler session
Reports whether a profiling session is running and who owns it, with no side effects. Useful after a disconnect.
Try: “Is a profiling session still running?”
Read ·
react-profiler-statusWrites a performance report from a React profile
Builds a markdown report of slow React commits (16 ms or more) with render cascades, root causes and a table of top components, and saves the raw data to disk.
Try: “Analyze the profile and list the slowest commits.”
Files ·
react-profiler-analyzeFinds the source of a React component
Looks up a named component in your project and returns its file, line, whether it is memoized and about 50 lines of code.
Try: “Show me the source of the ProductList component.”
Files ·
react-profiler-component-sourceLists the hottest JavaScript functions
Returns the top functions by self time from the Hermes CPU profile, for work that is not React rendering.
Try: “Which functions use the most CPU in this profile?”
Read ·
react-profiler-cpu-summaryCounts component re-renders on a live app
Scans the live React fiber tree and returns a table of the components that rendered most, with durations. No profiling session needed.
Try: “Which components re-render the most right now?”
Read ·
react-profiler-rendersReturns the React fiber tree
Returns the component hierarchy as JSON with render durations, handy for tracing a library component or checking that the React Compiler is active.
Try: “Dump the fiber tree under the checkout screen.”
Read ·
react-profiler-fiber-treeStarts native profiling
Starts Instruments (xctrace) on iOS or Perfetto on Android to capture CPU, hangs and memory for the running app.
Try: “Start native profiling while I scroll the feed.”
Runs code ·
native-profiler-startStops native profiling and exports the trace
Stops xctrace or the Perfetto daemon and exports the trace data to disk.
Try: “Stop native profiling and export the trace.”
Runs code ·
native-profiler-stopWrites a report from a native trace
Parses the exported iOS or Android trace into a markdown report of CPU hotspots, UI hangs and memory leaks or RSS growth.
Try: “Analyze the native trace and show UI hangs.”
Files ·
native-profiler-analyzeQueries the CPU profile
Answers targeted questions about the Hermes CPU profile, such as top functions overall or CPU use in a time window. Needs a stopped React profile.
Try: “What was the CPU doing during the slow commit?”
Read ·
profiler-cpu-queryQueries React commits
Looks up commits by component, time range or index, or builds a parent-child cascade tree. Needs a stopped React profile.
Try: “Show every commit where ProductList rendered and why.”
Read ·
profiler-commit-queryQueries a native trace
Digs into a native trace: stacks during a hang, who calls a function, CPU per thread, or leak stacks. Needs an analyzed native trace.
Try: “Show the stacks during hang number 2.”
Read ·
profiler-stack-queryJoins React and native profiles
Matches native hangs to React commits by wall-clock time. Needs both the React and the native analysis first.
Try: “Correlate the native hangs with React commits.”
Read ·
profiler-combined-reportReloads a saved profiling session
Lists saved sessions or restores one from disk so the query tools can read it again without a new recording.
Try: “List my saved profiling sessions and load the latest.”
Files ·
profiler-loadReads your project setup
Returns a snapshot of a mobile project: package.json, Metro and Babel config, app.json, eas.json, platform folders, lockfile type, .env key names (not values), installed tool versions and CI config type.
Try: “Gather my workspace data and tell me which React Native setup I have.”
Files ·
gather-workspace-dataChecks native devtools on iOS
Reports whether the native devtools library is injected into the running iOS app.
Try: “Are the native devtools connected to my app?”
Read ·
native-devtools-statusLists native network requests
Returns requests captured at the NSURLProtocol level, including native modules and background transfers that JavaScript network logs miss.
Try: “Show native-level requests from the last minute.”
Read ·
native-network-logsFinds UIViews by property
Searches the running iOS app for views by class, accessibility identifier, label, tag or nativeID and returns their frames and properties.
Try: “Find the view with the identifier checkout-button.”
Read ·
native-find-viewsDumps the full UIKit view tree
Returns the complete UIKit view tree. Output can reach hundreds of KB, so the docs advise native-find-views for most questions.
Try: “Dump the view hierarchy with SwiftUI internals pruned.”
Read ·
native-full-hierarchyReads the native accessibility tree
Returns the screen's accessibility elements with frames, tap points in points and normalized tap points, and traits.
Try: “Describe the screen using the native accessibility tree.”
Read ·
native-describe-screenInspects the view at a point
Returns the deepest visible UIView at a screen point, ignoring whether it accepts touches, to identify unlabeled icons or overlays.
Try: “What view is drawn at x 120, y 300?”
Read ·
native-view-at-pointInspects the view that would get a touch
Returns the deepest UIView at a point that would actually receive the touch, to explain a tap that does nothing.
Try: “Which view receives a tap at x 120, y 300?”
Read ·
native-user-interactable-view-at-pointStarts recording an e2e test
Creates or resets a YAML file under .argent/e2e/ and starts recording device steps into it.
Try: “Start recording an e2e test called login.”
Write ·
e2e-start-recordingRuns a tool and records it as a step
Executes one Argent tool and appends it as a step in the e2e test being recorded.
Try: “Tap the login button and record it as a step.”
Runs code ·
e2e-add-stepAdds an echo step
Records an echo step in the e2e test, used as a progress marker in replays.
Try: “Add an echo step saying the form is filled.”
Write ·
e2e-add-echoRecords a local script step
Runs a local .mjs file you point to and records it as a step in the e2e test. This is arbitrary code on your machine.
Try: “Run scripts/seed.mjs and record it as a step.”
Runs code ·
e2e-add-scriptFinishes an e2e recording
Closes the e2e test being recorded and saves the YAML file.
Try: “Finish recording the login test.”
Write ·
e2e-finish-recordingReads an e2e test's precondition
Returns the precondition the test's author recorded, without running the test.
Try: “What does the login e2e test need before it runs?”
Files ·
e2e-read-prerequisiteReplays a saved e2e test
Runs a saved YAML e2e test step by step and returns a per-step report. The first failure stops the run.
Try: “Run the login e2e test and report the result.”
Runs code ·
e2e-executeApplies a pending Argent update
Updates the Argent install, global, local or both. The docs say to call it only after you agree to the update.
Try: “Update Argent to the latest version.”
Runs code ·
update-argentSilences update reminders
Hides the update notification for a number of hours you give.
Try: “Remind me about the Argent update in 24 hours.”
Write ·
dismiss-updateStages a design variant (macOS)
Stages one design alternative for one on-screen element and returns at once, so you can compare variants later. Registered on macOS only.
Try: “Propose a second layout for the Settings header.”
Write ·
propose_variantWaits for you to pick a variant (macOS)
Blocks until you finish choosing among the staged design variants. Registered on macOS only.
Try: “Wait for me to pick a variant.”
Read ·
await_user_selection
Read from the source code
Permissions
high risk · 5 things to watch
High risk
The assistant can operate your simulators, emulators and Electron apps, run JavaScript inside them, reinstall apps and clear their data, and read cookies and storage. Use test builds and test accounts, and review each action.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can run code inside your app
One tool executes JavaScript in the app's runtime, and the device tools tap and type as a user would. Use it on test builds only. github.com
Reinstalling an app clears its data
The reinstall tool wipes app data and granted permissions. Back up anything you need on the device first. github.com
It can read cookies and browser storage
For Chromium and Electron apps it reads and writes cookies, including HttpOnly ones, and localStorage. Do not point it at a signed-in personal session. github.com
Some tools run local code or update the install
e2e-add-script runs a .mjs file you name, e2e-execute replays saved tests that can include such scripts, and update-argent updates the installed package. Treat these like running a script from your own repo. github.com
Usage telemetry is on unless you turn it off
Argent's privacy notice says telemetry is enabled by default and lists install and update progress, which tools are called and whether they succeeded, and which AI coding tool drives it. It says it does not collect source code, file paths, tool inputs or device identifiers. Turn it off with `argent telemetry disable`. Some bundled binaries are proprietary. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Talks to | Local device and debugger connections. Usage telemetry unless you opt out |
|---|---|
| Sign-in and keys | No account or API key. |
Questions
Is the Argent MCP server official?
Yes, in the sense that Software Mansion, the company that makes Argent, publishes it from its own repo and npm package. It is not from Apple or Google, who do not offer an MCP server for simulators or emulators that we know of.
How do I add Argent to Claude Code or Cursor?
The vendor's route is its init command, which installs the package and writes the config for your editor. The install box shows the manual equivalent.
What do I need installed?
Node.js 20.12 or newer. For iOS and tvOS, a Mac with Xcode. For Android, the platform tools (adb) and the Android Emulator package. Fire TV needs the Vega SDK and HarmonyOS needs DevEco Studio.
Which editors does it support?
The docs list Claude Code, Cursor, VS Code, Devin Desktop, Zed, Gemini CLI, Codex CLI, opencode, Hermes and Kiro for automatic setup.
Is it free and open source?
The source code is Apache 2.0. The README says some bundled binaries, such as the simulator server, are proprietary.
Does it need an account or API key?
No. It runs locally and the docs mention no sign-in.
Can I run it read-only?
No read-only mode is documented. Every device tool can act on the device.
How many tools does it have?
The published 0.31.0 package registers 81 tools and hides 4 of them from MCP clients, so a client sees 77, plus 2 more on macOS. The list above covers all 79. The docs reference page shows fewer, and newer pre-release versions may add more.
Does it send telemetry?
Yes, by default. Software Mansion's privacy notice says it collects usage data such as which tools are called and whether they succeed, and not source code, file paths or tool inputs. Run argent telemetry disable to turn it off.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
@swmansion/argent- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 0.19.0
- License
- Apache-2.0
- Last commit
- Oct 31, 2026
- Open issues
- 431
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 6Hide
- Argent MCP server docs · github.com
- Argent installation · github.com
- Argent README · github.com
- Argent tools reference (v0.31.0) · github.com
- @swmansion/argent 0.31.0 · npmjs.com
- Argent privacy notice · github.com