ida-fusion-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 | {} |
| 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
- 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/andsopwn/ida-fusion-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server