list_apps
List installed applications on a connected Android device to identify targets for security testing. Use optional device ID or default to USB connection.
Instructions
List installed applications on a device
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | Device ID (optional, defaults to USB) |
Implementation Reference
- src/frida_mcp/device.py:41-55 (handler)The actual implementation of list_apps. Gets a Frida device (by device_id or USB default), enumerates installed applications, and returns a list of dicts with identifier, name, and pid.
def list_apps(device_id: str | None = None) -> list[dict]: """List installed applications on a device.""" if device_id: device = frida.get_device(device_id) else: device = frida.get_usb_device(timeout=5) apps = [] for app in device.enumerate_applications(): apps.append({ "identifier": app.identifier, "name": app.name, "pid": app.pid if app.pid else None, }) return apps - src/frida_mcp/tools.py:22-32 (schema)Tool registration definition for list_apps, including its name, description, and inputSchema (accepts optional device_id string).
Tool( name="list_apps", description="List installed applications on a device", inputSchema={ "type": "object", "properties": { "device_id": {"type": "string", "description": "Device ID (optional, defaults to USB)"}, }, "required": [], }, ), - src/frida_mcp/server.py:24-25 (registration)Dispatch/call_tool function that routes 'list_apps' requests to device.list_apps(), passing the device_id argument.
elif name == "list_apps": return device.list_apps(arguments.get("device_id")) - tests/test_tools.py:72-82 (helper)Test file that verifies 'list_apps' is present in the expected CORE_TOOLS set.
class TestExpectedTools: """Verify expected tools exist""" CORE_TOOLS = { "list_devices", "list_processes", "list_apps", "connect", "disconnect", "is_connected", }