Skip to main content
Glama
frida-mcp
by cbxss

frida-mcp

MCP server for Frida-based mobile security testing. Exposes Frida functionality as MCP tools for AI-assisted security research.

Requirements

  • Python 3.11+

  • Frida server running on target device

  • ADB access for Android devices

  • Rooted device (for most operations)

Related MCP server: Frida MCP Server

Install

cd frida-mcp
uv pip install -e .

Build the Frida agent (required):

cd agent
npm install
npm run build

Add to Claude Code

claude mcp add frida-mcp -- frida-mcp

Tools

Connection & Session Management

Tool

Description

list_devices

List all available Frida devices (USB, remote, local)

list_processes

List running processes on a device

list_apps

List installed applications on a device

connect

Attach to app by bundle ID, name, or PID. Supports spawn=true for fresh launch.

disconnect

Disconnect from the current session

is_connected

Check if Frida session is still alive and healthy

list_sessions

List all active Frida sessions (multi-device support)

switch_session

Switch to a different active session by ID

App Lifecycle (ADB-based)

Tool

Description

get_pid

Get PID of a running app by package name

launch_app

Launch app via ADB and return its PID

stop_app

Force stop an app by package name

spawn_and_attach

Force stop, launch fresh, and attach Frida in one step

Memory Operations

Tool

Description

memory_list_modules

List all loaded modules (libraries) in the process

memory_list_exports

List exports (functions) from a specific module

memory_search

Search process memory for hex pattern or string

memory_read

Read memory at a specific address

memory_write

Write bytes to memory address (for patching)

get_module_base

Get base address of a module by name (partial match)

Android Java Hooking

Tool

Description

android_list_classes

List loaded Java classes, optionally filtered

android_list_methods

List methods of a Java class

android_hook_method

Hook a Java method to monitor calls

android_search_classes

Search for classes matching a pattern

android_ssl_pinning_disable

Disable SSL certificate pinning

android_get_current_activity

Get the current foreground activity

dump_class

Dump all methods, fields, and constructors of a class

heap_search

Search Java heap for live instances of a class

Persistent Hooks

Tool

Description

install_hook

Install a persistent hook script that collects messages

get_hook_messages

Retrieve collected messages from persistent hooks

clear_hook_messages

Clear the hook message buffer

uninstall_hooks

Unload all persistent hook scripts

list_hooks

List all installed persistent hooks

hook_native

Hook a native function by module+offset

File Operations

Tool

Description

file_ls

List files in a directory on the device

file_read

Read a text file from the device

file_download

Download a file from device to local machine

Custom Scripting

Tool

Description

run_script

Execute custom Frida JavaScript code

run_java

Run JavaScript within Java.performNow context

Usage Example

1. list_devices          → Find your device
2. connect target=com.example.app spawn=true  → Attach to app
3. android_search_classes pattern=crypto      → Find crypto classes
4. android_hook_method class_name=... method_name=...  → Hook methods
5. get_hook_messages     → See captured calls

Notes

  • SELinux is automatically set to permissive mode when connecting (required for Frida injection on many devices)

  • The spawn=true option uses ADB-based launch which is more reliable than Frida's native spawn

  • Multi-session support allows attaching to multiple apps/devices simultaneously

Available Tools

37 tools
android_get_current_activityA

Get the current foreground activity

Inputs: no named parameters.

android_hook_methodA

Hook a Java method to monitor calls. Logs arguments, return values, and optionally backtraces.

Inputs: class_name (required), method_name (required), dump_args, dump_return, +1 more.

android_list_classesA

List loaded Java classes, optionally filtered by pattern

Inputs: pattern.

android_list_methodsB

List methods of a Java class

Inputs: class_name (required).

android_search_classesB

Search for Java classes matching a pattern

Inputs: pattern (required).

android_ssl_pinning_disableA

Disable SSL certificate pinning to allow traffic interception

Inputs: no named parameters.

clear_hook_messagesA

Clear the hook message buffer without retrieving

Inputs: no named parameters.

connectA

Connect to an app by bundle ID, name, or PID. Must call this before using other tools. When spawn=True, uses reliable adb-based launch instead of Frida spawn.

Inputs: target (required), device_id, spawn, timeout_ms.

disconnectA

Disconnect from the current session

Inputs: no named parameters.

dump_classB

Dump all methods, fields, and constructors of a Java class

Inputs: class_name (required).

file_downloadB

Download a file from device to local machine

Inputs: remote_path (required), local_path (required).

file_lsB

List files in a directory on the device

Inputs: path.

file_readA

Read a text file from the device

Inputs: path (required).

get_hook_messagesB

Get collected messages from persistent hooks installed via install_hook

Inputs: clear.

get_module_baseA

Get base address of a module by name (partial match). Returns {module: {name, base, size, path}}

Inputs: name (required).

get_pidA

Get PID of a running app by package name. Useful before attaching with connect().

Inputs: package (required), device_id.

hook_nativeA

Hook a native function by module+offset. Messages collected via get_hook_messages().

Inputs: module (required), offset (required), name.

install_hookA

Install a persistent hook script that stays active and collects messages. Use get_hook_messages to retrieve collected output.

Inputs: js_code (required), name.

is_connectedA

Check if Frida session is still alive and healthy. Returns connection status, PID, and device info.

Inputs: no named parameters.

launch_appA

Launch an app via adb and return its PID (smart wait - polls for process).

Inputs: package (required), activity, device_id, timeout_ms.

list_appsB

List installed applications on a device

Inputs: device_id.

list_devicesA

List all available Frida devices (USB, remote, local)

Inputs: no named parameters.

list_hooksA

List all installed persistent hooks with their names and indices

Inputs: no named parameters.

list_processesB

List running processes on a device

Inputs: device_id.

list_sessionsA

List all active Frida sessions. Supports multi-device workflows.

Inputs: no named parameters.

memory_list_exportsB

List exports (functions) from a specific module

Inputs: module_name (required).

memory_list_modulesA

List all loaded modules (libraries) in the process

Inputs: no named parameters.

memory_readA

Read memory at a specific address

Inputs: address (required), size (required).

memory_writeB

Write bytes to memory address (for patching)

Inputs: address (required), hex_bytes (required).

run_javaA

Run arbitrary Java code within Java.performNow context. Has access to Java.use(), Java.choose(), send(), etc. Return value is the result of the last expression.

Inputs: code (required).

run_scriptA

Execute custom Frida JavaScript code. Java bridge is auto-imported, so Java.perform(), Java.use(), etc. work directly.

Inputs: js_code (required).

spawn_and_attachA

Force stop app, launch fresh, and attach Frida. The reliable alternative to connect(spawn=True) which often times out.

Inputs: package (required), device_id, wait_ms.

stop_appB

Force stop an app by package name

Inputs: package (required), device_id.

switch_sessionA

Switch to a different active session by ID. Use list_sessions to see available sessions.

Inputs: session_id (required).

uninstall_hooksA

Unload all persistent hook scripts

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 37 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (connecting, hooking, memory, files). However, some overlap exists: `get_pid` and `launch_app` both provide PIDs; `spawn_and_attach` duplicates `connect(spawn=True)`; `run_java` and `run_script` are similar. Descriptions help differentiate but confusion is possible.

    Naming Consistency3/5

    Naming conventions are mixed: some tools use prefix_noun_verb (e.g., `android_get_current_activity`, `memory_read`), others use verb_noun (e.g., `list_apps`, `disconnect`), and some lack a clear pattern (e.g., `is_connected`). While prefixes like `android_`, `file_`, `memory_` provide consistency within groups, the overall pattern is not uniform.

    Tool Count3/5

    37 tools is on the high side but still manageable. The server covers a broad domain (Frida-based mobile analysis) and each tool serves a specific purpose. However, some tools could be consolidated (e.g., multiple hooking variants, PID retrieval tools slightly redundant).

    Completeness4/5

    The tool set covers most core operations: connection/session management, file operations, memory manipulation, Java and native hooking, class introspection, and process control. Minor gaps exist (e.g., no direct tool for Java field modification or method call), but `run_java` provides a workaround. Overall, the surface is quite complete for its domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP-compliant server that enables AI systems to interact with mobile and desktop applications through Frida's dynamic instrumentation capabilities, allowing for process management, device control, JavaScript execution, and script injection.
      465
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      A comprehensive MCP server that exposes Frida's dynamic instrumentation toolkit to AI agents for process management, script injection, and memory operations. It provides over 50 tools to interact with local and mobile devices, enabling advanced capabilities like function hooking and memory analysis.
      55
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      A comprehensive MCP server for Frida dynamic instrumentation, enabling AI agents to manage devices, processes, scripts, memory, and ADB operations.
      39
      37
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables AI models to perform Android dynamic analysis using Frida, including spawning and attaching to applications, listing apps, and injecting scripts.
      123
      -