create_interactive_session
Attach to a running process to establish an interactive REPL session for executing commands and analyzing runtime behavior.
Instructions
Create an interactive REPL-like session with a process.
This returns a session ID that can be used with execute_in_session to run commands.
Returns:
Information about the created session
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The ID of the process to attach to for creating an interactive session. | |
| device_id | No | Optional ID of the device where the process is running. Uses smart selection when omitted. |
Implementation Reference
- src/frida_mcp/cli.py:459-498 (handler)The @mcp.tool()-decorated handler function that implements the create_interactive_session tool. It attaches to the specified process on the resolved device, creates a unique session_id, stores the session globally, and returns session details.@mcp.tool() def create_interactive_session( process_id: int = Field( description="The ID of the process to attach to for creating an interactive session." ), device_id: Optional[str] = Field( default=None, description="Optional ID of the device where the process is running. Uses smart selection when omitted.", ), ) -> Dict[str, Any]: """Create an interactive REPL-like session with a process. This returns a session ID that can be used with execute_in_session to run commands. Returns: Information about the created session """ try: # Attach to process device = _resolve_device_or_raise(device_id) session = device.attach(process_id) # Generate a unique session ID session_id = f"session_{process_id}_{int(time.time())}" # Store the session _scripts[session_id] = session _script_messages[session_id] = [] _message_locks[session_id] = threading.Lock() return { "status": "success", "process_id": process_id, "session_id": session_id, "message": f"Interactive session created for process {process_id}. Use execute_in_session to run JavaScript commands.", } except Exception as e: return {"status": "error", "error": str(e)}
- src/frida_mcp/cli.py:77-82 (helper)Global dictionaries used by create_interactive_session to store active sessions, messages, and locks for thread safety.# Global dictionary to store scripts and their messages # This allows us to retrieve messages from scripts after they've been created _scripts = {} _script_messages = {} _message_locks = {} global_persistent_scripts = {} # Added for managing persistent scripts
- src/frida_mcp/cli.py:459-459 (registration)The @mcp.tool() decorator registers the create_interactive_session function as an MCP tool.@mcp.tool()