README.md•4.03 kB
# Frida MCP
A Model Context Protocol (MCP) implementation for Frida dynamic instrumentation toolkit.
## Overview
This package provides an MCP-compliant server for Frida, enabling AI systems to interact with mobile and desktop applications through Frida's dynamic instrumentation capabilities. It uses the official [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) to enable seamless integration with AI applications.
## Demo
https://github.com/user-attachments/assets/5dc0e8f5-5011-4cf2-be77-6a77ec960501
## Features
- Built with the official MCP Python SDK
- Comprehensive Frida tools exposed through MCP:
- Process management (list, attach, spawn, resume, kill)
- Device management (USB, remote devices)
- Interactive JavaScript REPL with real-time execution
- Script injection with progress tracking
- Process and device monitoring
- Resources for providing Frida data to models
- Prompts for guided Frida analysis workflows
- Progress tracking for long-running operations
- Full support for all MCP transport methods
## Installation
### Prerequisites
- Python 3.8 or later
- pip package manager
- Frida 16.0.0 or later
### Quick Install
```bash
pip install frida-mcp
```
### Development Install
```bash
# Clone the repository
git clone https://github.com/yourusername/frida-mcp.git
cd frida-mcp
# Install in development mode with extra tools
pip install -e ".[dev]"
```
## Claude Desktop Integration
To use Frida MCP with Claude Desktop, you'll need to update your Claude configuration file:
1. Locate your Claude Desktop configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
2. Add the following to your configuration file:
```json
{
"mcpServers": {
"frida": {
"command": "frida-mcp"
}
}
}
```
## Usage
Once installed, you can use Frida MCP directly from Claude Desktop. The server provides the following capabilities:
### Process Management
- List all running processes
- Attach to specific processes
- Spawn new processes
- Resume suspended processes
- Kill processes
### Device Management
- List all connected devices (USB, remote)
- Get device information
- Connect to specific devices
### Smart Device Selection
- Launch the server with the desired mode each time. For example:
```bash
frida-mcp --mode remote --remote-address 10.211.55.3 --remote-alias windows_vm
```
The command above pins future MCP requests to the remote Frida server at `10.211.55.3:27042` and exposes it as `device_id="windows_vm"`.
- Available CLI flags:
- `--mode {local,usb,remote}` to force a specific target class.
- `--remote-address <host[:port]>` and optional `--remote-alias <name>` to register a remote endpoint for the session. When the port is omitted the default 27042 is used.
- `--fallback-order remote,usb,local` (comma separated) to control automatic discovery order when `device_id` is omitted.
- Environment variables (`FRIDA_DEFAULT_DEVICE`, `FRIDA_DEFAULT_REMOTE`, `FRIDA_DEVICE_FALLBACKS`) still work and merge with CLI settings.
- Use the `configure_remote_device` tool at runtime to add or update remote endpoints without restarting the MCP server.
### Interactive JavaScript REPL
- Create interactive sessions with processes
- Execute JavaScript code in real-time
- Monitor process state and memory
- Hook functions and intercept calls
- Capture console.log output
- Handle errors and exceptions gracefully
### Script Injection
- Inject custom JavaScript scripts
- Track injection progress
- Handle script errors and exceptions
### Resources
- Get Frida version information
- Access process list in human-readable format
- Access device list in human-readable format
## Development
```bash
# Clone repository
git clone https://github.com/yourusername/frida-mcp.git
cd frida-mcp
# Install development dependencies
pip install -e ".[dev]"
```
## License
MIT