MCP server for Frida dynamic instrumentation and analysis workflows, providing session management, JavaScript evaluation, snippet management, and prepared session orchestration
Server has 14 tools with explicit schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention (session_open, eval_js, install_snippet), which is good. However, descriptions are verbose and often exceed 200 chars, burying key details. Parameter descriptions exist but lack specificity on constraints, formats, and valid ranges. No input validation guidance or error recovery hints. Output schemas are not documented, LLMs cannot predict response structure. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is reasonable (single responsibility per tool), but chaining support is weak, tools don't consistently return IDs needed for downstream calls.
Call a named snippet root or one of its dotted methods after it has been installed.
Evaluate one-off JavaScript in the current Frida session. Prefer this before promoting logic into a managed snippet.
Inspect a named snippet and its last known root snapshot before deciding whether it must be reinstalled.
Install a named JavaScript snippet and keep its root handle alive in the current session for repeated calls. Successful installs also archive the snippet source under the current session directory, but that archive is not auto-replayed.
List named snippets tracked in the current session, including inactive metadata after a broken detach. This is live in-memory state, not the durable snippet archive on disk.
Inspect the prepared quick-session workspace, generated imports, config summary, and recent build outcome for a signature or the current prepared session.
session_open_quick description is 400+ chars and uses jargon ('template preset', 'quick_path.state', 'frida://service/config') without explaining prerequisites or expected outcomes. LLMs cannot determine when to call this vs session_open.
No output schemas documented for any tool. LLMs cannot predict response structure (e.g., does session_status return {state, pid, timestamp} or {session_id, status, metadata}?). Agents must guess or fail.
Parameters lack format/constraint documentation. 'mode' accepts 'spawn', 'attach', 'usb' but description does not enumerate valid values. 'template' accepts 'minimal' or other but 'other' is undefined. LLMs will hallucinate invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Prune cached quick-session workspaces by signature or age. Active session artifacts are kept unless you close the session first.
Remove a named snippet and call its dispose method when available. Use this for deterministic cleanup.
Close the current Frida debug session and release resources. Prefer this over waiting for idle timeout.
Open or reuse the current Frida debug session from an explicit workspace config. A real open creates a user-visible session root containing `session.json`, `events.jsonl`, `workspace/`, and `snippets/` for later inspection.
Recommended MCP entrypoint. Prepare or reuse a cached minimal agent workspace, always install `/rpc`, preload the template preset plus additive global capabilities, optionally import a copied self-contained `bootstrap_path` file or inline `bootstrap_source` into the generated `index.ts`, build with `frida-compile` from the MCP PATH plus a shared lightweight runtime cache, copy the prepared files into a per-session `workspace/`, then open or reuse the session from that runtime workspace. That generated `index.ts` is the effective quick compile entry. A real open also creates a user-visible session root containing `session.json`, `events.jsonl`, `workspace/`, and `snippets/`. Prefer `template="minimal"` when the bootstrap file already owns the real imports. Read `frida://service/config` first and confirm `quick_path.state == "ready"` before calling this tool.
Recover a broken Frida debug session without auto-replaying snippets. Reinstall required snippets explicitly after recovery.
Inspect the current Frida debug session before choosing whether to recover, reuse, or replace it.
Read recent session log entries from both the Frida script logger and host-side MCP handlers. Use this after risky injections, detach events, or file-transfer flows such as dex dump.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. session_close and prepared_session_prune are destructive but unmarked. Agents cannot distinguish safe reads from risky writes.
Error handling is absent. No guidance on retryability, user-fixable errors, or recovery steps. If eval_js fails, LLM has no hint whether to retry, ask user, or abort.