IDA Pro MCP Server
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 |
|---|---|
| decompile_functionA | Decompile a function using the Hex-Rays decompiler. Pass a function name or hex address (e.g. '0x401000' or 'main'). Returns C-like pseudocode. |
| disassemble_functionB | Get the assembly listing of a function. Pass a function name or hex address (e.g. '0x401000' or 'main'). |
| disassemble_rangeA | Disassemble an arbitrary address range. Pass hex addresses (e.g. '0x401000', '0x401100'). |
| get_bytesB | Read raw bytes from an address. Returns hex dump. Default reads 16 bytes. |
| list_functionsA | List all functions in the binary. Optionally pass a filter string to match function names (case-insensitive). |
| get_function_infoA | Get detailed information about a function. Pass a function name or hex address. |
| list_segmentsB | List all segments (sections) in the binary with their permissions and sizes. |
| get_xrefs_toA | Get all cross-references TO an address (who calls/references this location). Pass hex address or name. |
| get_xrefs_fromA | Get all cross-references FROM an address (what does this location call/reference). Pass hex address or name. |
| list_stringsA | List all defined strings in the binary. Optionally filter by substring (case-insensitive). |
| get_importsB | List all imported functions grouped by module. |
| get_exportsB | List all exported functions/symbols. |
| list_structsA | List all defined structures/unions in the IDA database with their members. |
| list_enumsB | List all defined enumerations in the IDA database. |
| rename_functionA | Rename a function. Pass the current name or hex address, and the new name. |
| rename_addressC | Rename any address (global variable, label, etc). Pass hex address and new name. |
| set_commentA | Set a comment at an address. Use is_repeatable=True for repeatable comments that propagate to xrefs. |
| set_function_typeA | Set a function's type/prototype. Pass function name or address, and C-style prototype (e.g. 'int __cdecl func(int a, char *b)'). |
| set_typeA | Set the type at an address. Pass hex address and C-style type declaration. |
| create_structA | Create a new structure type. Pass a name and list of fields, each with 'name' and 'type' keys. Example fields: [{"name": "size", "type": "int"}, {"name": "data", "type": "char *"}] |
| search_textA | Search through disassembly text for a string. Matches against instruction mnemonics, operands, and comments. |
| search_bytesA | Search for a byte pattern in the binary. Pass hex bytes with optional spaces (e.g. '90 90 90' or 'CC CC' or '48 8B 05'). |
| start_debuggerB | Start the debugger for the currently loaded binary. Optionally pass command-line arguments and binary path. |
| get_debugger_statusA | Check if the debugger is currently active and whether execution is suspended. |
| set_breakpointA | Set a breakpoint at an address. Pass hex address or function name. |
| delete_breakpointC | Delete a breakpoint at an address. |
| list_breakpointsC | List all currently set breakpoints with their status. |
| enable_breakpointC | Enable or disable a breakpoint without removing it. |
| step_intoA | Step into the next instruction (follows calls into functions). |
| step_overA | Step over the next instruction (executes calls without entering them). |
| continue_executionB | Continue process execution until the next breakpoint or event. |
| suspend_debuggerA | Suspend (pause) the running process. |
| exit_debuggerB | Terminate the debugged process and stop the debugger. |
| get_registersA | Read all CPU register values. Requires the debugger to be active and suspended. |
| read_debug_memoryA | Read memory from the debugged process. Requires active debugger. Returns hex dump. |
| get_stack_traceA | Get the current call stack trace. Requires active debugger. |
| patch_bytesB | Patch bytes at an address in the IDA database. Pass hex bytes with optional spaces (e.g. '90 90 90' for NOP sled, 'EB 05' for short jump). |
| execute_idapythonB | Execute arbitrary IDAPython code inside the IDA session. Set 'result' or 'output' variable in your script to return data. Example: 'import idc; result = idc.get_screen_ea()' |
| load_type_libraryC | Load a type information library (.til) file into the current database. |
| list_type_librariesB | List all loaded type information libraries (TILs) in the current database. |
| apply_callee_typeB | Apply a type signature to a call site (callee). Useful when the function pointer type is unknown at a call instruction. |
| get_function_callersA | Get all functions that call a given function. Higher-level than xrefs — groups by calling function and shows call sites. |
| get_function_calleesA | Get all functions called by a given function. Shows what a function depends on. |
| make_codeB | Convert bytes at an address into code (disassembled instruction). Optionally undefine 'size' bytes first. |
| make_dataB | Convert bytes at an address into data. Types: byte, word, dword, qword, float, double. |
| make_stringA | Define a C-style string at an address. Pass length=0 to auto-detect (null-terminated). |
| undefineC | Undefine (delete) items at an address, reverting them to raw bytes. |
| define_functionB | Create a new function at a given address range. If end_address is empty, IDA will auto-detect the function boundary. |
| undefine_functionC | Delete/undefine a function at an address. The code remains but is no longer treated as a function. |
| add_bookmarkA | Add a bookmark at an address with optional description. Bookmarks persist in the IDA database. |
| list_bookmarksA | List all bookmarks in the IDA database. |
| delete_bookmarkA | Delete a bookmark by slot number (get slot numbers from list_bookmarks). |
| get_local_variablesA | Get all local variables and arguments of a decompiled function. Requires Hex-Rays. Pass function name or address. |
| rename_local_variableC | Rename a local variable or argument in a decompiled function. Requires Hex-Rays. |
| get_global_variablesA | List named global data variables in the binary. Optionally filter by substring. |
| get_flowchartB | Get the control flow graph (basic blocks and edges) of a function. Shows predecessors and successors for each block. Essential for understanding branch logic. |
| get_commentB | Read the comment at an address. Set is_repeatable=True for repeatable comments. |
| get_all_commentsA | Get all comments within a function (both regular and repeatable). Pass function name or address. |
| get_function_commentB | Read the function-level comment (appears above/below the function header in disassembly). |
| set_function_commentB | Set a function-level comment. These appear above (anterior) or below (posterior) the function header. |
| get_stack_frameA | Get the complete stack frame layout of a function — all stack variables, their offsets, sizes, and the overall frame geometry. |
| set_operand_typeA | Change how an operand is displayed. operand_num: 0 for first, 1 for second. display_type: hex, decimal, octal, binary, char, default. |
| set_local_variable_typeC | Change the type of a local variable in a decompiled function. Requires Hex-Rays. Pass C-style type (e.g. 'SOCKET', 'struct sockaddr_in *'). |
| get_colorB | Get the color of an instruction, function, or segment. Returns hex RGB value. |
| set_colorA | Set the color of an instruction, function, or segment. Color is RGB as integer (e.g. 0xFF0000 for red, 0x00FF00 for green). item_type: instruction, function, segment. |
| get_function_hashA | Calculate a hash of a function's raw bytes. Useful for identifying identical/similar functions across binaries. Algorithms: md5, sha1, sha256. |
| get_exception_infoA | Check if a function contains exception handling (try/catch/throw). Returns the decompiled code if exception handling is found. |
| get_microcodeB | Get the Hex-Rays intermediate representation (microcode) for a function. Maturity levels: generated, preoptimized, locopt, calls, glbopt1, glbopt2, glbopt3, lvars. |
| save_databaseB | Save the IDA database. Pass a path to save to a specific location, or leave empty to save in-place. |
| apply_flirt_signatureB | Apply a FLIRT signature file (.sig) to identify library functions in stripped binaries. Pass the signature name (e.g. 'vc64rtf' for MSVC runtime). |
| list_flirt_signaturesA | List all FLIRT signatures currently applied to the database. |
| create_segmentB | Create a new memory segment. permissions: bitmask (4=read, 2=write, 1=execute, 7=rwx). seg_class: CODE, DATA, BSS, STACK, etc. |
| delete_segmentB | Delete the segment containing the given address. The data is kept but the segment definition is removed. |
| set_segment_permissionsB | Change the read/write/execute permissions of the segment containing the given address. |
| create_arrayA | Create an array at an address. element_type: byte, word, dword, qword. count: number of elements. |
| navigate_toB | Jump IDA's cursor to an address. This moves the user's view in the IDA GUI to the specified location. |
| produce_asmC | Produce a clean assembly listing for a function, suitable for copy-paste or file export. |
| produce_cB | Produce clean C pseudocode for a function, suitable for copy-paste or file export. Requires Hex-Rays. |
| run_idc_scriptC | Execute IDC script code (IDA's native scripting language). Returns the evaluation result. |
| run_ida_actionA | Trigger a registered IDA UI action by name (e.g. 'ToggleBnds', 'MakeCode'). Use list_ida_actions to see available actions. |
| list_ida_actionsA | List all registered IDA UI actions that can be triggered with run_ida_action. |
| list_debugger_threadsA | List all threads in the debugged process. Requires active debugger. |
| switch_threadA | Switch the debugger's active thread. Pass the thread ID from list_debugger_threads. |
| add_watchpointC | Set a hardware watchpoint (data breakpoint). Triggers when memory at address is accessed. watch_type: write, read, execute. |
| get_binary_infoA | Get metadata about the currently loaded binary (filename, architecture, bitness, entry point). |
| get_analysis_statusA | Check if IDA's auto-analysis has completed. Some tools may return incomplete results if analysis is still running. |
| pingA | Check connectivity to IDA Pro. Returns 'Connected' if the IDA plugin is running and reachable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| binary_info_resource | Current binary metadata from IDA Pro. |
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/31Benzi/IDA-PRO-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server