Skip to main content
Glama

native_run_install_app

Install Android APK or iOS app files directly to mobile devices using native-run for development testing and deployment.

Instructions

Install app on device using native-run (works for Android APK & iOS app)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
platformNoandroid
appPathYes
deviceIdNo

Implementation Reference

  • The handler function that implements the core logic for the native_run_install_app tool: parses input arguments, checks if native-run is available, constructs the native-run command with appropriate flags, executes the process, handles errors, and returns a structured success response.
    handler: async (args: any) => {
      const parsed = NativeRunInstallAppSchema.parse(args);
      
      if (!(await isNativeRunAvailable())) {
        throw new Error('native-run is not installed. Install with: npm install -g native-run');
      }
    
      const runArgs = [
        parsed.platform,
        '--app', parsed.appPath,
        '--device'
      ];
    
      if (parsed.deviceId) {
        runArgs.push('--target', parsed.deviceId);
      }
    
      const result = await processExecutor.execute('native-run', runArgs);
    
      if (result.exitCode !== 0) {
        throw new Error(`Failed to install app on ${parsed.platform}: ${result.stderr}`);
      }
    
      return {
        success: true,
        data: {
          message: `App installed successfully on ${parsed.platform}`,
          platform: parsed.platform,
          appPath: parsed.appPath,
          deviceId: parsed.deviceId,
          tool: 'native-run'
        },
      };
    }
  • Zod validation schema defining the input parameters for the native_run_install_app tool: platform (android/ios), appPath (required), and optional deviceId.
    const NativeRunInstallAppSchema = z.object({
      platform: z.enum(['android', 'ios']).default('android'),
      appPath: z.string().min(1),
      deviceId: z.string().optional(),
    });
  • Registers the native_run_install_app tool in the createNativeRunTools() function's Map, including name, description, inputSchema (JSON Schema equivalent), and reference to the handler function.
    tools.set('native_run_install_app', {
      name: 'native_run_install_app',
      description: 'Install app on device using native-run (works for Android APK & iOS app)',
      inputSchema: {
        type: 'object',
        properties: {
          platform: {
            type: 'string',
            enum: ['android', 'ios'],
            default: 'android'
          },
          appPath: {
            type: 'string',
            minLength: 1
          },
          deviceId: {
            type: 'string'
          }
        },
        required: ['appPath']
      },
      handler: async (args: any) => {
        const parsed = NativeRunInstallAppSchema.parse(args);
        
        if (!(await isNativeRunAvailable())) {
          throw new Error('native-run is not installed. Install with: npm install -g native-run');
        }
    
        const runArgs = [
          parsed.platform,
          '--app', parsed.appPath,
          '--device'
        ];
    
        if (parsed.deviceId) {
          runArgs.push('--target', parsed.deviceId);
        }
    
        const result = await processExecutor.execute('native-run', runArgs);
    
        if (result.exitCode !== 0) {
          throw new Error(`Failed to install app on ${parsed.platform}: ${result.stderr}`);
        }
    
        return {
          success: true,
          data: {
            message: `App installed successfully on ${parsed.platform}`,
            platform: parsed.platform,
            appPath: parsed.appPath,
            deviceId: parsed.deviceId,
            tool: 'native-run'
          },
        };
      }
    });
  • Helper function used by the handler to check if the native-run CLI tool is installed and available in the system PATH.
    async function isNativeRunAvailable(): Promise<boolean> {
      try {
        await processExecutor.execute('native-run', ['--version']);
        return true;
      } catch {
        return false;
      }
    }
  • Metadata entry in the global TOOL_REGISTRY categorizing the native_run_install_app tool with its requirements, performance expectations, and safety flags.
    'native_run_install_app': {
      name: 'native_run_install_app',
      category: ToolCategory.ESSENTIAL,
      platform: 'cross-platform',
      requiredTools: [RequiredTool.NATIVE_RUN],
      description: 'Install app using native-run (APK/iOS)',
      safeForTesting: false,
      performance: { expectedDuration: 20000, timeout: 120000 }

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/cristianoaredes/mcp-mobile-server'

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