Skip to main content
Glama
276793422

frida_mcp

by 276793422

frida_mcp

A Model Context Protocol server for Frida, built on the official MCP Python SDK (FastMCP).

It exposes Frida's dynamic-instrumentation capabilities as MCP tools so an AI agent (or any MCP client) can enumerate devices/processes, attach, inject JavaScript, hook functions, read memory, and collect results.

Features

  • Full device & process management (list / spawn / attach / resume / kill)

  • Persistent sessions and per-script lifecycle (load / unload individual scripts)

  • Arbitrary JavaScript execution:

    • load_script — persistent (hooks / interceptors), messages captured

    • exec_script — one-shot, returns the evaluated value + console.log synchronously

  • rpc_call — invoke rpc.exports on a persistent script

  • Per-(session, script) message queues with binary data support

  • Convenience tools: read_memory, list_modules, list_exports, find_export, scan_memory

  • Robust error handling (tools return {status: "error"} instead of throwing)

  • Binary-data cap to keep large dumps from flooding the channel

Related MCP server: Frida MCP Server

Tools

Device / process

  • list_devices() — local, USB, remote

  • list_processes(device_id?) / find_process(name, device_id?)

  • spawn_process(program, device_id?, paused=true) — suspended by default so you can hook before resume

  • resume_process(pid, device_id?) / kill_process(pid, device_id?)

Session

  • attach_to_process(pid, device_id?, name?)session_id

  • list_sessions() — pids, scripts, pending message counts, detached state

  • detach_session(session_id) — unload all scripts + detach

Script

  • load_script(session_id, source, name?, runtime?)script_id — persistent; messages captured

  • unload_script(session_id, script_id)

  • exec_script(session_id, source, timeout?) — one-shot, returns value + logs

  • rpc_call(session_id, script_id, method, args?, timeout?) — call rpc.exports

Messages

  • get_messages(session_id, script_id?, clear?, limit?, include_data?) — retrieve send() output; binary data base64-inlined up to a cap

Convenience

  • read_memory(session_id, address, size) → hex + base64

  • list_modules(session_id)

  • list_exports(session_id, module, kind?)

  • find_export(session_id, module, export_name)

  • scan_memory(session_id, pattern, module?, max_hits?)

Resources

  • frida://version — Frida binding version

  • frida://sessions — JSON snapshot of active sessions

Install

pip install -e E:/Tools/Frida/frida_mcp
# also need the frida runtime on the host
pip install frida

Requires Python 3.8+, Frida 16+, and a reachable frida-server (or gadget) on the target.

Configure (.mcp.json)

{
  "mcpServers": {
    "frida_mcp": {
      "command": "frida_mcp"
    }
  }
}

Typical workflow: hook before the target loads

spawn_process("com.example.app")            # -> pid (suspended)
attach_to_process(pid)                      # -> session_id
load_script(session_id, "<hook JS>")        # -> script_id (keep-alive)
resume_process(pid)                         # app runs; hook fires
get_messages(session_id)                    # collect send() output
unload_script(session_id, script_id)        # or detach_session(session_id)

Example: dump every Lua chunk that the Lua VM compiles

Bypasses any AssetBundle encryption entirely — by the time the Lua VM sees the source, it's already decrypted. The script writes each chunk to the device filesystem and only reports small metadata back (so the MCP channel never sees the full payload):

// load_script(source=...)
var DUMP = "/sdcard/lua_dump/";
var counter = 0;

Interceptor.attach(Module.findExportByName("libxlua.so", "luaL_loadbuffer"), {
  onEnter: function (args) {
    try {
      var buf = args[1];
      var len = args[2].toInt32();
      var bytes = Memory.readByteArray(buf, len);
      var path = DUMP + Date.now() + "_" + (counter++) + ".lua";
      var f = new File(path, "wb");
      f.write(bytes);
      f.flush(); f.close();
      send({ type: "lua_chunk", path: path, size: len, head: hexdump(bytes, { length: 32 }) });
    } catch (e) { send({ type: "err", err: e.toString() }); }
  }
});

The exact chunk-name argument to luaL_loadbuffer depends on the build; tune per target. Then adb pull /sdcard/lua_dump and you have the plaintext Lua.

Notes & limits

  • Tools return {status: "error", error: "..."} (or status: "timeout") instead of throwing.

  • Binary data larger than 64 KiB is reported by size only — write to a device file and adb pull.

  • Anti-Frida defences in the target are the environment's concern — confirm you can attach first.

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    An MCP-compliant server that enables AI systems to interact with mobile and desktop applications through Frida's dynamic instrumentation capabilities, allowing for process management, device control, JavaScript execution, and script injection.
    405
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A comprehensive MCP server that exposes Frida's dynamic instrumentation toolkit to AI agents for process management, script injection, and memory operations. It provides over 50 tools to interact with local and mobile devices, enabling advanced capabilities like function hooking and memory analysis.
    55
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A comprehensive MCP server for Frida dynamic instrumentation, enabling AI agents to manage devices, processes, scripts, memory, and ADB operations.
    39
    23
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    A Frida MCP server for authorized dynamic analysis and application security research, exposing device/session management, script injection, process and memory inspection, and platform-specific workflows.
    100
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/276793422/frida_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server