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:
# Clone the repository
git clone https://github.com/nonsleepr/frida-mcp.ts
cd frida-mcp.ts
# Install dependencies
bun installNote: 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
{
"mcpServers": {
"frida": {
"command": "npx",
"args": ["--yes", "github:nonsleepr/frida-mcp.ts"],
"env": {
"FRIDA_DEFAULT_DEVICE": "192.168.1.100:27042"
}
}
}
}Roo Configuration
Add this to your project's .roo/mcp.json:
{
"mcpServers": {
"frida": {
"command": "npx",
"args": ["--yes", "github:nonsleepr/frida-mcp.ts"],
"env": {
"FRIDA_DEFAULT_DEVICE": "10.254.1.69:27042"
},
"disabled": false,
"alwaysAllow": []
}
}
}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 |
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.