Plugin de servidor MCP autônomo para IDA Pro.
Servidor plugin MCP (Model Context Protocol) independente para IDA Pro 9.x que expõe as capacidades de análise do IDA para clientes LLM como o Claude Desktop.

action/format/direction para comentários, variáveis, tipos, xrefs, marcadores e códigoexecute_on_main_thread()IDASSISTMCP_)hcli plugin install idassistmcp
Isso instala automaticamente o plugin e suas dependências Python.
Baixe o zip da versão mais recente em GitHub Releases e extraia-o no diretório de plugins do IDA:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Extraia o zip em %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Em seguida, instale as dependências usando o Python empacotado com o IDA (não o Python do sistema):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
Substitua
<IDA_INSTALL_DIR>pelo caminho de instalação do IDA Pro.Dica: Você também pode usar a variável de ambiente
IDAUSRpara especificar um diretório de plugins personalizado.
Adicione ao seu claude_desktop_config.json do Claude Desktop:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Configure via variáveis de ambiente com o prefixo IDASSISTMCP_:
| Variável | Padrão | Descrição |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Endereço de vinculação do servidor |
IDASSISTMCP_SERVER__PORT | 9080 | Porta do servidor |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Tipo de transporte (sse ou streamablehttp) |
IDASSISTMCP_DEBUG | false | Ativar modo de depuração |
IDASSISTMCP_LOG_LEVEL | INFO | Nível de log |
| Ferramenta | Descrição |
|---|---|
list_binaries | Listar o binário atualmente carregado |
get_binary_info | Metadados detalhados do binário (arquitetura, hashes, segmentos) |
| Ferramenta | Descrição |
|---|---|
get_code | Obter código da função — format: 'decompile' (pseudo-C) ou 'disasm' (assembly) |
analyze_function | Análise abrangente: metadados, CFG, chamadores/chamados, descompilação |
get_basic_blocks | Blocos básicos do CFG com sucessores/predecessores |
get_function_stack_layout | Layout do frame de pilha (locais, argumentos, registradores salvos) |
| Ferramenta | Ações | Descrição |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Xrefs e opcionalmente chamadores/chamados para um endereço |
| Ferramenta | Ações | Descrição |
|---|---|---|
comments | action: get, set, list, remove | Gerenciar comentários (regulares, repetíveis, de função) |
| Ferramenta | Ações | Descrição |
|---|---|---|
variables | action: list, rename | Listar locais, ou renomear variáveis locais/globais com scope: auto, local, global |
| Ferramenta | Ações / Descrição |
|---|---|
types | action: list, set, create_struct, create_enum — gerenciar tipos do IDB |
get_classes | Listar tipos struct/class da biblioteca de tipos |
| Ferramenta | Descrição |
|---|---|
get_functions | Todas as funções com filtragem e paginação |
search_functions_by_name | Buscar por padrão de nome e filtros de tamanho |
get_function_by_name | Consulta por nome exato |
get_function_by_address | Consulta por endereço |
get_function_statistics | Estatísticas agregadas (contagens, tamanhos, top-10) |
| Ferramenta | Descrição |
|---|---|
rename_symbol | Renomear qualquer símbolo (função ou dado) |
batch_rename | Renomear em lote múltiplos símbolos |
| Ferramenta | Descrição |
|---|---|
get_imports | Tabela de importações agrupada por módulo |
get_exports | Tabela de exportações |
get_strings | Tabela de strings com paginação |
get_segments | Segmentos de memória com permissões |
get_entry_points | Todos os pontos de entrada do binário |
| Ferramenta | Descrição |
|---|---|
read_memory | Ler bytes brutos em um endereço |
get_data_at | Obter dado tipado em um endereço |
search_bytes | Busca por padrão de bytes binários |
search_strings | Busca por strings com paginação |
create_data_var | Definir variável de dado em um endereço (byte/word/dword/qword/float/ascii/tipo C) |
get_data_vars | Listar variáveis de dado definidas (itens que não são código) |
| Ferramenta | Descrição |
|---|---|
patch_bytes | Aplicar patch de bytes brutos no IDB |
assemble_code | Montar texto de instrução em um endereço e opcionalmente aplicar patch |
export_program | Exportar o binário patcheado ou banco de dados IDA para disco |
| Ferramenta | Descrição |
|---|---|
navigate_to | Mover cursor do IDA para um endereço |
bookmarks | Gerenciamento consolidado de marcadores - ações: list, set, remove |
get_current_address | Obter endereço e contexto na posição do cursor |
get_current_function | Obter informação da função na posição do cursor |
| Ferramenta | Descrição |
|---|---|
start_task | Iniciar tarefa assíncrona em segundo plano |
get_task_status | Verificar progresso da tarefa |
cancel_task | Cancelar tarefa em execução |
list_tasks | Listar todas as tarefas assíncronas |
IDAssistMCP/
├── idassistmcp_plugin.py # Ponto de entrada do plugin do IDA
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # Servidor FastMCP + transporte
├── context.py # Contexto IDA de binário único
├── tools.py # 41 ferramentas MCP (API do IDA)
├── resources.py # 8 recursos MCP
├── prompts.py # 7 prompts de fluxo de trabalho guiado
├── config.py # Configurações Pydantic
├── cache.py # Cache de análise LRU
├── tasks.py # Gerenciador de tarefas assíncronas
├── logging.py # Wrapper de logging do IDA
├── utils.py # Utilitários específicos do IDA
└── ui/
└── tool_registry.py # Catálogo de ferramentas para interface
Consulte o arquivo LICENSE para obter detalhes.