
IDA Pro/Home के लिए लोकल-फर्स्ट, निर्धारक MCP सर्वर: 109 स्ट्रिक्ट-स्कीमा रिवर्स इंजीनियरिंग ऑपरेशन, प्रमाण-आधारित निष्कर्ष, और नीति-नियंत्रित IDB संपादन।

IDA Pro MCP, IDA Pro के लिए एक स्थानीय Model Context Protocol सर्वर है। यह एक MCP क्लाइंट को IDB का निरीक्षण करने, IDA से नियतात्मक विश्लेषण परिणाम मांगने, और जब स्पष्ट रूप से अनुमति दी जाए, तो IDB में एनोटेशन या अन्य परिवर्तन वापस लिखने की सुविधा देता है। होस्ट प्रक्रिया IDA के बाहर चलती है और डिफ़ॉल्ट रूप से प्रत्येक सत्र के लिए एक अलग IDA हेडलेस प्रक्रिया शुरू करती है।
ida_* ऑपरेशन, जिनमें
tools/list और ida_help के माध्यम से लाइव खोज उपलब्ध है।वर्तमान संस्करण है। यह अल्फा सॉफ़्टवेयर है। सार्वजनिक ऑपरेशन नाम, स्कीमा, और वर्कस्पेस प्रारूप एक स्थिर 1.0.0 रिलीज़ से पहले बदल सकते हैं। डिफ़ॉल्ट क्लाइंट सतह में 109 सटीक-स्कीमा ऑपरेशन शामिल हैं। पूर्ण अनुबंध के लिए लाइव खोज का उपयोग करें: प्रत्येक ऑपरेशन को उसके स्कीमा के साथ सूचीबद्ध करता है, और एक ऑपरेशन के लिए सटीक तर्क और उदाहरण लौटाता है।
1.0.0a3ida_*tools/listida_help(topic="...")आपको आवश्यकता है:
idat/idat64 निष्पादन योग्य के साथ।
रिपॉज़िटरी का लाइव परीक्षण साक्ष्य IDA 9.3 और 9.4 को कवर करता है; 9.2 घोषित
संगतता न्यूनतम है।सामान्य विश्लेषण के लिए भाषा मॉडल या एम्बेडिंग मॉडल की आवश्यकता नहीं होती। वैकल्पिक सिमेंटिक-सर्च सुविधाएँ डिफ़ॉल्ट रूप से एक स्थानीय मॉडल का उपयोग करती हैं और जब कोई मॉडल कॉन्फ़िगर नहीं होता तो अक्षम रहती हैं।
डिफ़ॉल्ट रनटाइम idat है: प्रति सत्र एक हेडलेस IDA प्रक्रिया। idalib
बैकएंड प्रयोगात्मक है, इसके लिए IDA 9.3-या-नया इंस्टॉलेशन आवश्यक है
जिसमें idapro पैकेज सक्रिय हो, और पहली इंस्टॉल के लिए इसकी आवश्यकता नहीं है।
इंस्टॉलर इंस्टॉल रूट के अंतर्गत एक प्रबंधित वातावरण बनाता है, उसमें चेकआउट की एक फ़्रोज़न प्रति इंस्टॉल करता है, और समर्थित क्लाइंट स्थानों के लिए क्लाइंट कॉन्फ़िगरेशन लिखता है। रिपॉज़िटरी रूट से, चलाएँ:
python3 install.py
किसी ज्ञात IDA इंस्टॉलेशन के लिए, इसे स्पष्ट रूप से पास करें:
python3 install.py --ida-dir /path/to/ida-pro-9.3
गैर-इंटरैक्टिव रन के लिए:
python3 install.py --yes --no-ida-prompt --ida-dir /path/to/ida-pro-9.3
इंस्टॉलर IDADIR, IDA_DIR, PATH पर मौजूद IDA
निष्पादन योग्य, और सामान्य इंस्टॉलेशन निर्देशिकाओं के माध्यम से भी IDA खोज सकता है। जब एक से अधिक इंस्टॉलेशन मौजूद हों तो --ida-version
एक संस्करण चुनता है। पहले नियोजित परिवर्तनों का निरीक्षण करने के लिए
--dry-run का उपयोग करें।
इंस्टॉलर तब तक एम्बेडिंग मॉडल डाउनलोड नहीं करता जब तक आप एक चुनते या
अनुरोध नहीं करते। यह अपने अंतर्निहित क्लाइंट मैप में प्रत्येक क्लाइंट
स्थान के लिए कॉन्फ़िगरेशन फ़ाइलें बना या अपडेट कर सकता है, जिनमें वे क्लाइंट भी शामिल हैं जो आपकी मशीन पर
इंस्टॉल नहीं हैं। इंस्टॉल रूट में install-report.json जाँचें और यदि आवश्यक हो तो
अप्रयुक्त प्रविष्टियाँ हटा दें। मौजूदा नियमित कॉन्फ़िगरेशन फ़ाइलों का परिवर्तन से पहले
बैकअप लिया जाता है; विकृत, सिमलिंक्ड, या गैर-नियमित फ़ाइलों को अधिलेखित करने के बजाय
अस्वीकार कर दिया जाता है।
इंस्टॉलेशन के बाद MCP क्लाइंट को पुनः आरंभ करें ताकि यह अपना कॉन्फ़िगरेशन पुनः लोड करे।
एजेंट हार्नेस टूल सतह को लाइव खोजते हैं: tools/list प्रत्येक
ऑपरेशन को उसके स्कीमा के साथ सूचीबद्ध करता है, और ida_help(topic="...") सटीक तर्क
और एक उदाहरण लौटाता है। कोई स्थिर स्किल फ़ाइलें इंस्टॉल नहीं होतीं।
डिफ़ॉल्ट इंस्टॉल रूट है:
~/.local/share/ida-pro-mcp%LOCALAPPDATA%/ida-pro-mcpदूसरा स्थान चुनने के लिए IDA_PRO_MCP_HOME सेट करें या --install-root पास करें।
अल्फा रिलीज़ GitHub Actions द्वारा बनाई जाती हैं और मैन्युअल रूप से
प्रीरिलीज़ के रूप में प्रकाशित की जाती हैं। जब कोई रिलीज़ उपलब्ध हो, तो
रिलीज़ पृष्ठ से bundle.zip या
bundle.tar.gz एसेट और उसकी SHA256SUMS फ़ाइल डाउनलोड करें। चेकसम सत्यापित करें, बंडल निकालें, और इसकी शीर्ष-स्तरीय
निर्देशिका से इंस्टॉलर चलाएँ:
python3 install.py --yes --no-ida-prompt --ida-dir /path/to/ida-pro-9.3
रिलीज़ में स्क्रिप्टेड Python इंस्टॉलेशन के लिए एक व्हील और स्रोत वितरण भी शामिल है। बंडल सबसे सरल मार्ग है क्योंकि इसमें इंस्टॉलर और MCP क्लाइंट को कॉन्फ़िगर करने के लिए आवश्यक सभी प्रोजेक्ट फ़ाइलें शामिल हैं। रिलीज़ अल्फा गुणवत्ता की हैं; मूल बाइनरी और IDB रखें और अपग्रेड करने से पहले रिलीज़ नोट्स पढ़ें।
इंस्टॉलर उन क्लाइंट कॉन्फ़िगरेशन पथों के लिए सर्वर प्रविष्टि लिखता है जिन्हें वह जानता है। यह Gemini CLI, Antigravity, Antigravity IDE, Antigravity CLI, Claude Code, Codex, Copilot CLI, OpenCode, Claude Desktop, Cursor, VS Code, Windsurf, Cline, और Roo Code का समर्थन करता है। OpenCode और Copilot-परिवार के क्लाइंट भिन्न कॉन्फ़िगरेशन आकारों का उपयोग करते हैं; उन फ़ाइलों को इंस्टॉलर को लिखने दें या OpenCode सेटअप गाइड का पालन करें।
सामान्य JSON प्रारूप का उपयोग करने वाले क्लाइंट के लिए, प्रविष्टि इसके समतुल्य है:
{
"mcpServers": {
"ida-pro-mcp": {
"command": "/path/to/ida-pro-mcp/.venv/bin/python",
"args": ["-u", "-m", "ida_pro_mcp.host.server"],
"env": {
"IDA_PRO_MCP_HOME": "/path/to/ida-pro-mcp",
"IDADIR": "/path/to/ida-pro-9.3",
"IDA_MCP_TOOL_SURFACE": "agent"
}
}
}
}
Windows पर, <install-root>/.venv/Scripts/python.exe पर प्रबंधित इंटरप्रेटर का उपयोग करें। महत्वपूर्ण विवरण हैं
प्रबंधित इंटरप्रेटर, -u -m ida_pro_mcp.host.server, चयनित IDA
निर्देशिका, और IDA_MCP_TOOL_SURFACE=agent। क्लाइंट को
install.py पर इंगित न करें; वह फ़ाइल इंस्टॉलर है, MCP सर्वर नहीं।
क्लाइंट कॉन्फ़िगरेशन बदलने के बाद, क्लाइंट को पूरी तरह पुनः आरंभ करें और जाँचें कि
ida_help इसके उपलब्ध ऑपरेशनों में दिखाई देता है। यदि क्लाइंट केवल एक
पुराना व्यापक tool(action=...) इंटरफ़ेस दिखाता है, तो जाँचें कि वातावरण डिफ़ॉल्ट agent सतह का चयन करता है
न कि IDA_MCP_TOOL_SURFACE=legacy।
पहले एक परीक्षण बाइनरी के पूर्ण पथ का उपयोग करें। बाइनरी खोलना सामान्यतः IDA के प्रारंभिक विश्लेषण के पूरा होने की प्रतीक्षा करता है; एक बड़ी बाइनरी में समय लग सकता है।
ida_open_binary(binary_path="/absolute/path/to/sample")
ida_session_status()
ida_overview()
ida_list_imports(limit=30)
ida_list_strings(query="http", limit=30)
ida_find(query="main", limit=20)
ida_decompile(address="<address returned by IDA>")
ida_xrefs_to(address="<same address>")
जब भी आपको सटीक तर्क स्कीमा की आवश्यकता हो तो ida_help(topic="ida_decompile") का उपयोग करें। सार्वजनिक ऑपरेशन स्कीमा सख्त हैं: अज्ञात तर्क अस्वीकार कर दिए जाते हैं।
पते व्यक्तिगत ऑपरेशन अनुबंध के अनुसार पूर्णांक या स्ट्रिंग के रूप में स्वीकार किए जा सकते हैं; अपने क्लाइंट में ऑपरेशन के लिए ida_help द्वारा दिखाए गए रूप का उपयोग करें।
एक छोटे जाँच रिकॉर्ड के लिए, वर्कस्पेस निष्कर्ष ऑपरेशन हैं:
ida_write_finding(title="Input reaches parser", address="<address returned by IDA>", kind="finding", status="confirmed", confidence=0.8, evidence=[{"type":"call", "value":"recv", "address":"<evidence address>"}])
ida_analysis_brief()
ida_next_target()
ida_export_findings(format="markdown")
वर्कस्पेस निष्कर्ष IDB संपादनों से अलग रखे जाते हैं। यदि सक्रिय नीति
वर्कस्पेस लेखन की अनुमति देती है, तो ida_write_finding स्थानीय रूप से एक निष्कर्ष रिकॉर्ड करता है;
अन्यथा सर्वर एक नीति त्रुटि लौटाता है। ida_publish_findings(dry_run=true)
IDB परिवर्तनों का पूर्वावलोकन करता है। प्रकाशन, नाम बदलना, पैचिंग, और अन्य IDB परिवर्तन
नीति-नियंत्रित हैं और जहाँ ऑपरेशन एक प्रदान करता है वहाँ ऑपरेशन के प्रलेखित स्वीकृति की आवश्यकता होती है।
फ्रंट पेज कार्य-उन्मुख रहता है, लेकिन यह संक्षिप्त सूचकांक सार्वजनिक
सतह को स्कैन करना आसान बनाए रखता है। कॉल करते समय नीचे दिए गए प्रत्येक नाम के आगे ida_ लगाया जाता है। पूर्ण स्कीमा और उदाहरण
tools/list और ida_help(topic="...") के माध्यम से लाइव उपलब्ध हैं।
| समूह | ऑपरेशन |
|---|---|
| सत्र | open_binary, open_background, session_state, session_status, session_health, close_session, session_get, session_list, sso_activate, agent_login, agent_logout, session_switch |
| खोज | overview, find, semantic_search, reranker_status, function_families, index_functions, index_status, cancel_index, list_functions, list_strings, list_imports, list_types, list_segments, list_sigs, sreg_get, sreg_list, auto_wait, events, registers, search_data_value, search_query_lang, r2_status, r2_bininfo, r2_load_hints, r2_disassemble_hypothesis, r2_vxrefs, fw_detect_vector_table, fw_detect_load_base, fw_detect_mmio, fw_rtos_scan, fw_carve |
| कोड | decompile, disassemble, compare_functions, diff_sessions, xrefs_to, callers, callees, read_bytes, get_type, callgraph, emulate |
| निष्कर्ष | , , , , , , , , , |
सर्वर की आधारभूत नीति assist है। एक सत्र ऑपरेटर की
आधारभूत नीति को कड़ा कर सकता है लेकिन उसे ढीला नहीं कर सकता। नीति नियतात्मक है; यह यह निर्णय नहीं लेती कि कोई जोखिम भरा ऑपरेशन सुरक्षित है क्योंकि कोई क्लाइंट इसके लिए कहता है।
केवल-पढ़ने का निरीक्षण सामान्य प्रारंभिक बिंदु है। उदाहरणों में
ida_overview, ida_find, ida_list_functions, ida_list_strings,
ida_list_imports, ida_decompile, ida_disassemble, ida_xrefs_to,
ida_callers, ida_callees, ida_callgraph, ida_read_bytes, और
गणना ऑपरेशन शामिल हैं। ये अभी भी स्थानीय फ़ाइलों और IDA संसाधनों का उपभोग करते हैं,
और MCP क्लाइंट को उनके परिणाम प्राप्त होते हैं।
निम्नलिखित क्रियाएँ टिकाऊ स्थिति बदलती हैं या कोड निष्पादित करती हैं और इन्हें उच्च प्रभाव वाला माना जाना चाहिए:
ida_rename, ida_comment, ida_patch_bytes, फ़ंक्शन/प्रकार/सेगमेंट/डेटा
परिवर्तन, सिग्नेचर अनुप्रयोग, ida_save_idb, स्नैपशॉट, और undo/restore
ऑपरेशन IDB या संबंधित स्थिति को बदल सकते हैं।ida_publish_findings निष्कर्षों को IDB में लिखता है। पहले इसका dry-run रूप
चलाएँ; गैर-dry-run रूप नियंत्रित है।ida_close_session लाइव IDA रनटाइम को ध्वस्त करता है और सत्र के दृष्टिकोण से
विनाशकारी है।ida_python सक्रिय IDA प्रक्रिया में मनमाना Python निष्पादित करता है। यह
सुरक्षित मोड में अवरुद्ध है और सामान्य नीति के अंतर्गत स्पष्ट जोखिम स्वीकृति की आवश्यकता होती है।ida_emulate नियंत्रित जाँचों के लिए उपयोगी है, लेकिन परिवर्तनकारी एमुलेटर क्रियाओं
के लिए संबंधित स्वीकृति आवश्यक है।ida_til_export और ida_til_import फ़ाइलसिस्टम का उपयोग करते हैं और नियंत्रित हैं।
फ़ाइलसिस्टम पथ कॉन्फ़िगर किए गए मेमोरी रूट द्वारा सीमित हैं जहाँ वह
गार्ड लागू होता है।--disable-policy का उपयोग सुविधा फ़्लैग के रूप में न करें। यह
IDA_MCP_POLICY_MODE=off सेट करता है और सभी नीति गेट अक्षम कर देता है, जिनमें लेखन
स्वीकृतियाँ और अन्य वर्कफ़्लो नियंत्रण शामिल हैं। यदि कोई कॉल अस्वीकार कर दी जाती है, तो
ऑपरेशन की ida_help प्रविष्टि पढ़ें और सटीक स्वीकृत तर्क तभी प्रदान करें
जब उस ऑपरेशन का स्कीमा इसका समर्थन करता हो।
जबकि IDA अभी भी प्रारंभिक विश्लेषण कर रहा है, सुरक्षित मोड कुछ
पूर्ण-बाइनरी विश्लेषण, इंडेक्सिंग, और स्क्रिप्ट ऑपरेशनों को अवरुद्ध करता है। इसका उद्देश्य प्रारंभिक-सत्र कॉलों को
संकीर्ण रखना है; गार्ड को बायपास करने के बजाय ida_session_status या
ida_session_health को पोल करें।
ब्रिज लूपबैक पर सुनता है और प्रति-सत्र टोकन का उपयोग करता है। यह एक नेटवर्क सेवा नहीं है: ब्रिज पोर्ट को किसी अविश्वसनीय नेटवर्क पर उजागर या अग्रेषित न करें। आयातित स्क्रिप्ट, ट्रेस, बाइनरी, कॉर्पस डेटा, और क्लाइंट अनुरोधों को अविश्वसनीय इनपुट मानें।
सामान्य होस्ट-से-IDA पथ स्थानीय है। प्रोजेक्ट विश्लेषण पथ में कोई अंतर्निहित LLM सेवा नहीं चलाता, और स्थानीय एम्बेडिंग ऑप्ट-इन है। यह पूरे वर्कफ़्लो को स्वचालित रूप से ऑफ़लाइन नहीं बनाता:
llama-server डाउनलोड,
वैकल्पिक थ्रेट-कॉर्पस डाउनलोड, और बाहरी Rizin/radare2 एकीकरण
सक्षम होने पर नेटवर्क अनुरोध कर सकते हैं।केवल-स्थानीय सेटअप के लिए, डिफ़ॉल्ट स्थानीय रनटाइम का उपयोग करें, Gemini और अन्य वैकल्पिक डाउनलोड अक्षम छोड़ें, और MCP क्लाइंट और उसके मॉडल को अपने संगठन की डेटा नीति के अनुसार कॉन्फ़िगर करें। "केवल-स्थानीय" के लिए अभी भी यह जाँचना आवश्यक है कि क्लाइंट अपने स्वयं के मॉडल प्रदाता को क्या भेजता है।
इंस्टॉलेशन निर्देशिका स्पष्ट रूप से पास करें:
python3 install.py --ida-dir /path/to/ida-pro-9.3
आप IDADIR या IDA_DIR भी सेट कर सकते हैं। यदि कई इंस्टॉलेशन मिलते हैं,
तो चयन नियंत्रित करने के लिए --ida-version 9.3 या --no-ida-prompt का उपयोग करें। पुष्टि करें
कि चयनित निर्देशिका में एक चलाने योग्य idat या idat64 है।
क्लाइंट को पुनः आरंभ करें और उसकी कॉन्फ़िगरेशन प्रविष्टि का निरीक्षण करें। पुष्टि करें कि इसका
कमांड प्रबंधित venv Python और -u -m ida_pro_mcp.host.server का उपयोग करता है, और
कि env ब्लॉक में सही IDADIR है। install-report.json की समीक्षा करें; इंस्टॉलर क्लाइंट अपडेट विफलताओं को रिकॉर्ड करता है और संशोधित फ़ाइलों के बगल में
बैकअप रखता है। OpenCode और Copilot-परिवार के कॉन्फ़िगरेशन
आकार सामान्य JSON उदाहरण से भिन्न हैं।
सामान्य ida_open_binary कॉल प्रारंभिक विश्लेषण की प्रतीक्षा करता है। ida_session_status और ida_session_health जाँचें, एक बड़ी
बाइनरी के लिए अधिक समय दें, और इंस्टॉल/डेटा निर्देशिका के अंतर्गत प्रति-सत्र लॉग जाँचें। बैकग्राउंड-ओपन ऑपरेशन उपलब्ध है, लेकिन यह उन मामलों के लिए है जहाँ
आप इसके अतुल्यकालिक व्यवहार और सुरक्षित-मोड प्रतिब
write_findingmark_examinedlist_findingssearch_findingsupdate_findingexport_findingspublish_findingsimport_annotationsanalysis_briefnext_target| संपादन | create_function, change_function, rename, comment, patch_bytes, save_idb, make_code, undefine, rename_local, declare_type, apply_type, add_segment, set_segment_attrs, apply_sig, sreg_set, create_data, create_strlit, undo_begin, undo_end, add_entry, idb_snapshot, idb_restore_snapshot, struct_member_add, struct_member_del, struct_member_rename, struct_member_set_type, enum_member_add, enum_member_rename, enum_member_revalue, til_delete, til_export, til_import, mark_dangerous |
| गणना | calc_eval, calc_offset, calc_convert, calc_resolve, calc_deref, calc_chain, calc_align, calc_bitops |
| समर्थन | python, continue, help |
| वर्कफ़्लो | batch |