Skip to main content
Glama
dryfryce

Frida MCP Server

by dryfryce
README.md
# 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

```bash
# 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

```bash
python3 server.py
```

### Example MCP configuration

```json
{
  "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

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.