Skip to main content
Glama
Frida MCP Server

Frida MCP Server

by dryfryce

Frida MCP Server

A comprehensive MCP (Model Context Protocol) server that exposes the full power of Frida's dynamic instrumentation toolkit to AI agents.

Features

55 tools covering all major Frida capabilities:

Device & Process Management

  • frida_list_devices - List all available Frida devices

  • frida_get_device_info - Get detailed device information

  • frida_list_processes - List running processes

  • frida_list_applications - List installed applications

  • frida_get_process - Get process details by name/PID

  • frida_spawn - Spawn a new process (suspended)

  • frida_resume - Resume a spawned process

  • frida_kill - Kill a process

Session Management

  • frida_attach - Attach to a running process

  • frida_detach - Detach from a session

Script Injection

  • frida_inject_script - Inject and run JavaScript in a process

  • frida_unload_script - Unload an injected script

  • frida_rpc_call - Call RPC functions in scripts

  • frida_evaluate - Evaluate arbitrary JavaScript

Function Hooking

  • frida_hook_function - Hook native functions

  • frida_intercept_method - Intercept ObjC/Java methods

  • frida_trace - Trace function calls with patterns

Memory Operations

  • frida_memory_scan - Scan memory for patterns

  • frida_memory_read - Read bytes from memory

  • frida_memory_write - Write bytes to memory

  • frida_search_strings - Search for strings in memory

Module Enumeration

  • frida_list_modules - List loaded modules

  • frida_list_exports - List module exports

  • frida_list_imports - List module imports

  • frida_resolve_exports - Find functions by pattern (ApiResolver)

Java (Android)

  • frida_java_enumerate_classes - List Java classes

  • frida_java_hook_method - Hook Java methods

  • frida_java_find_instances - Find class instances on heap

  • frida_java_call_method - Call Java methods

Objective-C (iOS/macOS)

  • frida_objc_enumerate_classes - List ObjC classes

  • frida_objc_hook_method - Hook ObjC methods

  • frida_objc_find_instances - Find class instances on heap

Advanced

  • frida_stalker_trace - Instruction-level tracing

  • frida_inject_library - Inject shared libraries

  • frida_enable_spawn_gating - Intercept new processes

  • frida_disable_spawn_gating - Disable spawn gating

  • frida_get_pending_spawn - Get pending spawned processes

  • frida_get_process_info - Detailed process information

File Operations

  • frida_pull_file - Download file from device

  • frida_push_file - Upload file to device

Installation

# Install dependencies
pip3 install frida frida-tools mcp

# Or with --break-system-packages on newer Ubuntu
pip3 install --break-system-packages frida frida-tools mcp

Usage

As stdio MCP server

python3 server.py

Example MCP configuration

{
  "mcpServers": {
    "frida": {
      "command": "python3",
      "args": ["/path/to/frida-mcp/server.py"]
    }
  }
}

Example Workflows

1. List processes and attach

1. Call frida_list_processes to see running processes
2. Call frida_attach with target="processName" or target=1234 (PID)
3. Use the returned session_id for further operations

2. Hook a function

1. frida_attach to the target process
2. frida_hook_function with the session_id, function name, and optional onEnter/onLeave code
3. Observe the script_id and retrieve logs with frida_unload_script when done

3. Trace SSL/crypto calls

1. frida_attach to a network application
2. frida_trace with include=["*SSL*", "*crypto*"] to see all SSL-related calls

4. Android app analysis

1. frida_list_applications on USB device to find the app
2. frida_attach to the app
3. frida_java_enumerate_classes to explore classes
4. frida_java_hook_method to intercept specific methods
5. frida_java_find_instances to find live objects

5. Memory forensics

1. frida_attach to the target process
2. frida_search_strings to find interesting strings
3. frida_memory_read to dump specific memory regions
4. frida_memory_scan for byte patterns

Device Types

  • local - Local system (default)

  • usb - USB-connected device (Android/iOS with frida-server)

  • remote - Remote frida-server over TCP

Requirements

  • Python 3.8+

  • Frida 16.0+ (pip install frida frida-tools)

  • MCP SDK (pip install mcp)

For mobile device support:

  • Android: Install frida-server on the device

  • iOS: Install frida via jailbreak or use frida-gadget

Security Notes

⚠️ Frida is a powerful tool that can be used for both security research and malicious purposes. Only use on systems you own or have explicit permission to test.

License

MIT

Memory Management (NEW)

  • frida_memory_alloc - Allocate memory in target process

  • frida_memory_protect - Change memory page permissions

  • frida_enumerate_ranges - List memory ranges/maps

Thread Operations (NEW)

  • frida_enumerate_threads - List all threads with state

  • frida_backtrace - Get stack backtrace

Symbol Resolution (NEW)

  • frida_debug_symbol - Resolve symbols from address/name

  • frida_list_symbols - List debug symbols from module

Native Calling (NEW)

  • frida_native_function - Call native functions directly

  • frida_cmodule - Compile and load inline C code

ObjC Extended (NEW)

  • frida_objc_call_method - Call ObjC methods on class/instance

Java Extended (NEW)

  • frida_java_load_dex - Load DEX files dynamically

Network (NEW)

  • frida_socket_connect - Create socket connections from process

Available Tools

55 tools
frida_apk_inspectC

Inspect an Android APK file using frida-apk.

Inputs: apk_path (required).

frida_attachC

Attach to a running process. Returns a session ID for further operations.

Inputs: target (required), device_id, device_type.

frida_backtraceC

Get stack backtrace for a thread. Useful for debugging and analysis.

Inputs: session_id (required), thread_id, limit.

frida_cmoduleC

Compile and load inline C code for high-performance hooks. Returns symbols exported by the C code.

Inputs: session_id (required), code (required), symbols.

frida_compile_agentB

Compile a Frida agent (JavaScript/TypeScript) using frida-compile. Useful for complex agents with dependencies.

Inputs: source_code (required), output_filename.

frida_debug_symbolC

Resolve debug symbol information from an address or find address from symbol name.

Inputs: session_id (required), address, name.

frida_detachC

Detach from a session.

Inputs: session_id (required).

frida_disable_spawn_gatingC

Disable spawn gating.

Inputs: device_id, device_type.

frida_enable_spawn_gatingC

Enable spawn gating to intercept new processes before they run.

Inputs: device_id, device_type.

frida_enumerate_rangesC

Enumerate memory ranges/maps in the process with their protections.

Inputs: session_id (required), protection.

frida_enumerate_threadsC

List all threads in the process with their state and context.

Inputs: session_id (required).

frida_evaluateC

Evaluate arbitrary JavaScript in the Frida runtime of an attached process.

Inputs: session_id (required), code (required).

frida_get_device_infoC

Get detailed information about a specific device including system parameters.

Inputs: device_id, device_type.

frida_get_frontmostC

Get the frontmost application (mobile devices).

Inputs: device_id, device_type.

frida_get_pending_spawnC

Get list of processes waiting in spawn gate.

Inputs: device_id, device_type.

frida_get_processC

Get detailed info about a specific process by name or PID.

Inputs: process (required), device_id, device_type.

frida_get_process_infoC

Get detailed info about the attached process (arch, platform, threads, etc.).

Inputs: session_id (required).

frida_hook_functionC

Hook a specific function to log calls, modify arguments, or change return values.

Inputs: session_id (required), function (required), module, on_enter, +1 more.

frida_inject_libraryC

Inject a shared library (.so/.dll/.dylib) into the target process.

Inputs: pid (required), library_path (required), entrypoint (required), data, +2 more.

frida_inject_scriptC

Inject and run a Frida JavaScript script in a process. The script can hook functions, intercept calls, modify behavior, read memory, etc.

Inputs: session_id (required), script (required), on_message.

frida_intercept_methodC

Intercept an Objective-C method (iOS) or Java method (Android).

Inputs: session_id (required), class_name (required), method_name (required), implementation.

frida_java_call_methodC

Call a method on a Java class or instance (Android).

Inputs: session_id (required), class_name (required), method_name (required), args, +1 more.

frida_java_enumerate_classesC

Enumerate all loaded Java classes (Android). Returns class names matching an optional pattern.

Inputs: session_id (required), pattern.

frida_java_find_instancesC

Find live instances of a Java class on the heap (Android).

Inputs: session_id (required), class_name (required), limit.

frida_java_hook_methodC

Hook a Java method (Android). Log calls, modify args/return values.

Inputs: session_id (required), class_name (required), method_name (required), overload, +3 more.

frida_java_load_dexC

Load a DEX file dynamically into the Android runtime.

Inputs: session_id (required), dex_path (required), class_name.

frida_killC

Kill a process by PID.

Inputs: pid (required), device_id, device_type.

frida_list_applicationsC

List all installed applications on a device (useful for mobile devices).

Inputs: device_id, device_type.

frida_list_devicesA

List all available Frida devices (local, USB, remote). Returns device ID, name, and type.

Inputs: no named parameters.

frida_list_exportsC

List all exported functions from a module.

Inputs: session_id (required), module (required).

frida_list_importsC

List all imported functions in a module.

Inputs: session_id (required), module (required).

frida_list_modulesC

List all loaded modules/libraries in a process.

Inputs: session_id (required).

frida_list_processesB

List all running processes on a device. Returns PID, name, and parameters.

Inputs: device_id, device_type.

frida_list_symbolsC

List debug symbols from a module.

Inputs: session_id (required), module (required), filter.

frida_memory_allocC

Allocate memory in the target process. Returns the address of allocated memory.

Inputs: session_id (required), size (required), protection.

frida_memory_protectC

Change memory protection/permissions for a memory region.

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

frida_memory_readC

Read bytes from a specific memory address.

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

frida_memory_scanC

Scan process memory for a pattern.

Inputs: session_id (required), pattern (required), protection.

frida_memory_writeC

Write bytes to a specific memory address.

Inputs: session_id (required), address (required), data (required).

frida_native_functionC

Call a native function directly by address or name. Specify return type and argument types.

Inputs: session_id (required), address (required), return_type, arg_types, +1 more.

frida_objc_call_methodC

Call an Objective-C method on a class or instance (iOS/macOS).

Inputs: session_id (required), class_name (required), method_name (required), args, +2 more.

frida_objc_enumerate_classesC

Enumerate all loaded Objective-C classes (iOS/macOS).

Inputs: session_id (required), pattern.

frida_objc_find_instancesC

Find live instances of an ObjC class on the heap (iOS/macOS).

Inputs: session_id (required), class_name (required), limit.

frida_objc_hook_methodC

Hook an Objective-C method (iOS/macOS).

Inputs: session_id (required), class_name (required), method_name (required), log_args, +1 more.

frida_pull_fileC

Pull/download a file from the device.

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

frida_push_fileC

Push/upload a file to the device.

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

frida_resolve_exportsC

Find functions matching a pattern using ApiResolver. Supports wildcards.

Inputs: session_id (required), query (required), limit.

frida_resumeC

Resume a spawned process.

Inputs: pid (required), device_id, device_type.

frida_rpc_callC

Call an exported RPC function in an injected script.

Inputs: script_id (required), method (required), args.

frida_search_stringsC

Search for strings in process memory.

Inputs: session_id (required), pattern (required), case_sensitive, limit.

frida_socket_connectC

Create a socket connection from within the target process.

Inputs: session_id (required), host (required), port (required), type.

frida_spawnA

Spawn a new process in suspended state. Returns PID. Use frida_resume to start it.

Inputs: program (required), args, env, cwd, +2 more.

frida_stalker_traceB

Trace execution at instruction/block level using Stalker. Very powerful but heavy.

Inputs: session_id (required), thread_id, events, duration.

frida_traceC

Trace function calls matching a pattern. Returns call logs with arguments and return values.

Inputs: target (required), include (required), exclude, duration, +2 more.

frida_unload_scriptC

Unload a previously injected script.

Inputs: script_id (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 55 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear boundaries, such as frida_attach for attaching to processes and frida_memory_read for reading memory. However, some overlap exists, like frida_hook_function, frida_intercept_method, frida_java_hook_method, and frida_objc_hook_method, which all involve hooking but target different platforms or languages, potentially causing confusion if not carefully described.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with a 'frida_' prefix, making them predictable and easy to parse. The naming convention is uniform across all 55 tools, with no deviations in style or structure.

    Tool Count2/5

    With 55 tools, the count is excessive for a single server, likely overwhelming for agents and leading to decision paralysis. While Frida is a comprehensive framework, this many tools suggests poor scoping, as many could be consolidated or grouped into subcategories.

    Completeness5/5

    The tool set provides complete coverage for dynamic instrumentation and analysis tasks, including process management, memory operations, hooking, scripting, and platform-specific features for Android and iOS. No obvious gaps are present; it supports full lifecycle operations from spawning to debugging.

    Related MCP Connectors