IDA Pro MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_connectionB | Check if the IDA plugin is running |
| get_metadataB | Get metadata about the current IDB |
| get_function_by_nameC | Get a function by its name |
| get_function_by_addressC | Get a function by its address |
| get_current_addressB | Get the address currently selected by the user |
| get_current_functionB | Get the function currently selected by the user |
| convert_numberB | Convert a number (decimal, hexadecimal) to different representations |
| list_functions_filterB | List matching functions in the database (paginated, filtered) |
| list_functionsB | List all functions in the database (paginated) |
| list_globals_filterB | List matching globals in the database (paginated, filtered) |
| list_globalsB | List all globals in the database (paginated) |
| list_importsB | List all imported symbols with their name and module (paginated) |
| list_strings_filterB | List matching strings in the database (paginated, filtered) |
| list_stringsB | List all strings in the database (paginated) |
| list_segmentsB | List all segments in the binary. |
| list_local_typesB | List all Local types in the database |
| decompile_functionB | Decompile a function at the given address |
| disassemble_functionB | Get assembly code for a function (API-compatible with older IDA builds) |
| get_xrefs_toB | Get all cross references to the given address |
| get_xrefs_to_fieldB | Get all cross references to a named struct field (member) |
| get_calleesB | Get all the functions called (callees) by the function at function_address |
| get_callersB | Get all callers of the given address |
| get_entry_pointsB | Get all entry points in the database |
| set_commentB | Set a comment for a given address in the function disassembly and pseudocode |
| rename_local_variableC | Rename a local variable in a function |
| rename_global_variableC | Rename a global variable |
| set_global_variable_typeC | Set a global variable's type |
| patch_address_assemblesD | – |
| get_global_variable_value_by_nameA | |
| get_global_variable_value_at_addressA | |
| rename_functionC | Rename a function |
| set_function_prototypeC | Set a function's prototype |
| declare_c_typeC | Create or update a local type from a C declaration |
| set_local_variable_typeC | Set a local variable's type |
| get_stack_frame_variablesC | Retrieve the stack frame variables for a given function |
| get_defined_structuresC | Returns a list of all defined structures |
| analyze_struct_detailedC | Detailed analysis of a structure with all fields |
| get_struct_at_addressC | Get structure field values at a specific address |
| get_struct_info_simpleC | Simple function to get basic structure information |
| search_structuresB | Search for structures by name pattern |
| rename_stack_frame_variableB | Change the name of a stack variable for an IDA function |
| create_stack_frame_variableC | For a given function, create a stack variable at an offset and with a specific type |
| set_stack_frame_variable_typeC | For a given disassembled function, set the type of a stack variable |
| delete_stack_frame_variableC | Delete the named stack variable for a given function |
| read_memory_bytesA | |
| data_read_byteA | |
| data_read_wordA | |
| data_read_dwordA | |
| data_read_qwordA | |
| data_read_stringA | |
| search_bytesB | Search for a byte pattern in the binary. Supports wildcards with ?? for single byte wildcards. Returns addresses where the pattern was found along with surrounding context bytes. |
| get_commentsA | Get all comments at the specified address including regular, repeatable, anterior, and posterior comments. If the address is within a function, also returns the function comment. |
| add_commentC | |
| delete_commentC | Delete a comment at the specified address. For anterior/posterior, deletes all lines. |
| get_function_cfgB | Get the control flow graph of a function, including all basic blocks and their connections. Returns basic blocks with their instructions and successor/predecessor relationships. |
| execute_scriptA | |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 56 tools
The tool set has clear distinctions in many areas, such as separate tools for reading different data types (data_read_byte, data_read_word, etc.) and distinct operations like add_comment vs. delete_comment. However, there is notable overlap between tools like get_struct_info_simple and analyze_struct_detailed, and between get_global_variable_value_at_address and the data_read_* functions, which could cause confusion despite descriptions guiding usage.
Most tools follow a consistent verb_noun pattern (e.g., add_comment, get_function_by_address, list_functions), with clear and descriptive names. There are minor deviations, such as analyze_struct_detailed (verb_adjective_noun) and execute_script (verb_noun), but overall the naming is predictable and readable across the set.
With 56 tools, the count is excessive for typical MCP server purposes, making it heavy and potentially overwhelming. While IDA Pro is a complex tool, this many tools suggests poor scoping, as many could be consolidated (e.g., multiple data_read_* tools into a single parameterized tool) without losing functionality.
The tool set provides comprehensive coverage for reverse engineering tasks in IDA Pro, including analysis (decompile_function, disassemble_function), data manipulation (read/write memory, rename variables), structure handling, and scripting. It supports full CRUD operations for comments, variables, and types, with no obvious gaps for the domain, ensuring agents can perform complex workflows without dead ends.