ida-fusion-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_instancesA | List all registered IDA Pro instances with their metadata. |
| refresh_toolsC | Re-discover tools from IDA Pro instances. |
| compare_binariesA | Compare two IDA instances by diffing their binary metadata, entrypoints, and segments. Takes two instance_id values and returns what is common vs unique to each. |
| list_cached_outputsA | List all cached truncated outputs with cache_id, age, size, and tool name. Use this to find cache IDs for get_cached_output. |
| get_cached_outputA | Retrieve cached output from a previous tool call that was truncated. Use this to get additional chunks of large responses. |
| decompile_to_fileA | Decompile functions and save results directly to files on disk. IMPORTANT: Each function requires a separate IDA decompile call. For large binaries, check function count with list_funcs first before using 'all'. Hundreds of functions can take minutes; thousands can take much longer. |
| lookup_funcsB | Get functions by address or name (auto-detects) |
| int_convertC | Convert numbers to different formats |
| list_funcsA | List functions WARNING: IDA executes on a single main thread. Long-running operations will block ALL subsequent requests and make IDA unresponsive. For large binaries (100K+ functions), use count/offset pagination. Avoid count=0 (all) with glob filters on large binaries. |
| list_globalsD | List globals |
| refresh_cachesA | Force-refresh all caches (strings, functions, globals). Call this after bulk modifications to ensure list_funcs/list_globals return fresh data. |
| importsC | List imports |
| find_regexB | Search strings with case-insensitive regex patterns |
| decompileB | Decompile function to pseudocode |
| disasmA | Disassemble function to assembly instructions |
| xrefs_toC | Get cross-references to specified addresses |
| xrefs_to_fieldC | Get cross-references to structure fields |
| calleesC | Get functions called by the specified functions |
| find_bytesB | Search for byte patterns in the binary (supports wildcards with ??) |
| basic_blocksB | Get control flow graph basic blocks for functions |
| findB | Search for patterns in the binary (strings, immediate values, or references) |
| export_funcsC | Export function data in various formats |
| callgraphB | Build call graph starting from root functions |
| get_bytesB | Read bytes from memory addresses |
| get_intB | Read integer values from memory addresses |
| get_stringB | Read strings from memory addresses |
| get_global_valueA | Read global variable values by address or name (auto-detects hex addresses vs names) |
| patchB | Patch bytes at memory addresses with hex data |
| put_intB | Write integer values to memory addresses |
| declare_typeD | Declare types |
| read_structA | Reads struct type definition and parses actual memory values at the given address as instances of that struct type. If struct name is not provided, attempts to auto-detect from address. Auto-detection only works if IDA already has type information applied at that address Returns struct layout with actual memory values for each field. |
| search_structsD | Search structs |
| set_typeB | Apply types (function/global/local/stack) |
| infer_typesC | Infer types |
| set_commentsC | Set comments at addresses (both disassembly and decompiler views) |
| patch_asmC | Patch assembly instructions at addresses |
| renameC | Unified rename operation for functions, globals, locals, and stack variables |
| append_commentsA | Append comments at addresses, deduping exact text by default. Unlike set_comments (which overwrites), this preserves existing annotations — use it for incremental commentary. scope='auto' (default) writes a function comment when addr is a function start, otherwise a line comment; force with scope='func' or 'line'. dedupe=True skips writes when the exact stripped text already appears on its own line. |
| define_funcA | Define a function at each given address. IDA infers bounds unless an explicit end address is provided. Returns {addr, start, end} on success or {addr, start, error} if the function already exists or add_func fails. Use this when IDA auto-analysis missed a function entry point. |
| define_codeA | Convert raw bytes to a code instruction at each given address. Returns {addr, ea, length} on success (length is the instruction byte length) or {addr, ea, error} if create_insn failed. Use this when IDA classified an instruction as data or failed to decode. |
| undefineA | Undefine item(s) at each address, converting them back to raw bytes.
Size is determined from |
| stack_frameC | Get stack vars |
| declare_stackC | Create stack vars |
| delete_stackC | Delete stack vars |
| py_evalA | Execute Python code in IDA context. Returns dict with result/stdout/stderr. Has access to all IDA API modules. Supports Jupyter-style evaluation. WARNING: IDA executes on a single main thread. Long-running operations will block ALL subsequent requests and make IDA unresponsive. Do NOT iterate all functions, bulk decompile, or run heavy loops. Use decompile_to_file for batch decompilation instead. |
| survey_binaryA | Get a compact overview of the binary in one call. Returns file metadata, segment layout, entry points, statistics, top 15 strings and functions ranked by xref count (functions include classification: thunk/wrapper/leaf/dispatcher/ complex), imports by category, and call graph summary. Use this as your FIRST tool call when starting analysis. Do not call list_funcs, imports, or find_regex separately for triage — this returns all of that. Use detail_level='minimal' for binaries with >10k functions. |
| analyze_functionA | Compact single-function analysis: pseudocode (capped at 100 lines), top strings, top non-trivial constants, callers, callees, xrefs, comments, and basic block summary. Use this for "tell me everything about function X" in one call instead of chaining decompile + callees + xrefs_to separately. |
| analyze_componentA | Analyze related functions as a group: per-function compact summaries, internal call graph (edges only between supplied functions), shared globals, interface vs internal classification, and strings used by multiple members. |
| diff_before_afterA | Apply a rename/type/comment action and return the before/after decompilation side by side. Actions: 'rename_func' ({name}), 'set_type' ({type}), 'set_comment' ({comment}). Useful to verify a rename or type change actually improved readability. Returns {before, after, action_applied, changes_detected}. |
| trace_data_flowA | Follow cross-references from or to an address, automatically traversing multiple hops. 'forward' follows xrefs-from, 'backward' follows xrefs-to. Returns nodes (with function name, instruction, code/data classification) and edges. Do not use for call graph traversal — use callgraph for that. |
| make_signatureB | Create unique byte signatures for addresses. |
| make_signature_for_functionB | Create unique byte signatures for function entry points. |
| make_signature_for_rangeA | Create a byte signature for an explicit address range. |
| find_xref_signaturesB | Find signatures for code locations that reference an address. |
| type_queryC | Query local types with structured filters and pagination. |
| type_inspectC | Inspect named types with size, declaration, and optional member layout. |
| type_apply_batchC | Apply multiple type edits and return aggregate status. |
| entity_queryB | Query IDB entities with filtering, projection, and pagination. |
| search_textC | Search rendered listing text using IDA native text search. |
| py_exec_fileC | Execute a Python script file in IDA context. |
| dbg_statusB | Return debugger lifecycle state and current IP if suspended. |
| dbg_set_bp_conditionB | Set or clear breakpoint conditions in batch. |
| dbg_gpregsB | Get general-purpose registers for the current thread. |
| dbg_gpregs_remoteB | Get general-purpose registers for specified thread IDs. |
| dbg_regs_namedB | Get selected registers for the current thread. |
| dbg_regs_named_remoteB | Get selected registers for a specific thread ID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/andsopwn/ida-fusion-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server