Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Frida MCP Serverspawn notepad.exe and create an interactive session"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Frida MCP Server
A MCP server that provides dynamic instrumentation capabilities through Frida. Built with TypeScript and optimized for Bun runtime.
Features
Dynamic Instrumentation: Hook functions, inspect memory, and modify behavior of running processes
Device Management: Support for local, USB, and remote Frida devices
Process Control: Spawn, attach, resume, and kill processes
Interactive Sessions: Create persistent sessions for complex instrumentation workflows
Script Execution: Execute JavaScript code with both one-shot and persistent modes
File Operations: Download files from instrumented processes and query module information
Prerequisites
Installation
No installation required! Use npx to run directly from GitHub (see Configuration below).
For local development:
Note: While this project is built with Bun, npx (from npm) is required to run from GitHub due to native dependency requirements. Use npx --yes github:nonsleepr/frida-mcp.ts to run the server.
Configuration
Environment Variables
FRIDA_DEFAULT_DEVICE: Default remote device connection string (e.g., "192.168.1.100:27042" or "192.168.1.100", port defaults to 27042)
Claude Desktop Configuration
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Roo Configuration
Add this to your project's .roo/mcp.json:
Note: Set FRIDA_DEFAULT_DEVICE to your Frida server's connection string (hostname:port or just hostname), or leave it empty to use local devices.
Available Tools
Process Management
Tool | Description | Parameters |
| Spawn a process with Frida attached in paused state. The process will be paused at startup. Use |
|
| Resume a spawned process. |
|
| Kill a process by PID. |
|
Interactive Sessions
Tool | Description | Parameters |
| Create an interactive session for dynamic instrumentation. Establishes a Frida session for injecting JavaScript, hooking functions, and monitoring the target process. The session persists until explicitly closed or the process terminates. |
|
| Execute JavaScript code within an existing Frida session. All scripts are persistent and continue running. Use |
|
| Load and execute a Frida JavaScript file into an existing session. All scripts are persistent and continue running. Use |
|
File Operations
Tool | Description | Parameters |
| Download a file from remote system using Frida instrumentation. Uses double backslashes for Windows paths. Attaches to specified PID or finds explorer.exe. Works best for files up to ~500MB with 60s timeout. |
|
Available Resources
Resources provide real-time, read-only access to Frida state via URI.
Direct Resources
URI | Description |
| List all connected Frida devices |
| List all active Frida sessions and their statuses |
| Frida tips & non-obvious JavaScript API features |
Resource Templates
URI Template | Description |
| Get detailed information about a specific device by ID |
| List processes on a specific Frida device. Use "default", "local", "usb", or "remote" for automatic device selection, provide a specific device ID, or use a connection string (hostname:port or hostname). |
| Find a process by name (case-insensitive partial match) on a specific device. Use "default" for configured remote device. Supports connection strings (hostname:port or hostname). |
| Get main module information for a process (path, base address, size). Use "default" for configured remote device. Supports connection strings (hostname:port or hostname). |
| Retrieve messages from persistent scripts with default 100 message limit. Messages are consumed when retrieved. |
| Retrieve messages from persistent scripts with custom limit. Use |