Skip to main content
Glama

Frida MCP

A Model Context Protocol (MCP) implementation for Frida dynamic instrumentation toolkit.

Overview

This package provides an MCP-compliant server for Frida, enabling AI systems to interact with mobile and desktop applications through Frida's dynamic instrumentation capabilities. It uses the official MCP Python SDK to enable seamless integration with AI applications.

Demo

https://github.com/user-attachments/assets/5dc0e8f5-5011-4cf2-be77-6a77ec960501

Features

  • Built with the official MCP Python SDK

  • Comprehensive Frida tools exposed through MCP:

    • Process management (list, attach, spawn, resume, kill)

    • Device management (USB, remote devices)

    • Interactive JavaScript REPL with real-time execution

    • Script injection with progress tracking

    • Process and device monitoring

  • Resources for providing Frida data to models

  • Prompts for guided Frida analysis workflows

  • Progress tracking for long-running operations

  • Full support for all MCP transport methods

Installation

Prerequisites

  • Python 3.8 or later

  • pip package manager

  • Frida 16.0.0 or later

Quick Install

pip install frida-mcp

Development Install

# Clone the repository
git clone https://github.com/yourusername/frida-mcp.git
cd frida-mcp

# Install in development mode with extra tools
pip install -e ".[dev]"

Claude Desktop Integration

To use Frida MCP with Claude Desktop, you'll need to update your Claude configuration file:

  1. Locate your Claude Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  2. Add the following to your configuration file:

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

Usage

Once installed, you can use Frida MCP directly from Claude Desktop. The server provides the following capabilities:

Process Management

  • List all running processes

  • Attach to specific processes

  • Spawn new processes

  • Resume suspended processes

  • Kill processes

Device Management

  • List all connected devices (USB, remote)

  • Get device information

  • Connect to specific devices

Smart Device Selection

  • Launch the server with the desired mode each time. For example:

    frida-mcp --mode remote --remote-address 10.211.55.3 --remote-alias windows_vm

    The command above pins future MCP requests to the remote Frida server at 10.211.55.3:27042 and exposes it as device_id="windows_vm".

  • Available CLI flags:

    • --mode {local,usb,remote} to force a specific target class.

    • --remote-address <host[:port]> and optional --remote-alias <name> to register a remote endpoint for the session. When the port is omitted the default 27042 is used.

    • --fallback-order remote,usb,local (comma separated) to control automatic discovery order when device_id is omitted.

  • Environment variables (FRIDA_DEFAULT_DEVICE, FRIDA_DEFAULT_REMOTE, FRIDA_DEVICE_FALLBACKS) still work and merge with CLI settings.

  • Use the configure_remote_device tool at runtime to add or update remote endpoints without restarting the MCP server.

Interactive JavaScript REPL

  • Create interactive sessions with processes

  • Execute JavaScript code in real-time

  • Monitor process state and memory

  • Hook functions and intercept calls

  • Capture console.log output

  • Handle errors and exceptions gracefully

Script Injection

  • Inject custom JavaScript scripts

  • Track injection progress

  • Handle script errors and exceptions

Resources

  • Get Frida version information

  • Access process list in human-readable format

  • Access device list in human-readable format

Development

# Clone repository
git clone https://github.com/yourusername/frida-mcp.git
cd frida-mcp

# Install development dependencies
pip install -e ".[dev]"

License

MIT

Available Tools

14 tools
attach_to_processC

Attach to a process by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesThe ID of the process to attach to.
device_idNoOptional ID of the device where the process is running. Uses smart selection when omitted.

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but provides minimal behavioral insight. 'Attach' implies a connection or interaction, but it doesn't disclose if this is for read-only monitoring, debugging, requires specific permissions, affects process state, or has side effects like pausing execution. Critical details for safe tool invocation are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with zero wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a potentially complex action like 'attach to a process', the description is incomplete. It doesn't explain what 'attach' entails, what the expected outcome is, or any prerequisites (e.g., needing an existing session). For a tool that likely involves system-level operations, more context is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters (pid and device_id). The description adds no additional meaning beyond implying 'ID' refers to 'pid', which is already clear from the schema. Baseline score of 3 applies as the schema handles parameter semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Attach to a process by ID' states a clear verb ('Attach') and resource ('process'), but it's vague about what 'attach' means operationally. It doesn't differentiate from siblings like 'create_interactive_session' or 'execute_in_session', which might involve similar process interactions. The purpose is understandable but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this is for debugging, monitoring, or control purposes, or how it relates to siblings like 'create_interactive_session' or 'enumerate_processes'. The agent must infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_remote_deviceB

Connect to a remote Frida server and make it available for future requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe remote <host>:<port> to add.
aliasNoOptional alias used as device_id when targeting this remote.
set_as_defaultNoIf true, future requests without device_id will prefer this remote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool connects to a remote server and makes it available for future requests, which implies a persistent configuration change. However, it lacks details on authentication requirements, error handling (e.g., if the server is unreachable), side effects, or how this interacts with other tools. The description is minimal and doesn't compensate for the absence of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function. It's front-loaded with the core action ('Connect to a remote Frida server') and follows with the outcome ('make it available for future requests'). There's no wasted verbiage or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there's an output schema (not provided in details but indicated as present), the description doesn't need to explain return values. However, for a configuration tool with no annotations and three parameters, the description is minimal. It covers the basic purpose but lacks context on behavioral traits, usage guidelines, or integration with sibling tools. It's adequate as a starting point but has clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear documentation for all three parameters (address, alias, set_as_default). The description adds no additional parameter semantics beyond what's in the schema. According to the rules, with high schema coverage (>80%), the baseline score is 3 when no param info is added in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Connect to a remote Frida server and make it available for future requests.' It specifies the verb ('connect') and resource ('remote Frida server'), and indicates a persistent effect ('available for future requests'). However, it doesn't explicitly differentiate from sibling tools like 'get_local_device' or 'get_usb_device' which might handle different device types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a running Frida server), exclusions (e.g., not for local devices), or comparisons to siblings like 'enumerate_devices' or 'get_device'. Usage context is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_interactive_sessionB

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
ParametersJSON Schema
NameRequiredDescriptionDefault
process_idYesThe ID of the process to attach to for creating an interactive session.
device_idNoOptional ID of the device where the process is running. Uses smart selection when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions the return value (session ID and session information) and hints at a workflow with 'execute_in_session', it lacks critical details such as whether this operation requires specific permissions, what happens if the process is already in a session, or any rate limits. The description doesn't contradict annotations (none exist), but it's insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with three sentences: the first states the purpose, the second explains the return value usage, and the third clarifies the return content. It's front-loaded with the core action, and each sentence adds value without redundancy. Minor improvements could include integrating the return details more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which covers return values) and 100% schema description coverage for inputs, the description doesn't need to detail parameters or return values. However, as a mutation tool with no annotations, it should provide more behavioral context (e.g., side effects, permissions). The description is adequate but leaves gaps in usage and transparency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning about the parameters beyond what the schema provides (e.g., it doesn't explain 'process_id' or 'device_id' further). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('create an interactive REPL-like session') and resource ('with a process'), making the purpose immediately understandable. It distinguishes from some siblings like 'attach_to_process' or 'spawn_process' by focusing on session creation rather than process attachment or spawning. However, it doesn't explicitly differentiate from all possible alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning the returned session ID can be used with 'execute_in_session', suggesting a workflow. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'attach_to_process' or 'spawn_process', nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enumerate_devicesA

List all devices connected to the system.

Returns:
    A list of device information dictionaries containing:
    - id: Device ID
    - name: Device name
    - type: Device type
    - hint: How to reference the device via device_id
    - alias: Configured alias for remote devices (if any)
    - default_candidate: Whether the device is the current default choice
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return format and structure, which is valuable, but doesn't cover other behavioral aspects like performance characteristics, error conditions, or whether the list is real-time vs. cached. It's adequate but has clear gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: the first sentence states the purpose clearly, followed by a detailed breakdown of the return format. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but with an output schema implied by the return description), the description is reasonably complete. It explains what the tool does and what it returns in detail. However, it could improve by addressing usage context relative to siblings, slightly reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the input schema has 100% coverage (though empty). The description appropriately doesn't discuss parameters, focusing instead on the output. This meets expectations for a parameterless tool, earning a high baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('List') and resource ('all devices connected to the system'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_device' or 'get_local_device', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_device' or 'get_local_device'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enumerate_processesA

List all processes running on the system.

Returns:
    A list of process information dictionaries containing:
    - pid: Process ID
    - name: Process name
ParametersJSON Schema
NameRequiredDescriptionDefault
device_idNoOptional ID of the device to enumerate processes from. Uses smart selection when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns a list of process information with specific fields (pid, name), which is useful behavioral context. However, it doesn't mention potential side effects, permissions needed, or rate limits, leaving some gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by a clear return value specification. Every sentence adds value without redundancy, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter), 100% schema coverage, and the presence of an output schema (implied by the return description), the description is complete enough. It explains what the tool does and what it returns, covering essential context without unnecessary detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single optional parameter 'device_id' with its description. The description adds no additional parameter information beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('List all processes') and resource ('processes running on the system'), distinguishing it from siblings like 'get_process_by_name' (which filters) and 'kill_process' (which modifies). It provides a complete picture of what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing processes but doesn't explicitly state when to use this versus alternatives like 'get_process_by_name' (for filtering) or 'enumerate_devices' (for device listing). No exclusions or prerequisites are mentioned, leaving some ambiguity in context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_in_sessionA

Execute JavaScript code within an existing interactive Frida session.

This tool allows for dynamic scripting against a process previously attached to
via `create_interactive_session`.
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe unique identifier of the active Frida session. This ID is obtained when the session is first created.
javascript_codeYesA string containing the JavaScript code to be executed in the target process's context. The script can use Frida's JavaScript API (e.g., Interceptor, Memory, Module, rpc).
keep_aliveNoA boolean flag indicating whether the script should remain loaded in the target process after its initial execution. If False (default), the script is unloaded after initial run. If True, it persists for hooks/RPC and messages are retrieved via get_session_messages. Note: With keep_alive=True, JavaScript code should manage log volume (limits, deduplication) to prevent too many messages.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the tool executes code dynamically in a target process, uses Frida's JavaScript API, and includes details about the 'keep_alive' parameter's persistence behavior and message management. However, it lacks information on error handling, execution timeouts, or security implications, preventing a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the first sentence stating the core purpose. The second sentence adds necessary context without redundancy. Every sentence earns its place by clarifying prerequisites and tool relationships, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (dynamic code execution in sessions), no annotations, and an output schema (which handles return values), the description is mostly complete. It covers purpose, prerequisites, and key behavioral aspects but could improve by addressing error scenarios or execution limits, leaving minor gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing comprehensive parameter documentation. The description adds minimal value beyond the schema, only briefly mentioning the 'keep_alive' parameter's effect on script persistence. No additional syntax, format, or usage examples are provided, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Execute JavaScript code') and resource ('within an existing interactive Frida session'), distinguishing it from sibling tools like 'create_interactive_session' (which creates sessions) and 'get_session_messages' (which retrieves messages). The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'within an existing interactive Frida session' and references the prerequisite tool 'create_interactive_session'. It also implies when not to use it (e.g., for session creation or message retrieval), providing clear context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deviceC

Get a device by its ID.

Returns:
    Information about the device
ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYesThe ID of the device to get

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool returns 'Information about the device', which is vague and doesn't cover aspects like required permissions, error handling, or data format. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core action, using two sentences efficiently. However, the second sentence ('Returns: Information about the device') is redundant given the presence of an output schema, slightly reducing its conciseness by not earning its place fully.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no nested objects) and the presence of an output schema, the description is minimally adequate. However, it lacks details on behavioral aspects like authentication or error cases, which are important for a tool with no annotations, making it incomplete for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, fully documenting the 'device_id' parameter. The description adds no additional meaning beyond the schema, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting without extra value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('a device by its ID'), making the purpose specific and understandable. However, it doesn't differentiate from sibling tools like 'get_local_device' or 'get_usb_device', which might retrieve devices through different criteria, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'enumerate_devices' for listing devices or 'get_local_device' for local device retrieval. It only states what the tool does without context or exclusions, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_local_deviceC

Get the local device.

Returns:
    Information about the local device
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Returns: Information about the local device' without specifying what information is returned, format, potential errors, or any behavioral traits like whether this is a read-only operation, requires permissions, or has rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two brief sentences that get straight to the point. It's front-loaded with the main purpose and follows with return information. There's no wasted verbiage or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally complete. However, for a tool in a context with many sibling device/process tools, it should better differentiate itself and provide more behavioral context since no annotations are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description appropriately doesn't add parameter information beyond what's in the schema, which is correct for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose as 'Get the local device' which is a clear verb+resource combination, but it doesn't differentiate from sibling tools like 'get_device' or 'enumerate_devices'. The description is vague about what 'local device' means in this context compared to other device-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_device' or 'enumerate_devices'. There's no mention of prerequisites, context, or comparison with sibling tools that handle devices or processes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_process_by_nameC

Find a process by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name (or part of the name) of the process to find. Case-insensitive.
device_idNoOptional ID of the device to search the process on. Uses smart selection when omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Find a process by name' implies a read-only search operation, but it doesn't disclose key traits such as whether it returns multiple matches, handles partial names, includes performance impacts, or requires specific permissions. This is inadequate for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—'Find a process by name' directly conveys the core action without unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a search operation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error handling, or behavioral nuances, leaving significant gaps for the agent to infer usage in context with siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters ('name' and 'device_id') with details like case-insensitivity and smart selection. The description adds no additional meaning beyond what the schema provides, such as examples or edge cases, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Find a process by name' clearly states the tool's purpose with a specific verb ('find') and resource ('process'), and it distinguishes the tool from siblings like 'enumerate_processes' (which lists all processes) and 'kill_process' (which terminates processes). However, it doesn't explicitly differentiate from 'get_process_by_name' itself, which is the tool's name, making it slightly less specific than a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'enumerate_processes' for broader searches or 'get_device' for device-specific operations, nor does it specify prerequisites or exclusions. This leaves the agent with minimal context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_messagesA

Retrieve and clear messages sent by persistent scripts in a session.

Returns:
    A list of messages captured since the last call, or an error if the session is not found.
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe ID of the session to retrieve messages from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it retrieves AND clears messages (implying mutation/destructive action), specifies the temporal scope ('since the last call'), and mentions error conditions ('session not found'). It could add more about permissions or rate limits but covers essential behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by a clear returns section. Every sentence earns its place by providing essential information without redundancy, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and the presence of an output schema (which handles return values), the description is complete enough. It covers purpose, behavior, and error conditions, leaving structured details to the schema while adding valuable context about message clearing and session dependency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, fully documenting the single parameter 'session_id'. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 without compensating for any gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieve and clear messages') and resource ('messages sent by persistent scripts in a session'), distinguishing it from sibling tools that focus on processes, devices, or session execution rather than message retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'messages sent by persistent scripts in a session,' suggesting it's for monitoring script output. However, it doesn't explicitly state when to use this tool versus alternatives or provide exclusions, leaving some ambiguity about its specific application scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usb_deviceC

Get the USB device connected to the system.

Returns:
    Information about the USB device
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return type ('Information about the USB device') but lacks details on what information is included, error handling (e.g., if no USB device is found), side effects, or performance considerations. This is insufficient for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the main purpose stated first and a brief note on returns. It avoids unnecessary details, but the second sentence ('Returns: Information about the USB device') could be integrated more smoothly. Overall, it is efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, an output schema exists (which should document return values), and no annotations, the description is minimally adequate. However, it lacks context on usage scenarios, error cases, or how it differs from siblings, leaving gaps in completeness for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description does not need to add parameter semantics, but it correctly implies no inputs are required. Baseline 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose ('Get the USB device connected to the system'), which is clear but vague. It specifies the resource (USB device) but lacks detail on what 'get' entails (e.g., retrieve details, list devices, check status). It distinguishes from some siblings like 'enumerate_devices' by focusing on USB, but not clearly from 'get_device' or 'get_local_device'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., system must have a USB device connected), exclusions (e.g., not for remote devices), or comparisons to siblings like 'enumerate_devices' (for listing all devices) or 'get_device' (possibly for generic device retrieval).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kill_processC

Kill a process by ID.

Returns:
    Status information
ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesThe ID of the process to kill.
device_idNoOptional ID of the device where the process is running. Uses smart selection when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions that the tool 'kills' a process, implying a destructive operation, but fails to detail critical aspects like required permissions, side effects, error handling, or rate limits. The mention of 'Returns: Status information' is vague and doesn't clarify what constitutes success or failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core purpose, followed by a return statement. Both sentences are relevant, with no wasted words, though the return statement could be more informative to improve utility without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature, lack of annotations, and presence of an output schema, the description is minimally adequate but incomplete. It covers the basic action and mentions a return, but fails to address safety concerns, error conditions, or integration with sibling tools, leaving gaps for an agent to operate effectively in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain 'smart selection' for device_id or provide examples). This meets the baseline for high schema coverage but doesn't enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('kill') and target ('a process by ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'resume_process' or 'spawn_process' beyond the basic verb, missing explicit comparison that would warrant a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With siblings like 'resume_process' and 'spawn_process' available, the description lacks any context about appropriate scenarios, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resume_processC

Resume a process by ID.

Returns:
    Status information
ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesThe ID of the process to resume.
device_idNoOptional ID of the device where the process is running. Uses smart selection when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions a return value ('Status information') but doesn't specify what that includes (e.g., success/failure, error conditions, or post-resume state). It lacks details on permissions, side effects, or system-specific behaviors like what 'resume' means operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core purpose, followed by a return statement. It avoids unnecessary words, but the return note could be more informative (e.g., specifying output schema existence). Overall, it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return values) and full schema coverage for parameters, the description is minimally adequate. However, as a mutation tool with no annotations, it should provide more behavioral context (e.g., what 'resume' does, error cases, or dependencies on other tools like 'enumerate_processes'). The current description leaves gaps in operational understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional parameter semantics beyond implying 'pid' is required and 'device_id' is optional with smart selection, which is already covered in the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Resume') and target ('a process by ID'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'kill_process' or 'spawn_process' beyond the basic verb, missing specific context about what resuming entails in this system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the process must be paused), related tools like 'enumerate_processes' to find IDs, or exclusions (e.g., cannot resume already running processes). The agent must infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spawn_processC

Spawn a program.

Returns:
    Information about the spawned process
ParametersJSON Schema
NameRequiredDescriptionDefault
programYesThe program or application identifier to spawn.
argsNoOptional list of arguments for the program.
device_idNoOptional ID of the device where the program should be spawned. Uses smart selection when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it 'Returns: Information about the spawned process' without explaining what that information includes, whether spawning is synchronous/asynchronous, what permissions are required, potential side effects, or error conditions. For a tool that likely creates system processes, this is a significant gap in safety and operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just two sentences, but the second sentence about return values is somewhat redundant given the existence of an output schema. However, it's front-loaded with the core purpose and wastes no words, earning a high score for efficiency despite potential under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a process-spawning tool with no annotations, 3 parameters, and multiple sibling execution tools, the description is inadequate. While an output schema exists (reducing need to explain returns), the description fails to address critical context: how this differs from other execution tools, what 'spawn' entails operationally, security implications, or typical use cases. For a potentially powerful system tool, this leaves too many questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all three parameters (program, args, device_id). The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Spawn a program' which is a clear verb+resource combination, but it's quite generic and doesn't differentiate from sibling tools like 'execute_in_session' or 'create_interactive_session'. The purpose is understandable but lacks specificity about what 'spawn' means in this context versus other execution-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'execute_in_session', 'create_interactive_session', or 'kill_process'. The description doesn't mention prerequisites, constraints, or typical scenarios for spawning versus other execution methods, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.0.0
    • Changedattach_to_process1 field changed
      • addedInput schema / title
        Added value: +"attach_to_processArguments"
    • Changedconfigure_remote_device1 field changed
      • addedInput schema / title
        Added value: +"configure_remote_deviceArguments"
    • Changedcreate_interactive_session1 field changed
      • addedInput schema / title
        Added value: +"create_interactive_sessionArguments"
    • Changedenumerate_devices1 field changed
      • addedInput schema / title
        Added value: +"enumerate_devicesArguments"
    • Changedenumerate_processes1 field changed
      • addedInput schema / title
        Added value: +"enumerate_processesArguments"
    • Changedexecute_in_session1 field changed
      • addedInput schema / title
        Added value: +"execute_in_sessionArguments"
    • Changedget_device1 field changed
      • addedInput schema / title
        Added value: +"get_deviceArguments"
    • Changedget_local_device1 field changed
      • addedInput schema / title
        Added value: +"get_local_deviceArguments"
    • Changedget_process_by_name1 field changed
      • addedInput schema / title
        Added value: +"get_process_by_nameArguments"
    • Changedget_session_messages1 field changed
      • addedInput schema / title
        Added value: +"get_session_messagesArguments"
    • Changedget_usb_device1 field changed
      • addedInput schema / title
        Added value: +"get_usb_deviceArguments"
    • Changedkill_process1 field changed
      • addedInput schema / title
        Added value: +"kill_processArguments"
    • Changedresume_process1 field changed
      • addedInput schema / title
        Added value: +"resume_processArguments"
    • Changedspawn_process1 field changed
      • addedInput schema / title
        Added value: +"spawn_processArguments"
  2. 14 tool updates
    • First observedattach_to_process
    • First observedconfigure_remote_device
    • First observedcreate_interactive_session
    • First observedenumerate_devices
    • First observedenumerate_processes
    • First observedexecute_in_session
    • First observedget_device
    • First observedget_local_device
    • First observedget_process_by_name
    • First observedget_session_messages
    • First observedget_usb_device
    • First observedkill_process
    • First observedresume_process
    • First observedspawn_process

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, but some potential overlap exists between 'attach_to_process' and 'create_interactive_session' (both involve attaching to processes), and between 'get_device', 'get_local_device', and 'get_usb_device' (all retrieve device information). The descriptions help clarify differences, but an agent might initially confuse these pairs.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., 'enumerate_processes', 'get_session_messages', 'spawn_process'). There are no deviations in naming conventions, making the set predictable and readable.

Tool Count5/5

With 14 tools, this server is well-scoped for Frida's dynamic instrumentation domain. The count covers essential operations like device management, process control, and session handling without being excessive, ensuring each tool has a clear role.

Completeness4/5

The tool set provides strong coverage for Frida's core workflows, including device enumeration, process management, and interactive scripting. A minor gap is the lack of tools for detaching from processes or terminating sessions, which agents might need to work around, but overall, the surface supports key operations effectively.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related 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/rmorgans/frida-mcp'

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