Llim.run

Remote MCP server

https://mcp.limrun.com/mcp is Limrun's org-level Model Context Protocol server. Connect it once and any MCP client can create iOS simulators and Android emulators, drive them by screenshot and accessibility tree, and delete them when done. Three things to know up front:

Remote server or per-instance server

Every instance also runs its own MCP server. Pick by who holds the credential:

AspectRemote server (this page)Per-instance server
Endpointhttps://mcp.limrun.com/mcp for the whole orgOne URL per instance, from status.mcpUrl
AuthOAuth sign-in, or an org API keyThat instance's status.token
Lifecycle toolsCreate, list, inspect, delete instancesNone; the instance must already exist
Blast radiusEverything instance-shaped in the orgOne instance; the token dies with it
Best forAn agent that owns the whole loop, from "get me a device" to cleanupHanding one sandboxed device to an agent without an org credential

Connect from Claude Code

Add the server, then authenticate from inside a session. The /mcp command lists servers and starts the browser sign-in:

claude mcp add --transport http limrun https://mcp.limrun.com/mcp

Open a Claude Code session, run /mcp, select limrun, and choose Authenticate. After you approve access in the browser, /mcp shows the server as connected with its 15 tools. Access tokens rotate automatically from then on; you will not be asked to sign in again unless you revoke access.

Connect from other MCP clients

Any client that speaks the MCP streamable HTTP transport works with one of two auth setups:

What the server exposes

Fifteen tools in three groups.

Lifecycle and assets. These need no instanceId; they operate at the org level.

ToolWhat it does
create-ios-simulatorCreates a simulator and blocks until it is ready, then returns the instance ID. Optional apps pre-installs by asset name or public URL; optional inactivityTimeout overrides the org default; optional idempotencyKey makes retries return the same instance.
create-android-emulatorSame contract for Android emulators. apps entries are asset names or public APK URLs.
list-instancesLists the org's running instances with their IDs and states.
get-instance-statusState and error message for one instance ID.
delete-instanceTerminates an instance. The one destructive tool.
list-appsNames of app assets available for the apps field of the create tools, per platform.

iOS device control: ios-screenshot-and-element-tree, ios-use (batched taps, typing, scrolling, and the rest of the action surface), ios-open-url, ios-app (list, launch, terminate), ios-logs. Android device control: android-screenshot-and-element-tree, android-use, android-open-url. Each takes the instanceId returned by a create tool. The action surfaces match the per-instance server; the per-instance page documents them in detail.

Apps install at creation time through the apps field. There is no install tool for a running instance: the MCP protocol gives the server no access to the client's filesystem, so anything that moves local bytes (an APK, a simulator build, an Xcode project) belongs to the CLI and SDK. Upload builds as assets first and they show up in list-apps. Instances created here carry a created-by: mcp label.

Skills for what the tools leave out

The fifteenth tool, get-agent-skill, hands agents the procedures the surface above leaves out. The server's initialize response says builds and local files belong to the lim CLI, and it serves the step-by-step CLI procedures as Agent Skills in three forms: the get-agent-skill tool (pass one of limrun-xcode, limrun-gradle, limrun-xcode-bazel, limrun-expo-development), skill:// resources with a skills/list catalog for clients that follow the MCP skills extension, and the same content installable locally with npx skills add limrun-inc/skills. An agent that needs to build something asks for the skill, installs the CLI it describes, and continues in its own shell.

Revoking access

Tokens minted through OAuth appear in the console under Settings, API Keys, described as MCP OAuth tokens. Revoking one invalidates only the current access token: the client is challenged on its next request and rotates to a fresh token with its refresh token, without asking you to sign in again. To disconnect a client, remove the server from that client's configuration.

Next steps

bot

Per-instance MCP

Hand a single instance to an agent using only that instance's token, no org credential involved.

terminal

CLI for coding agents

Builds, asset uploads, and everything else the MCP surface leaves out.

database

Asset storage

Upload the app archives that list-apps offers to the create tools.