Skip to content
Conduit

mcp server

frida-mcp

fuzzmind/frida-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "fuzzmind-frida-mcp": {
      "command": "uvx",
      "args": [
        "fuzzmind-frida-mcp"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

fuzzmind-frida-mcp

Version MCP Frida Frida Tools Python License

A Frida MCP server for authorized dynamic analysis and application security research. It exposes device/session management, script injection, process and memory inspection, runtime helpers, and platform-focused workflows for macOS, iOS, Android, Windows, Linux, and kernel targets.

Positioning

This is a broad Frida automation layer for FuzzMind research workflows, not a minimal general-purpose Frida wrapper. It is designed so MCP-capable agents can drive long-running Frida sessions, scripts, runtime APIs, platform workflows, and security recipes with structured tool calls.

The goal is close practical coverage of the Frida Python API, GumJS API, frida-tools workflows, Gadget setup, and common application-security research tasks. It does not claim byte-for-byte or 100% behavioral parity with every Frida CLI interaction, every language binding, or every future upstream API.

For standalone Frida users, the official frida, frida-trace, and frida-tools CLI remain the smallest interface. This MCP is intentionally larger because it is also meant to integrate with FuzzMind internal research products and systems, including Mantis, Corvus, and others. These integrations are optional and are not required to run this MCP.

Install

uv tool install fuzzmind-frida-mcp
# or
pip install fuzzmind-frida-mcp

Requires Frida. Package dependencies install frida>=17.9.3,<18 and frida-tools>=14.8.1,<15.

Version support

ComponentSupported version
fuzzmind-frida-mcp0.1.0
Python3.11+
frida17.9.3 to <18
frida-tools14.8.1 to <15

Frida 17+ API users must bundle or provide ObjC/Java/Swift bridge packages when using those high-level runtimes. The MCP injects safe bridge stubs when bridge packages are unavailable, so runtime tools fail with explicit guidance instead of JavaScript ReferenceError.

The MCP runtime itself only needs Python Frida bindings and frida-tools. Node.js, TypeScript, and Rust Frida bindings are not required to run this server. ObjC/Java/Swift bridges are optional runtime packages for high-level target APIs; use frida_bridge_status to inspect them and frida_bridge_install to install them through official frida-pm when needed. By default these bridge packages are stored under ~/.fuzzmind/frida-mcp/frida-bridges (or FUZZMIND_FRIDA_BRIDGE_ROOT), so PyPI/uv installations do not need a writable source checkout.

Android frida-server helpers operate on a user-supplied frida-server binary; the MCP does not download platform binaries for you. Gadget helpers generate configs and stage assets, but signing, repackaging, and platform policy changes remain explicit external steps.

Quick start

Claude Code

claude mcp add frida -- fuzzmind-frida-mcp

Codex / OpenCode / generic MCP

This server speaks standard MCP over stdio. It is not tied to Claude Code; use the same command with Codex, OpenCode, Claude Desktop, or any MCP client that can launch a stdio server.

{
  "mcpServers": {
    "frida": {
      "command": "fuzzmind-frida-mcp"
    }
  }
}

Run standalone

fuzzmind-frida-mcp

When started by an MCP client, this runs as a stdio server and waits for client messages. When run directly from an interactive terminal, it prints a short usage note and exits so stdout is not polluted accidentally. For a local sanity check:

fuzzmind-frida-mcp --check
fuzzmind-frida-mcp --diagnose
fuzzmind-frida-mcp --version

To force stdio server mode from a terminal:

fuzzmind-frida-mcp --stdio

Tool catalogue

Frida CLI option mapping

The MCP exposes Frida CLI-style controls as structured tool arguments instead of requiring an agent to build shell commands:

Frida CLI optionMCP surface
-D, -U, -R, -H, certificates, origin, token, keepalivedevice/remote tools and device_id arguments
-f, -p, -n, -N, -F, -Wfrida_connect, frida_await_spawn, frida_spawn_with_options
--stdio, --aux, --realm, --pausefrida_connect / frida_spawn_with_options arguments
-l, -e, --runtime, --debug, -P, --auto-perform, --exit-on-errorfrida_script_load, frida_script_load_file, frida_script_run_file, frida_eval, frida_interactive_eval
-C, --toolchainfrida_cmodule_compile
-c, -O, -q, -t, -o, --eternalize, --kill-on-exitfrida_codeshare_run, frida_cli_options_file_parse, frida_script_eternalize, script output/event tools
frida-trace, frida-discover, gum-graftfrida_trace, frida_discover, frida_gum_graft

Agent workflows

ToolDescription
frida_target_snapshotFirst-step target snapshot for agents: process metadata, runtime bridges, modules, threads, range counts, and recommended next tools
frida_host_diagnosticsInspect local Frida, tool, device, and process-listing readiness
frida_bridge_statusCheck whether Frida 17 ObjC/Java/Swift bridge packages can be bundled
frida_bridge_installInstall ObjC/Java/Swift bridge packages with official frida-pm
frida_gadget_configGenerate a Frida Gadget configuration
frida_gadget_script_templateGenerate a Gadget-compatible script template
frida_gadget_bundle_assetsStage Gadget library, config, and optional script into a packaging directory
frida_android_frida_server_statusCheck Android adb/frida-server readiness without modifying the device
frida_android_frida_server_installPush a user-supplied frida-server binary to an Android device
frida_android_frida_server_startStart frida-server on an Android device
frida_android_frida_server_stopStop frida-server on an Android device
frida_android_frida_server_setupInstall, start, and optionally port-forward frida-server
frida_android_port_forwardCreate an adb TCP port forward for frida-server or Gadget
frida_android_port_forward_listList adb TCP port forwards
frida_android_port_forward_removeRemove an adb TCP port forward
frida_android_device_prepareSummarize Android readiness for Frida app analysis
frida_ios_device_prepareSummarize iOS/macOS USB-device readiness for Frida app analysis
frida_gumjs_templateGenerate advanced GumJS templates for direct frida_script_load use

Official Frida APIs

ToolDescription
frida_device_get_usbResolve the first USB device with get_usb_device()
frida_device_get_remoteResolve Frida's default remote device
frida_device_get_matchingFind a device with a DeviceManager predicate
frida_remote_device_addAdd a remote device with certificate/origin/token/keepalive options
frida_remote_device_removeRemove a remote device from DeviceManager
frida_device_query_system_parametersRead Device.query_system_parameters()
frida_device_override_optionSet an official Device option override
frida_device_unpairUnpair a paired device
frida_device_inputSend raw stdin bytes to a spawned target
frida_device_get_processResolve a process with Device.get_process()
frida_device_is_lostCheck Device.is_lost()
frida_inject_library_blobInject a library from bytes with Device.inject_library_blob()
frida_spawn_with_optionsSpawn with argv/env/envp/cwd/stdio/aux without attaching
frida_pending_spawn_listList device-level pending spawns
frida_pending_children_listList session child-gating pending children
frida_event_subscribeSubscribe to DeviceManager, Device, or Session events
frida_event_get_eventsRead queued official event-subscription events
frida_event_unsubscribeRemove an official event subscription
frida_bus_attachAttach to a device bus and queue bus messages
frida_bus_postPost a bus message, optionally with binary data
frida_bus_get_eventsRead queued bus events
frida_bus_detachDrop a bus event queue
frida_session_enable_child_gatingEnable official session child gating
frida_session_disable_child_gatingDisable official session child gating
frida_session_resumeResume a session through Session.resume()
frida_session_is_detachedCheck Session.is_detached()
frida_session_setup_peer_connectionConfigure peer connection / relay support
frida_session_join_portalJoin a PortalService from a session
frida_session_leave_portalTerminate a portal membership
frida_script_load_bytesLoad compiled script bytes
frida_session_compile_scriptCompile script source through the active session
frida_session_snapshot_scriptBuild a Frida script snapshot
frida_script_list_exportsList exported RPC methods
frida_script_enable_debuggerEnable script debugger
frida_script_disable_debuggerDisable script debugger
frida_script_post_binaryPost a message with binary data to a script
frida_script_set_log_handlerQueue Script log handler events
frida_script_get_log_eventsRead queued Script log events
frida_script_get_log_handlerInspect the active Script log handler
frida_script_reset_log_handlerReset Script logging to the Frida default
frida_compiler_buildBuild a bundle with frida.Compiler
frida_compiler_watchStart Compiler.watch() and queue compiler events
frida_compiler_watch_get_eventsRead queued compiler watch events
frida_compiler_watch_stopStop tracking a compiler watch
frida_package_searchSearch Frida packages with PackageManager
frida_package_installInstall Frida packages with PackageManager
frida_package_registryRead PackageManager.registry
frida_portal_startStart a PortalService with EndpointParameters
frida_portal_stopStop a PortalService
frida_portal_broadcastBroadcast through a PortalService
frida_portal_narrowcastNarrowcast through a PortalService tag
frida_portal_postPost to one PortalService connection
frida_portal_tagTag a PortalService connection
frida_portal_untagRemove a PortalService tag
frida_portal_enumerate_tagsList PortalService connection tags
frida_portal_get_eventsRead PortalService events
frida_service_requestOpen a device service and send one request
frida_open_channelOpen a raw device channel readiness probe
frida_channel_openOpen a raw device channel for repeated IO
frida_channel_readRead bytes from an open device channel
frida_channel_writeWrite bytes to an open device channel
frida_channel_closeClose an open device channel
frida_service_openOpen a device service for repeated requests/events
frida_service_request_by_idSend a request through an open service
frida_service_get_eventsRead queued service events
frida_service_closeCancel and forget an open service
frida_module_map_snapshotSnapshot/query modules with GumJS ModuleMap
frida_memory_copyCopy memory with Memory.copy()
frida_memory_scan_syncScan memory synchronously
frida_memory_check_code_pointerValidate a code pointer
frida_memory_dupDuplicate memory with Memory.dup()
frida_module_loadLoad a module with Module.load()
frida_module_ensure_initializedForce module initialization
frida_module_find_global_export_by_nameResolve a global export by name
frida_process_attach_thread_observerObserve thread add/remove events
frida_process_attach_module_observerObserve module load/unload events
frida_gum_script_evaluateEvaluate code with GumJS Script.evaluate()
frida_gum_script_loadLoad code with GumJS Script.load()
frida_gum_script_register_source_mapRegister a GumJS source map
frida_interceptor_flushFlush Interceptor changes
frida_interceptor_revertRevert an Interceptor replacement
frida_system_function_callCall a native function with SystemFunction
frida_thread_hardware_breakpointSet/unset a hardware breakpoint
frida_thread_hardware_watchpointSet/unset a hardware watchpoint
frida_code_writer_templateGenerate CodeWriter/Relocator templates
frida_kernel_enumerate_rangesEnumerate kernel ranges
frida_kernel_enumerate_module_rangesEnumerate kernel module ranges
frida_kernel_allocAllocate kernel memory
frida_kernel_protectChange kernel memory protection
frida_stalker_add_call_probeInstall a temporary Stalker call probe
frida_stalker_invalidateInvalidate Stalker translations
frida_rust_module_compileCompile a GumJS RustModule
frida_checksum_memoryCompute a GumJS Checksum over memory
frida_worker_templateGenerate a GumJS Worker template
frida_sampler_templateGenerate a GumJS Sampler template
frida_java_enumerate_class_loadersEnumerate Java class loaders
frida_java_chooseFind live Java instances
frida_java_backtraceCapture Java backtrace frames
frida_java_deoptimizeTrigger Java deoptimization
frida_objc_implement_templateGenerate an ObjC.implement template
frida_objc_bind_dataBind host data to an ObjC object

Device management

ToolDescription
frida_list_devicesList all available Frida devices (USB, remote, local)
frida_get_device_infoGet info about a specific Frida device or the default local device
frida_remote_device_addAdd a remote Frida server with official DeviceManager options
frida_list_appsList all installed applications on a device (not just running)
frida_get_frontmost_appGet the frontmost (foreground) application on a device
frida_launch_appSpawn and resume an application by bundle/package identifier
frida_kill_appKill a process by PID or name on a device
frida_resume_processResume a suspended process by PID

Session lifecycle

ToolDescription
frida_connectConnect/attach/spawn/await a target and create a persistent Frida session
frida_await_spawnWait for a gated spawn matching a pattern, optionally attach and resume
frida_disconnectDisconnect from the current or a specified Frida session
frida_list_sessionsList all active Frida sessions
frida_switch_sessionSwitch the active Frida session
frida_is_connectedCheck if the current Frida session is alive
frida_session_get_eventsRead lifecycle events such as detach/crash/disconnect
frida_session_clear_eventsClear lifecycle events for a persistent session
frida_session_recoverRecover a broken/crashed Frida session by re-attaching
frida_interactive_evalExecute arbitrary JS in an existing persistent Frida session (REPL)

Long-running scripts and RPC

ToolDescription
frida_script_loadLoad a long-running Frida script with runtime, parameters, debugger, and error policy options
frida_script_load_fileLoad a local JavaScript file as a long-running Frida script with the same script options
frida_script_listList scripts loaded in a persistent session
frida_script_unloadUnload a long-running script by script id
frida_script_reloadReload a long-running script while preserving name and kind
frida_script_call_rpcCall a function exposed through rpc.exports
frida_script_post_messagePost a JSON-serialisable message to a long-running script
frida_script_get_eventsRead queued events emitted by long-running scripts
frida_script_clear_eventsClear queued events for one script or a whole session
frida_script_export_eventsExport queued script events to JSON or JSONL

Hooks

ToolDescription
frida_install_hookInstall a persistent hook and return its script id
frida_get_hook_messagesGet queued events from persistent hook scripts
frida_clear_hook_messagesClear hook event queues for the active session
frida_uninstall_hooksUnload all persistent hook scripts in the current session
frida_list_hooksList all installed persistent hooks in the current session
frida_hook_native_by_offsetHook a native function by module name + hex offset
frida_hook_native_functionHook a native function by address using Interceptor.attach

Memory

ToolDescription
frida_read_memoryRead raw memory from a target process
frida_write_memoryWrite raw bytes to process memory
frida_memory_scanScan process memory for a hex pattern
frida_memory_protectChange memory protection on a region
frida_enumerate_rangesEnumerate memory ranges matching a protection filter
frida_get_module_baseGet base address of a module by name (partial match)
frida_memory_dump_regionsDump all readable memory regions from a target process to disk
frida_dump_moduleDump a live in-memory module image to disk
frida_memory_allocAllocate memory inside a target process via Memory.alloc
frida_memory_patch_codePatch executable code at an address using Memory.patchCode
frida_memory_query_protectionQuery memory protection at a specific address
frida_memory_alloc_stringAllocate a string inside a target process
frida_memory_access_monitorMonitor memory accesses (read/write/execute) on specified ranges
frida_read_typedRead a typed value from process memory
frida_write_typedWrite a typed value to process memory
frida_hexdumpFormatted hex dump of memory at an address
frida_memory_dupDuplicate memory with GumJS Memory.dup()

Process introspection

ToolDescription
frida_checkVerify frida + frida-tools install state and version
frida_list_processesEnumerate running processes via Frida's local device
frida_process_infoGet detailed process metadata (pid, arch, platform, etc.)
frida_enumerate_threadsList all threads with state and registers
frida_enumerate_modulesList all loaded modules in a target process
frida_enumerate_exportsList exported symbols from a specific module
frida_enumerate_importsEnumerate imports of a module
frida_enumerate_symbolsList all symbols (not just exports) from a module
frida_enumerate_sectionsEnumerate sections (name, base, size, protection) of a module
frida_enumerate_dependenciesEnumerate dependencies of a module
frida_enumerate_malloc_rangesEnumerate malloc heap ranges filtered by memory protection
frida_find_export_by_nameFind a single export by name, optionally scoped to a module
frida_find_symbol_by_nameFind a symbol by name within a module
frida_resolve_debug_symbolResolve a debug symbol from an address
frida_find_functions_namedFind all functions with an exact name
frida_find_functions_matchingFind functions matching a glob pattern
frida_load_debug_symbolsLoad debug symbols from a file (e.g. dSYM)

Interceptor

ToolDescription
frida_intercept_objc_methodHook a specific ObjC method via Interceptor and log invocations
frida_interceptor_replaceReplace a native function entirely using Interceptor.replace
frida_spoof_returnSpoof the return value of a function
frida_callstack_tracerTrace call stacks for a specific function, symbolicated

Stalker

ToolDescription
frida_stalker_coverageCollect basic-block coverage using Frida Stalker
frida_stalker_configureConfigure and start Stalker with advanced options on a specific thread
frida_spawn_gatingEnable spawn gating to intercept all new process spawns
frida_child_process_trapMonitor child process creation by hooking spawn/fork/exec APIs
frida_discoverRun official frida-discover for internal function discovery
frida_gum_graftRun official gum-graft when available

Script injection

ToolDescription
frida_script_run_fileRun a local Frida JS script against a process with runtime/parameters options
frida_evalEvaluate inline JavaScript against a target
frida_cli_compile_bundleCompile a Frida JS script with frida-compile
frida_cli_options_file_parseParse a Frida CLI --options-file into tokens for agent planning
frida_codeshare_runRun an official frida-tools CodeShare script via frida -c
frida_script_eternalizeInject a script and eternalize it so it survives session detach
frida_cmodule_compileCompile inline C code and load it via CModule, with optional toolchain selection
frida_native_function_callCall a native function by address inside a target process
frida_inject_libraryInject a shared library (.dylib / .so) into a target process
frida_tracefrida-trace function-tracing capture for N seconds

Objective-C

ToolDescription
frida_objc_classesEnumerate ObjC class names matching a pattern
frida_objc_chooseFind live ObjC instances of a class on the heap
frida_objc_register_classRegister a new ObjC class at runtime
frida_objc_create_blockCreate an ObjC block at runtime
frida_objc_scheduleSchedule JavaScript on the ObjC main thread dispatch queue
frida_objc_inspect_objectInspect an ObjC object at a given address
frida_objc_call_methodCall an ObjC method on an object at a given address
frida_objc_list_protocolsList all registered ObjC protocols
frida_dump_classDump full ObjC class structure: methods, protocols, ivars
frida_xpc_interceptxpcspy-style XPC message capture

Swift

ToolDescription
frida_swift_demangleDemangle a Swift symbol using the in-process Swift runtime
frida_api_resolverResolve API symbols using Frida's ApiResolver

Java / Android Runtime

ToolDescription
frida_java_list_classesEnumerate loaded Java/ART classes
frida_java_list_methodsList declared methods of a Java class
frida_java_hook_methodHook all overloads of a Java method
frida_java_callExecute arbitrary JS inside a Java.perform() block
frida_java_load_dexDynamically load a DEX file into an Android process

Security bypass

ToolDescription
frida_ssl_pinning_disableUniversal SSL pinning bypass (Android + iOS/macOS)
frida_ssl_keylogExtract TLS session keys for Wireshark decryption
frida_crypto_hookHook crypto APIs to capture encryption/decryption operations
frida_string_snifferSniff strings as they are created at runtime
frida_time_warpWarp time perception for a target process
frida_anti_root_bypassBypass root/jailbreak detection
frida_anti_debug_bypassBypass debugger detection mechanisms

File system

ToolDescription
frida_file_listList files in a directory on the target's filesystem
frida_file_readRead a file from the target's filesystem view
frida_file_downloadDownload a file from the target to the local host
frida_file_writeWrite data to a file on the target's filesystem
frida_file_seek_readRead bytes from a file at a specific offset

Database

ToolDescription
frida_sqlite_openOpen a SQLite database and list tables
frida_sqlite_execExecute SQL against a SQLite database inside the target
frida_sqlite_dumpFull schema + data dump of a SQLite database

Network

ToolDescription
frida_socket_connectOpen a TCP/UDP connection from within the target process
frida_socket_listenOpen a listening socket inside the target process

Cloak

ToolDescription
frida_cloak_threadHide a thread from in-process detection
frida_cloak_rangeHide a memory range from detection
frida_cloak_fdHide a file descriptor from detection

Profiler

ToolDescription
frida_profiler_startStart profiling specific addresses
frida_profiler_reportRetrieve the profiler report
frida_instruction_parseDisassemble a single instruction at an address

Kernel

ToolDescription
frida_kernel_readRead kernel memory at an address
frida_kernel_writeWrite raw bytes to kernel memory
frida_kernel_scanScan kernel memory for a hex pattern
frida_kernel_enumerate_modulesEnumerate kernel modules (kexts)

Windows platform

ToolDescription
frida_win_api_monitorHook Win32 APIs and log call arguments
frida_win_dotnet_list_assembliesEnumerate .NET assemblies loaded in a target process
frida_win_dotnet_hook_methodHook a .NET method and log invocations
frida_win_registry_monitorMonitor Registry operations
frida_win_com_interceptIntercept a COM vtable method call
frida_win_etw_bypassPatch EtwEventWrite to neutralise ETW event logging
frida_win_crypto_hookHook CryptoAPI and BCrypt encryption/decryption
frida_win_amsi_bypassPatch AmsiScanBuffer to bypass AMSI scanning
frida_win_hollowing_detectDetect process hollowing via PE section comparison

Android platform

ToolDescription
frida_android_content_provider_hookHook ContentResolver operations for a specific authority
frida_android_intent_interceptIntercept Intent dispatching
frida_android_shared_prefs_dumpDump SharedPreferences key-value pairs
frida_android_webview_hookHook WebView methods to capture JS bridge interactions
frida_android_jni_hookHook JNI functions in libart.so

iOS / macOS platform

ToolDescription
frida_ios_keychain_dumpDump accessible Keychain items from a target process
frida_ios_ats_bypassDisable App Transport Security for a target process
frida_ios_url_scheme_hookHook URL scheme and Universal Link handling

Linux platform

ToolDescription
frida_linux_syscall_hookHook libc syscall wrappers and log arguments
frida_linux_preload_detectDetect LD_PRELOAD and suspicious library injections
frida_linux_dbus_interceptIntercept D-Bus method calls and messages
frida_linux_got_hookOverwrite a GOT/PLT entry for a function in a target module
frida_linux_seccomp_detectDetect seccomp sandbox status in a target process

Misc

ToolDescription
frida_set_exception_handlerInstall an in-process exception handler to catch crashes
frida_run_on_threadExecute JavaScript on a specific thread
frida_heap_searchSearch the heap for live ObjC instances of a class

Platform support

PlatformCapabilities
Cross-platformScript/session lifecycle, RPC, event queues, process, memory, hooks, stalker, interceptor, ObjC, Swift, Java, files, DB, network, cloak, profiler, kernel, agent workflows
macOS / iOSObjC runtime, XPC interception, Keychain, ATS bypass, URL schemes, SSL pinning, code signing
AndroidJava/ART bridge, JNI hooks, Intent interception, ContentProvider, WebView, SharedPrefs, root bypass
WindowsWin32 API monitoring, .NET/CLR, COM interception, Registry, ETW bypass, AMSI bypass, CryptoAPI, hollowing detection
LinuxSyscall hooks, LD_PRELOAD detection, D-Bus interception, GOT/PLT hooks, seccomp detection
KernelKernel memory read/write/scan, kext enumeration

Capability summary

FeatureSupport
Tool catalogueRegistered MCP tools for Frida workflows
Persistent sessions and scriptsYes
RPC exportsLong-running scripts can expose callable functions through rpc.exports
Event queuesScript and hook events are stored per script_id
Platform-focused workflowsmacOS/iOS, Android, Windows, Linux, kernel
Process and module introspectionYes
Memory operationsRead, write, scan, protect, dump, typed access
Native instrumentationInterceptor, Stalker, CModule, NativeFunction
Official Frida APIsDeviceManager, Device, Bus, Session, Script, Compiler, PackageManager, PortalService, peer connection, ModuleMap, SystemFunction, Thread hardware break/watchpoints, Worker, RustModule, Checksum, Sampler
Runtime helpersObjC, Java/ART, Swift, .NET-oriented workflows
Files and databasesTarget-side file access and SQLite helpers
Agent workflow entrypointTarget snapshot with recommended next tools
Bidirectional messagingscript.post() plus target-side recv()

macOS attach permissions

Frida attaches through task ports, and macOS can deny that for several independent reasons. SIP is only one of them. Even with SIP fully disabled, attach may still fail if the terminal/Python host lacks Developer Tools/debugging permission, the target is a protected platform binary, the process is sandboxed, architectures do not match, or the host environment hides the process list.

For normal development, prefer self-built test apps or explicitly authorized apps first. Avoid using Apple system binaries such as /bin/sleep as the first attach probe; they are platform-signed and can be denied even when launched by your own user. If a self-built target fails, fix local debugging permission before changing SIP. System daemons and Apple platform binaries may require reduced SIP debug restrictions, but that still does not guarantee attach on every target.

Useful checks:

  • Run frida_check to confirm Python Frida and frida-tools are installed.
  • Run frida_host_diagnostics from the same shell or MCP client that will run Frida. On macOS it reports Developer Tools status, task-port AuthorizationDB checks, the active Python executable, and whether that Python shows debugger-related code-signing entitlements.
  • Run frida_list_devices and frida_list_processes; an empty process list usually points to host permission or sandboxing.
  • Try a self-built process with frida_connect(..., spawn=True) before targeting system services.
  • On macOS, grant the terminal or Python runner Developer Tools/debugging permission in System Settings when prompted.

If self-built spawn/attach fails with unable to access process ... from the current user account, treat it as a local macOS debug-permission issue first. Check DevToolsSecurity -status, the _developer group, and the code-signing entitlements of the Python interpreter used by fuzzmind-frida-mcp or frida. The official Frida troubleshooting notes cover macOS task-port authorization: https://frida.re/docs/troubleshooting/

Common lab-only recovery steps:

sudo DevToolsSecurity -enable
sudo dseditgroup -o edit -a "$USER" -t user _developer

Restart the terminal or MCP client after changing Developer Tools permissions. If AuthorizationDB task-port checks still fail on a dedicated research host, follow the Frida troubleshooting guidance for system.privilege.taskport. If the Python host remains the blocker, use a disposable pyenv/venv Python for Frida work and sign that interpreter with debugger entitlements rather than changing the system Python.

For release validation, use official Frida packages in a clean project venv and run the real smoke tests with FUZZMIND_FRIDA_REAL_ATTACH=1. These tests require native Frida spawn/attach for a self-built target.

Repository layout

PathPurpose
src/fuzzmind_frida_mcp/server.pyCLI entrypoint and FastMCP startup only
src/fuzzmind_frida_mcp/toolsets/MCP-facing tool functions grouped by exposed surface: lifecycle, instrumentation, runtimes, platform, data, recipes
src/fuzzmind_frida_mcp/tools/Implementation modules used by MCP-facing tools
src/fuzzmind_frida_mcp/tools/official/Thin wrappers around official Frida Python/GumJS APIs, grouped by upstream object
src/fuzzmind_frida_mcp/tools/lifecycle/Device, process, session, and script lifecycle workflows
src/fuzzmind_frida_mcp/tools/instrumentation/Memory, hook, Interceptor, Stalker, Kernel, Cloak, and profiler helpers
src/fuzzmind_frida_mcp/tools/runtimes/Java, ObjC, and Swift runtime workflows
src/fuzzmind_frida_mcp/tools/platform/Android, iOS/macOS, Linux, and Windows focused workflows
src/fuzzmind_frida_mcp/tools/data/File, database, and socket helpers
src/fuzzmind_frida_mcp/tools/recipes/Higher-level security and environment workflows

The official/ package is intentionally separate from high-level workflow modules. For example, tools/official/device.py follows official DeviceManager/Device APIs, while tools/lifecycle/device.py exposes Agent-friendly workflows built on top of Frida.

Contributing

PRs welcome. Please read the CONTRIBUTING document first:

  • Keep one MCP-facing function per tool and register grouped surfaces through src/fuzzmind_frida_mcp/toolsets/
  • Put official API thin wrappers under src/fuzzmind_frida_mcp/tools/official/
  • Add platform-specific tools to the appropriate src/fuzzmind_frida_mcp/tools/platform/ module
  • Cross-platform implementation tools go in the matching grouped package (instrumentation/, lifecycle/, runtimes/, data/, or recipes/)

License

MIT — Copyright (c) 2026 FuzzMind Security Lab

↑↓ navigate openesc close