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
| Name | Required | Description | Default |
|---|---|---|---|
| bundleId | Yes | ||
| sessionId | Yes |
Implementation Reference
- src/mcp/mcp-server.ts:330-368 (registration)Registers the 'launch-app' MCP tool, including input schema (sessionId, bundleId) and handler function that delegates to simulatorManager.launchAppthis.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 }; } } );
- src/mcp/mcp-server.ts:336-367 (handler)Handler function for the launch-app tool that logs the action, calls simulatorManager.launchApp, and returns success/error responseasync ({ 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 }; } }
- src/mcp/mcp-server.ts:332-334 (schema)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; } }