IDA Pro MCP Server
The IDA Pro MCP Server enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.
Execute IDA Pro Python scripts: Run custom IdaPython scripts remotely
Retrieve binary information: Fetch strings, imports, exports, and functions
Search operations: Find immediate values, text strings, and byte sequences
Disassembly: Get disassembly for specific address ranges
Automation: Automate IDA Pro operations through a standardized interface
Secure communication: Restricts access to localhost by default
Used to run the MCP server that bridges AI assistants with IDA Pro, enabling remote binary analysis capabilities through a structured API.
Enables execution of Python scripts within IDA Pro for reverse engineering tasks, allowing AI assistants to interact with binary analysis functions through a standardized interface.
Provides the client interface and MCP server implementation for enabling AI assistants to interact with IDA Pro's binary analysis capabilities.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IDA Pro MCP Serversearch for the string 'admin' in the current binary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IDA Pro MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.
Overview
This project provides a bridge between AI assistants and IDA Pro, a popular disassembler and debugger used for reverse engineering software. It consists of three main components:
IDA Pro Remote Control Plugin (
ida_remote_server.py): An IDA Pro plugin that creates an HTTP server to remotely control IDA Pro functions.IDA Remote Client (
idaremoteclient.ts): A TypeScript client for interacting with the IDA Pro Remote Control Server.MCP Server (
index.ts): A Model Context Protocol server that exposes IDA Pro functionality to AI assistants.
Related MCP server: Binary Ninja MCP Server
Features
Execute Python scripts in IDA Pro from AI assistants
Retrieve information about binaries:
Strings
Imports
Exports
Functions
Advanced binary analysis capabilities:
Search for immediate values in instructions
Search for text strings in the binary
Search for specific byte sequences
Get disassembly for address ranges
Automate IDA Pro operations through a standardized interface
Secure communication between components
Prerequisites
IDA Pro 8.3 or later
Node.js 18 or later
TypeScript
Example usage ida_remote_server.py
curl -X POST -H "Content-Type: application/json" -d '{"script":"print(\"Script initialization...\")"}' http://127.0.0.1:9045/api/execute
{"success": true, "output": "Script initialization...\n"}Example usage MCP Server

Installation
1. Install the IDA Pro Remote Control Plugin
Copy
ida_remote_server.pyto your IDA Pro plugins directory:Windows:
%PROGRAMFILES%\IDA Pro\pluginsmacOS:
/Applications/IDA Pro.app/Contents/MacOS/pluginsLinux:
/opt/idapro/plugins
Start IDA Pro and open a binary file.
The plugin will automatically start an HTTP server on
127.0.0.1:9045.
2. Install the MCP Server
Clone this repository:
git clone <repository-url> cd ida-serverInstall dependencies:
npm installBuild the project:
npm run buildConfigure the MCP server in your AI assistant's MCP settings file:
{ "mcpServers": { "ida-pro": { "command": "node", "args": ["path/to/ida-server/dist/index.js"], "env": {} } } }
Usage
Once installed and configured, the MCP server provides the following tool to AI assistants:
run_ida_command
Executes an IDA Pro Python script.
Parameters:
scriptPath(required): Absolute path to the script file to executeoutputPath(optional): Absolute path to save the script's output to
Example:
# Example IDA Pro script (save as /path/to/script.py)
import idautils
# Count functions
function_count = len(list(idautils.Functions()))
print(f"Binary has {function_count} functions")
# Get the first 5 function names
functions = list(idautils.Functions())[:5]
for func_ea in functions:
print(f"Function: {ida_name.get_ea_name(func_ea)} at {hex(func_ea)}")
# Return data
return_value = function_countThe AI assistant can then use this script with:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>run_ida_command</tool_name>
<arguments>
{
"scriptPath": "/path/to/script.py"
}
</arguments>
</use_mcp_tool>search_immediate_value
Searches for immediate values in the binary's instructions.
Parameters:
value(required): Value to search for (number or string)radix(optional): Radix for number conversion (default: 16)startAddress(optional): Start address for searchendAddress(optional): End address for search
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_immediate_value</tool_name>
<arguments>
{
"value": "42",
"radix": 10
}
</arguments>
</use_mcp_tool>search_text
Searches for text strings in the binary.
Parameters:
text(required): Text to search forcaseSensitive(optional): Whether the search is case sensitive (default: false)startAddress(optional): Start address for searchendAddress(optional): End address for search
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_text</tool_name>
<arguments>
{
"text": "password",
"caseSensitive": false
}
</arguments>
</use_mcp_tool>search_byte_sequence
Searches for a specific byte sequence in the binary.
Parameters:
bytes(required): Byte sequence to search for (e.g., "90 90 90" for three NOPs)startAddress(optional): Start address for searchendAddress(optional): End address for search
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_byte_sequence</tool_name>
<arguments>
{
"bytes": "90 90 90"
}
</arguments>
</use_mcp_tool>get_disassembly
Gets disassembly for an address range.
Parameters:
startAddress(required): Start address for disassemblyendAddress(optional): End address for disassemblycount(optional): Number of instructions to disassemble
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_disassembly</tool_name>
<arguments>
{
"startAddress": "0x401000",
"count": 10
}
</arguments>
</use_mcp_tool>get_functions
Gets the list of functions from the binary.
Parameters:
None required
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_functions</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>get_exports
Gets the list of exports from the binary.
Parameters:
None required
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_exports</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>get_strings
Gets the list of strings from the binary.
Parameters:
None required
Example:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_strings</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>IDA Pro Remote Control API
The IDA Pro Remote Control Plugin exposes the following HTTP endpoints:
GET /api/info: Get plugin informationGET /api/strings: Get strings from the binaryGET /api/exports: Get exports from the binaryGET /api/imports: Get imports from the binaryGET /api/functions: Get function listGET /api/search/immediate: Search for immediate values in instructionsGET /api/search/text: Search for text in the binaryGET /api/search/bytes: Search for byte sequences in the binaryGET /api/disassembly: Get disassembly for an address rangePOST /api/execute: Execute Python script (JSON/Form)POST /api/executebypath: Execute Python script from file pathPOST /api/executebody: Execute Python script from raw body
Security Considerations
By default, the IDA Pro Remote Control Plugin only listens on 127.0.0.1 (localhost) for security reasons. This prevents remote access to your IDA Pro instance.
If you need to allow remote access, you can modify the DEFAULT_HOST variable in ida_remote_server.py, but be aware of the security implications.
Development
Building from Source
npm run buildRunning Tests
npm testLicense
This project is licensed under the MIT License. See the LICENSE file for details.
Author
Florian Drechsler (@fdrechsler) fd@fdrechsler.com
Available Tools
12 toolsget_disassemblyC
Get disassembly for an address range
| Name | Required | Description | Default |
|---|---|---|---|
| startAddress | Yes | Start address for disassembly | |
| endAddress | No | End address for disassembly (optional) | |
| count | No | Number of instructions to disassemble (optional) |
TDQS
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 'get' implies a read operation, it doesn't specify whether this requires specific permissions, what format the disassembly returns in (e.g., assembly text, structured data), potential limitations like maximum range size, or error conditions for invalid addresses. This leaves significant gaps for a tool that likely interacts with binary analysis systems.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of binary analysis tools and the absence of both annotations and an output schema, the description is insufficient. It doesn't explain what the disassembly output looks like (critical for interpretation), any behavioral constraints, or how it fits with sibling tools. For a tool with three parameters in this domain, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters with their types and optionality. The description adds no additional meaning beyond implying address range usage, which is already covered by the parameter names and schema descriptions. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'disassembly for an address range', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_functions' or 'get_strings' that also retrieve specific data types from the binary analysis context, leaving room for potential confusion about when to choose this tool over others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With sibling tools like 'get_functions' and 'get_strings' available, there's no indication of whether this is for raw instruction retrieval versus higher-level analysis, or any prerequisites for its use in the binary analysis workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exportsB
Get list of exports from the binary
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action ('Get list') but lacks behavioral details: it doesn't specify if this is a read-only operation, what format the list returns (e.g., structured data, raw text), whether it's paginated or rate-limited, or if it requires specific binary states (e.g., loaded analysis). For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. No extraneous information is included, which is ideal for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 output schema), the description is minimally adequate. It states what the tool does but lacks context about what 'exports' are, the return format, or behavioral traits. Without annotations or output schema, the agent might struggle to use this effectively in complex scenarios, but it's sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details beyond the schema, but since there are no parameters, the baseline is 4. It appropriately avoids unnecessary parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('list of exports from the binary'), making the purpose understandable. It distinguishes this tool from siblings like 'get_functions' or 'get_strings' by specifying 'exports' as the target resource. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_xrefs_from' also retrieves data from the binary).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 what 'exports' are in this context (e.g., exported functions, symbols), when this tool is appropriate compared to other 'get_' tools, or any prerequisites. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionsB
Get list of functions from the binary
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 implies a read-only operation ('Get'), but doesn't disclose details like whether it returns all functions, includes metadata, has pagination, requires specific binary states, or handles errors. For a tool with zero annotation coverage, this is inadequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is front-loaded and every word earns its place, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool in this context. It doesn't explain what the returned list includes (e.g., function names, addresses, signatures), how it behaves with different binary types, or potential limitations. For a tool among siblings that perform complex binary analysis, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, and since there are none, it doesn't need to compensate for schema gaps. A baseline of 4 is applied as the description doesn't introduce confusion about non-existent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get list of functions from the binary' clearly states the verb ('Get') and resource ('functions from the binary'), making the purpose immediately understandable. It distinguishes from siblings like get_exports or get_strings by specifying functions, though it doesn't explicitly contrast with get_disassembly which might also involve functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, context (e.g., after loading a binary), or comparisons to siblings like get_disassembly or search_in_names that might overlap with function retrieval. This leaves the agent without explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stringsB
Get list of strings from the binary
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states what the tool does but doesn't disclose behavioral traits like whether this is a read-only operation, what format the strings are returned in, if there are rate limits, or how it interacts with the binary. This leaves significant gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 simple tool with 0 parameters, the description is incomplete. It doesn't explain what 'strings' means in this context (e.g., ASCII, Unicode, extracted from binary data), how results are structured, or any limitations, leaving the agent with insufficient information for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 fully documents the lack of inputs. The description doesn't need to add parameter details, and it correctly implies no parameters are required, earning a baseline score above 3 for this scenario.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'list of strings from the binary', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'search_text' or 'search_in_names' that might also retrieve string-related information, preventing 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.
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 'search_text' and 'search_in_names' that might retrieve strings in different ways, the description lacks any context about use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_fromC
Get cross-references from an address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Source address to find references from | |
| type | No | Type of references to find (code, data, all) |
TDQS
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 context. It states what the tool does but doesn't disclose important traits like whether this is a read-only operation, what format the cross-references are returned in, potential limitations (e.g., only within current module), or error conditions. The description is functional but lacks operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what cross-references are in this context (e.g., code calls, data accesses), what the return format looks like, or how results are structured. Given the technical nature of reverse engineering tools, more context about the output would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond implying the 'address' is a source and 'type' filters reference types. This meets the baseline for high schema coverage where the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'cross-references' from a specific source 'address', making the purpose understandable. It distinguishes from sibling 'get_xrefs_to' by specifying direction 'from', but doesn't fully differentiate from other analysis tools like 'get_functions' or 'get_disassembly' in terms of what cross-references provide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'get_xrefs_to' (which presumably finds references to an address) or other analysis tools. The description implies usage for finding references from an address but doesn't specify scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_toC
Get cross-references to an address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Target address to find references to | |
| type | No | Type of references to find (code, data, all) |
TDQS
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 states the action but doesn't describe what 'cross-references' entail (e.g., format, scope, or limitations), whether it's read-only or has side effects, or any performance considerations like 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It lacks details on what 'cross-references' means, the return format, or any behavioral traits, which is insufficient for a tool with parameters and siblings, especially in a context like IDA analysis where clarity is critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters ('address' and 'type') documented in the schema. The description adds no additional meaning beyond implying the tool finds references to an address, which aligns with the schema but doesn't enhance parameter understanding, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get cross-references') and the target resource ('to an address'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_xrefs_from' or explain what 'cross-references' means in this context, 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.
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 sibling tools like 'get_xrefs_from' (likely for references from an address), the description doesn't clarify the distinction or suggest any prerequisites, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_ida_commandC
Execute an IDA Pro Script (IdaPython, Version IDA 8.3)
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | script |
TDQS
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 states the tool executes a script but doesn't describe execution context (e.g., sandboxed environment, permissions needed), potential side effects (e.g., modifying the IDA database), error handling, or output format. This leaves significant gaps for a tool that runs arbitrary code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action. It could be slightly improved by adding a brief usage note, but it avoids redundancy and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary scripts with no annotations and no output schema, the description is incomplete. It lacks critical context such as execution environment, safety considerations, expected output, or error behavior, which are essential for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'script' parameter documented as 'script'. The description adds no additional meaning about the parameter (e.g., syntax examples, supported libraries, or constraints). Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute') and the resource ('an IDA Pro Script'), specifying the scripting language (IdaPython) and version (IDA 8.3). However, it doesn't explicitly differentiate from its sibling 'run_ida_command_filebased', which likely handles script files rather than inline scripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'run_ida_command_filebased' or other analysis tools (e.g., 'get_functions', 'search_text'). There's no mention of prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_ida_command_filebasedB
(FOR IDE USAGE) Execute an IDA Pro Script (IdaPython, Version IDA 8.3)
| Name | Required | Description | Default |
|---|---|---|---|
| scriptPath | Yes | absolute Path to the script file to execute | |
| outputPath | No | absolute Path to save the scripts output to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions execution of a script but lacks critical behavioral details: whether this is a read-only or destructive operation, what permissions or authentication are needed, how errors are handled, or if there are rate limits. The description is minimal and doesn't compensate for the lack 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that front-loads key information (IDE usage, execution, script type, version). Every word earns its place, and there's no wasted text, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of executing scripts in a tool like IDA Pro, with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral constraints. For a tool that likely involves file I/O and script execution, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (scriptPath and outputPath). The description adds no additional parameter semantics beyond what's in the schema, such as file format requirements or output specifics. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Execute') and resource ('an IDA Pro Script'), specifying it's for IDA 8.3 with IdaPython. It distinguishes from sibling 'run_ida_command' by indicating file-based execution, though not explicitly contrasting. The purpose is specific but could be more explicit about the sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context with '(FOR IDE USAGE)', suggesting it's intended for IDE environments, but doesn't provide explicit guidance on when to use this tool versus alternatives like 'run_ida_command' or other analysis tools. No when-not scenarios or prerequisites are mentioned, leaving usage somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_byte_sequenceB
Search for a byte sequence in the binary
| Name | Required | Description | Default |
|---|---|---|---|
| bytes | Yes | Byte sequence to search for (e.g., "90 90 90" for three NOPs) | |
| startAddress | No | Start address for search (optional) | |
| endAddress | No | End address for search (optional) |
TDQS
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 information. It doesn't disclose whether this is a read-only operation, what permissions might be required, how results are returned (e.g., list of addresses), or any performance characteristics like search scope limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and uses technical terminology appropriately for the domain without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description is insufficient. It doesn't explain what format results are returned in, whether searches are case-sensitive, how multiple matches are handled, or any limitations on search scope beyond the optional address parameters documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high schema coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for a byte sequence') and target resource ('in the binary'), distinguishing it from sibling tools like search_text or search_immediate_value. It uses precise technical terminology appropriate for binary analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 search_immediate_value or search_text, nor does it mention any prerequisites or contextual constraints. It simply states what the tool does without indicating appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_immediate_valueC
Search for immediate values in the binary
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Value to search for (number or string) | |
| radix | No | Radix for number conversion (default: 16) | |
| startAddress | No | Start address for search (optional) | |
| endAddress | No | End address for search (optional) |
TDQS
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 information. It doesn't disclose whether this is a read-only operation, what permissions might be needed, how results are returned, or any performance characteristics. The description only states what the tool does at a high level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that gets straight to the point without any wasted words. It's appropriately sized for what it communicates and is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 4 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what constitutes an 'immediate value' in binary analysis, how results are formatted, whether there are limitations on search scope, or how this differs from other search tools on the server.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. The baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for') and target ('immediate values in the binary'), which distinguishes it from siblings like search_byte_sequence or search_text. However, it doesn't fully explain what 'immediate values' means in this context compared to other search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 search_byte_sequence or search_text. There's no mention of specific use cases, prerequisites, or limitations that would help an agent choose between similar search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_namesC
Search for names/symbols in the binary
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Pattern to search for in names | |
| caseSensitive | No | Whether the search is case sensitive (default: false) | |
| type | No | Type of names to search for (function, data, import, export, label, all) |
TDQS
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 searching but doesn't specify what 'names/symbols' encompass (e.g., function names, variable names, imported symbols), how results are returned, whether it's read-only (implied but not stated), or any limitations like performance impact. This leaves significant gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 tool that performs searches (which could have behavioral nuances like result formats or limitations), the description is incomplete. It doesn't explain what constitutes 'names/symbols', how results are structured, or any constraints, leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all three parameters thoroughly. The description adds no additional meaning beyond what's in the schema—it doesn't clarify what 'names/symbols' means in relation to the 'type' parameter or provide examples for the 'pattern'. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as searching for names/symbols in a binary, which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like get_functions, get_exports, or search_text, which all involve retrieving information from binaries but with different scopes or methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like get_functions (retrieves functions), get_exports (retrieves exports), and search_text (searches text), there's no indication of when this name/symbol search is preferred over those more specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_textC
Search for text in the binary
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to search for | |
| caseSensitive | No | Whether the search is case sensitive (default: false) | |
| startAddress | No | Start address for search (optional) | |
| endAddress | No | End address for search (optional) |
TDQS
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 only states what the tool does ('search for text') without mentioning behavioral traits like whether it returns all matches or first match, if it's paginated, what happens if no text is found, or performance implications. For a search tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the core functionality without unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a search operation with 4 parameters, no annotations, and no output schema, the description is incomplete. It lacks information about return values (e.g., match addresses or counts), error conditions, or how results are formatted. For a tool with rich input schema but no other structured data, the description should provide more context to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the schema. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain address formats or search algorithms). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the target 'text in the binary', which is specific and understandable. However, it doesn't explicitly differentiate this from sibling tools like 'search_byte_sequence' or 'search_immediate_value', which likely search for different types of patterns in the binary. The purpose is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 sibling tools like 'search_byte_sequence' for binary data or 'search_immediate_value' for numeric values, nor does it specify contexts where text search is preferred. Without any usage context or exclusions, the agent must infer 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.
TDQS
Most tools have distinct purposes, but the two 'run_ida_command' variants could cause confusion as they differ only in file-based execution for IDE usage, which might not be clear to an agent without careful reading. The search tools (search_byte_sequence, search_immediate_value, search_in_names, search_text) are well-differentiated by their targets.
Tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., get_disassembly, get_exports, search_byte_sequence). The two 'run_ida_command' tools maintain this pattern with descriptive suffixes, ensuring overall predictability.
With 12 tools, this server is well-scoped for binary analysis in IDA Pro, covering core functions like disassembly, exports, functions, strings, cross-references, searches, and script execution. Each tool serves a specific purpose without bloat.
The toolset provides comprehensive coverage for static analysis tasks, including retrieval, searching, and script execution. A minor gap is the lack of tools for modifying the binary (e.g., patching or annotating), but this is reasonable for a read-focused analysis server.
Maintenance
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.19547MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Large Language Models to interact with Binary Ninja for reverse engineering tasks like viewing assembly code, decompiled code, renaming functions, and adding comments.3MIT
- AlicenseNot gradedqualityDmaintenanceAn Model Context Protocol server that enables LLMs to autonomously reverse engineer applications by exposing Ghidra's decompilation and analysis tools. It allows AI agents to list code structures, rename methods, and analyze binaries directly through MCP-compatible clients.Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server that exposes IDA Pro's disassembly, decompilation, and symbol query capabilities to AI clients, with reduced tool set for lower token consumption.284
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/fdrechsler/mcp-server-idapro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server