Skip to main content
Glama
atom2ueki

MCP Server for iOS Simulator

launch-app

Launch an iOS app on a simulator by specifying the session ID and bundle ID, enabling programmatic control through the MCP Server for iOS Simulator.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bundleIdYes
sessionIdYes

Implementation Reference

  • Registers the 'launch-app' MCP tool, including input schema (sessionId, bundleId) and handler function that delegates to simulatorManager.launchApp
    this.server.tool( 'launch-app', { sessionId: z.string(), bundleId: z.string() }, async ({ sessionId, bundleId }) => { fileLogger.info(`Launching app on simulator: ${sessionId}`, { bundleId }); try { const success = await simulatorManager.launchApp(sessionId, bundleId); if (!success) { return { content: [{ type: 'text', text: `Failed to launch app on session: ${sessionId}` }], isError: true }; } return { content: [{ type: 'text', text: `App launched on session: ${sessionId}` }] }; } catch (error) { fileLogger.error(`Failed to launch app on session: ${sessionId}`, { error }); return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );
  • Handler function for the launch-app tool that logs the action, calls simulatorManager.launchApp, and returns success/error response
    async ({ sessionId, bundleId }) => { fileLogger.info(`Launching app on simulator: ${sessionId}`, { bundleId }); try { const success = await simulatorManager.launchApp(sessionId, bundleId); if (!success) { return { content: [{ type: 'text', text: `Failed to launch app on session: ${sessionId}` }], isError: true }; } return { content: [{ type: 'text', text: `App launched on session: ${sessionId}` }] }; } catch (error) { fileLogger.error(`Failed to launch app on session: ${sessionId}`, { error }); return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } }
  • Zod input schema for launch-app tool: requires sessionId (string) and bundleId (string)
    { sessionId: z.string(), bundleId: z.string()
  • SimulatorManager.launchApp helper method that retrieves the simulator session and calls the underlying appium-ios-simulator library's launchApp(bundleId) method
    /** * Launches an app on the simulator */ async launchApp(sessionId: string, bundleId: string): Promise<boolean> { const session = this.sessions.get(sessionId); if (!session) { fileLogger.warn(`Session not found: ${sessionId}`); return false; } try { await session.simulator.launchApp(bundleId); fileLogger.info(`App launched on simulator for session: ${sessionId}`); return true; } catch (error) { fileLogger.error(`Failed to launch app for session: ${sessionId}`, { error }); return false; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/atom2ueki/mcp-server-ios-simulator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server