IDA-instances-MCP
IDA-instances-MCP
ida-pro-mcp의 커스텀 빌드입니다. MCP 클라이언트가 IDA Pro를 구동할 수 있게 해주는 MCP Server이며, 여러 독립 idalib 인스턴스를 호스팅하는 것을 목표로 안정성 보강 작업을 적용한 버전입니다(Ida-Instances 구성).
이 저장소는 mrexodia의 ida-pro-mcp(MIT)를 포크한 것입니다. 모든 업스트림 크레딧은 Duncan Ogilvie와 기여자들에게 있으며, 아래의 커스텀 변경 사항은 이 저장소에서 관리됩니다.
커스텀 변경 사항
업스트림 v2.0.0에 대해 안정성을 보강했습니다.
영역 | 변경 사항 |
데이터 안전성 | 부분 데이터베이스 정리는 소유권을 인식합니다. 다른 활성 인스턴스가 소유한 |
저장 신뢰성 |
|
동시성 | supervisor 잠금이 더 이상 워커 생성(~120초), health 프로브(세션당 ~2.5초), 이전 워커 종료까지 걸리지 않습니다. 하나의 느린 오픈이 모든 세션을 얼려버리지 못합니다. |
견고성 | stdio로 잘못된 형태의 JSON-RPC가 전달되면 프록시가 크래시하는 대신 |
시간 초과 | 프록시 시간 초과를 30초 → 900초로 높이고 |
네트워킹 | 워커 포트 TOCTAU는 이제 재시도합니다. SSE 쓰기와 정리(teardown)는 잠금으로 보호되고, CORS 정책 읽기는 IDA 메인 스레드 밖에서 캐시됩니다. |
리소스 제한 | IDB에 저장되는 트레이스 로그를 |
인증 | 모든 HTTP 요청에 인스턴트 API 키가 필요합니다. |
호스팅 엔드포인트 |
|
유휴 세션 정리 |
|
정상 종료 |
|
자동 업데이트 | 시작 시 GitHub 릴리스를 확인합니다. 대화형 세션은 키 하나로 자동 업데이트를 진행할 수 있습니다. |
호스팅 기본값 | 헤드리스 supervisor는 0.0.0.0:9999에서 수신하고, GUI 플러그인도 0.0.0.0에 바인딩되며 동일한 API 키가 필요합니다. |
Related MCP server: idalib-mcp-headless
요구 사항
Linux, macOS 또는 Windows
Python 3.11+(IDA 안의
idapyswitch를 사용하여 버전을 맞추세요)IDA Pro 8.3+(9.x 권장). IDA Free는 지원하지 않습니다.
MCP 클라이언트(Claude Code, Cursor, Codex, Opencode, VS Code, ...)
설치
uv 환경에서 idalib을 활성화합니다.
# linux (server deployment)
uv run "/opt/idapro-9.x/idalib/python/py-activate-idalib.py"
# macos
uv run "/Applications/IDA Professional 9.x.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
# windows
uv run "C:\Program Files\IDA Professional 9.x\idalib\python\py-activate-idalib.py"헤드리스 실행에는 IDA 설치 디렉터리가 IDADIR에 필요합니다.
헤드리스 슈퍼바이저 실행 (호스팅 모드)
uv run idalib-mcp # serves http://0.0.0.0:9999/mcp (new default)시작 시 API 키가 생성(또는 디스크에서 로드)되며, 이 키 없이 보낸 모든 요청은 예외 없이 401 Unauthorized 응답을 받습니다.
인스턴스를 소유한 시스템/네트워크에서 키를 한 번만 가져옵니다.
curl http://your-host:9999/key
# {"key": "3f2b..."} <- save it; this endpoint is now burned until restart키는
~/.idapro/mcp/api_key(모드0600)에 유지되며 재부팅 후에도 남아 있습니다.GET /key는 서버 시작당 한 번만 키를 다시 발급합니다.IDA_MCP_API_KEY로 재정의하거나IDA_MCP_API_KEY_FILE로 위치를 바꿀 수 있습니다.다른 모든 엔드포인트는 호출마다 키가 필요합니다.
Authorization: Bearer <key>
# or equivalently
X-API-Key: <key>키는 절대로 로그에 남지 않습니다.
호스팅 엔드포인트
엔드포인트 | 인증 | 목적 |
| 없음 | 준비 상태 프로브: |
| 키 | 열린 데이터베이스와 마지막 액세스 시각을 반환합니다 |
| 키 | 요청 본문의 바이너리를 스트리밍해 |
# provisioning flow
while ! curl -sf http://10.0.0.4:9999/health >/dev/null; do sleep 1; done
KEY=$(curl -s http://10.0.0.4:9999/key | jq -r .key)
curl -H "Authorization: Bearer $KEY" --data-binary @sample.elf \
"http://10.0.0.4:9999/upload?filename=sample.elf"유용한 플래그:
uv run idalib-mcp --host 127.0.0.1 --port 9999 # override bind address
uv run idalib-mcp --max-workers 8 # concurrent databases (default 4, 0 = unlimited)
uv run idalib-mcp --unsafe # enable destructive/debugger tools (DANGEROUS)
uv run idalib-mcp --profile tools.txt # restrict worker tools to a profile file
uv run idalib-mcp --stdio # stdio transport instead of HTTP
uv run idalib-mcp path/to/binary # open a binary at startup세션 수명 주기 도구: idb_open, idb_list, idb_close — 세승집당 데이터베이스 하나를 열 수 있습니다. 각 세션에는 독립된 워커 프로세스가 할당됩니다.
GUI 프록시 실행 (대화형 IDA)
IDA 내부에서 플러그인을 실행합니다(Edit -> Plugins -> MCP 또는 Ctrl+Alt+M). 그런 다음:
uv run ida-pro-mcp # stdio proxy, auto-discovers IDA
uv run ida-pro-mcp --transport http://127.0.0.1:9999 # serve HTTP insteadMCP 클라이언트 연결
일반적인 JSON 설정(HTTP 전송):
{
"mcpServers": {
"ida-instances": {
"url": "http://your-host:9999/mcp",
"headers": {
"Authorization": "Bearer <key-from-/key>"
}
}
}
}Claude Code:
claude mcp add --transport http ida-instances http://your-host:9999/mcp \
--header "Authorization: Bearer <key-from-/key>"stdio로 GUI 프록시를 사용하려면, uv run ida-pro-mcp --config를 실행한 후 그 JSON을 클라이언트에 붙여넣습니다.
구성 (환경 변수)
변수 | 기본값 | 의미 |
|
| 오픈 + 자동 분석 과정에서 재리핑되기 전 허용 최대 시간(초) ( |
|
| 전달된 도구 호출 하나에 허용되는 최대 시간(초) |
|
| GUI 프록시 → IDA 업스트림 시간 제한 ( |
|
| IDB 안에 저장되는 트레이스 로그 상한 |
|
| 기본 |
|
| Health 프로브 시간 예산 |
|
| 액세스하지 않은 세전이 자동 종료되기까지의 시간(분) ( |
|
|
|
|
| 업로드가 저장되는 위치 |
| – / | 인스턴스 키 주입 또는 키 파일 위치 변경 |
|
|
|
|
|
|
보안 참고 사항: API 키는 supervisor와 GUI 플러그인 모두의 모든 HTTP 엔드포인트를 보호합니다. 플러그인은
py_eval로 임의 코드를 실행할 수 있으므로 루트백에서도 키가 필알쉽니다. 이 키는 bearer 토큰입니다 — 키를 가진 사람은 누구나 인스턴스를 소유할 수 있습니다. 신뢰되지 않는 네트워에 넘 이라면 TLS 리버스 프록시를 추가하세요. 브라우저에서는?key=<key>로 키를 넘길 수 있습니다(/config.html에 유용).
테스트
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/typed_fixture.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -c api_analysis # one category
IDADIR=/path/to/ida uv run coverage run -m ida_pro_mcp.test tests/crackme03.elf -q라이선스
MIT — 상위 저장소인 ida-pro-mcp에서 이어받았습니다. 상위 프로젝트에 이름(IDA Pro, Hex-Rays)은 Hex-Rays SA의 상표이며, 이 프로젝트를 사용하려면 사용자의 유효한 IDA Pro 라이선스가 필요합니다.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceMCP Server for automated reverse engineering with IDA Pro.4311,479MIT
- FlicenseNot gradedqualityCmaintenanceA headless MCP server that manages multiple independent IDA Pro worker processes for reverse engineering, supporting database operations and debug tools.12
- AlicenseNot gradedqualityDmaintenanceHeadless MCP server for IDA Pro enabling on-demand database loading and programmatic reverse engineering workflows via MCP tools.18MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.3
Related MCP Connectors
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
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/Claude-Reverser/IDA-instances-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server