Skip to main content
Glama

GhidraLens

Ghidra, renderizado dentro de tu cliente de IA. Haz clic en un símbolo para renombrarlo. Haz clic en una llamada para seguirla.

MCP Apps Ghidra 11.3+ Modelos locales MIT

La vista del descompilador

Todos los servidores MCP de Ghidra hasta ahora devuelven texto. El modelo puede leerlo; tú no puedes navegarlo. GhidraLens devuelve el mismo análisis como una vista interactiva — construida sobre MCP Apps (io.modelcontextprotocol/ui), la extensión que permite a un servidor enviar HTML real a la conversación.

Tú y el modelo estáis mirando el mismo programa en vivo. Renombra una variable haciendo clic en ella y la siguiente descompilación del modelo verá el nuevo nombre.

Esa es una captura de pantalla real: where.exe, descompilado por Ghidra, con cada identificador llevando la dirección de la que procede.


Qué obtienes

Vista

Qué hace

Descompilador

La salida en C de Ghidra como un flujo de tokens en vivo — cada identificador lleva su dirección y su tipo. Haz clic en una variable local para renombrarla, haz clic en una llamada para seguirla. Funciones llamantes, funciones llamadas y variables en una barra lateral.

Explorador de funciones

Cada función del binario, filtrable y ordenable por dirección, nombre, tamaño o número de llamantes. Haz clic en una fila para descompilarla.

Grafo de llamadas

Llamantes a la izquierda, llamados a la derecha, la función que preguntaste en el medio. Haz clic en cualquier nodo para recentrarlo.

Explorador de funciones

El explorador de funciones

Grafo de llamadas

El grafo de llamadas

Diez herramientas en total. Tres abren vistas; el resto son consultas y escrituras, incluidas dos que el modelo nunca ve — existen solo para que un clic en una vista pueda activarlas.

Related MCP server: GhidraMCP

Cómo encaja todo

  MCP client  ──stdio──▶  server/  ──HTTP──▶  bridge/  ──JPype──▶  Ghidra (JVM)
  (Claude,                 TypeScript         PyGhidra            program stays
   Cursor, …)              MCP server         session             resident
       ▲
       │  ui:// HTML in a sandboxed iframe
       └──  ui/  three self-contained views

El bridge es un proceso separado y de larga duración a propósito. El autoanálisis de Ghidra es el paso costoso, y ocurre una sola vez. Medido en una utilidad de sistema de Windows de 64 KB (198 funciones):

Primera apertura, con análisis

25 s

Reabrir el mismo binario

0.3 s

Descompilar una función de 2 KB

0.4 s

Grafo de llamadas de 87 nodos

< 0.1 s

Reinicia el servidor MCP o el cliente y el programa analizado sigue ahí.

Configuración

Requisitos: Ghidra 11.3+, un JDK 21+, Python 3.9–3.13 (no 3.14 — JPype aún no tiene wheel para ella), Node 20+. Consulta bridge/setup.py.md — la parte de Python es quisquillosa y ese archivo cubre todas las formas en que falla. GhidraLens encuentra un JDK por ti si JAVA_HOME no está definido, lo que cubre el caso típico de «Java instalado, shell sin reiniciar».

git clone https://github.com/hellosverre/ghidralens
cd ghidralens
npm install
npm run build

Luego, inicia el bridge sobre el binario que quieras examinar:

python bridge/serve.py --binary /path/to/target.exe

Imprime un token. Pon eso, junto con la ruta al servidor compilado, en la configuración de tu cliente MCP:

{
  "mcpServers": {
    "ghidralens": {
      "command": "node",
      "args": ["/absolute/path/to/ghidralens/server/dist/index.js"],
      "env": {
        "GHIDRALENS_BRIDGE_URL": "http://127.0.0.1:8799",
        "GHIDRALENS_TOKEN": "paste-the-printed-token-here"
      }
    }
  }
}

Luego pregúntale a tu cliente: «descompila la función que gestiona la validación de licencia».

Herramientas

Herramienta

Visible para

Renderiza

open_binary

modelo

program_info

modelo

decompile

modelo + vista

Descompilador

list_functions

modelo + vista

Explorador de funciones

call_graph

modelo + vista

Grafo de llamadas

find_strings

modelo

xrefs_to

modelo + vista

rename_symbol

modelo + vista

add_comment

solo vista

save_program

modelo

add_comment está oculta del modelo deliberadamente. La visibilidad es cómo MCP Apps separa «el agente puede hacer esto» de «un clic puede hacer esto»; mantener las herramientas de escritura fuera de la lista del modelo la mantiene corta e impide que el modelo renombre cosas por iniciativa propia.

Los cambios de nombre y los comentarios permanecen en memoria hasta que save_program los escribe en el proyecto de Ghidra — tras lo cual aparecen en la GUI de Ghidra como cualquier otra edición.

Desarrollar las vistas sin Ghidra

npm run dev:ui
# open http://localhost:5173/dev/harness.html

ui/dev/harness.ts es un host real de MCP Apps — ejecuta el AppBridge del SDK contra la vista en un iframe, de modo que el handshake ui/initialize, el ui/notifications/tool-result inicial y cada tools/call que dispara un clic viajan todos por JSON-RPC real sobre postMessage. Hay un trazado de mensajes en el lado derecho y un interruptor de tema del host, porque las vistas deben verse bien en ambos.

Dos fuentes de datos, conmutables en la barra de herramientas:

  • fixtures — no se necesita Ghidra, nada que instalar

  • live bridge — hace de proxy a un bridge en ejecución, para que desarrolles contra un programa real analizado

Usa live antes de confiar en nada. Los fixtures son ordenados; la salida real es una función de 400 líneas con 56 variables locales y un grafo de llamadas de 87 nodos, y es ahí donde el diseño realmente se rompe.

Ejecutarlo en un modelo local

La ingeniería inversa es exactamente el trabajo que la gente prefiere no enviar a un modelo alojado, así que agent/ollama-agent.mjs es un pequeño host MCP que pone GhidraLens detrás de Ollama. Sin clave de API, nada sale de la máquina.

OLLAMA_MODEL=qwen3:14b node agent/ollama-agent.mjs "what does this binary do?"

Respeta _meta.ui.visibility, de modo que las herramientas solo para la aplicación permanecen ocultas para el modelo — la misma separación que impone un cliente gráfico. Un modelo ~9B es suficiente para orientarse con find_strings y list_functions; uno de 14B es notablemente mejor leyendo C descompilado.

Pruebas

Suite

Necesita Ghidra

Cubre

node server/smoke.mjs

no

Superficie MCP: herramientas, recursos ui://, visibilidad de herramientas, fallo controlado sin bridge

python bridge/test_serve.py

no

Autenticación del bridge, rechazo de CSRF, enrutamiento, validación de entrada

python bridge/test_session.py

Cada llamada a Ghidra: análisis, caché, tokens del descompilador, importaciones, renombrados, escrituras

node server/live.mjs

(bridge en ejecución)

Toda la cadena, y que cada payload coincide con la forma que las vistas indexan

Los dos primeros son los que CI puede ejecutar. test_session.py es el que importa después de modificar bridge/session.py — es lo único que demuestra que las llamadas a la API de Ghidra son correctas, y detectó tres errores reales el día en que se escribió.

Seguridad

El bridge se vincula solo a 127.0.0.1, requiere un token por ejecución en X-GhidraLens-Token, y rechaza cualquier solicitud que lleve una cabecera Origin o Referer — así, una página abierta en tu navegador no puede alcanzar tu descompilador. No tiene modelo multiusuario y no está pensado para exponerse; --host rechaza cualquier cosa que no sea loopback.

Analizar un binario no lo ejecuta, pero Ghidra abrirá malware de buena gana. Usa el mismo aislamiento que usarías para cualquier otro trabajo de RE.

Licencia

MIT.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to autonomously reverse engineer binaries using Ghidra's capabilities including decompilation, function analysis, automatic renaming, and BSim integration for function similarity matching.
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges Ghidra's reverse engineering capabilities with AI tools through 179 specialized tools for automated binary analysis and documentation. It supports full read/write access for function decompilation, renaming, and cross-binary documentation transfer in both GUI and headless modes.
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Renders interactive Chart.js charts and dashboards inline in AI conversations.

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).

View all MCP Connectors

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/hellosverre/ghidralens'

If you have feedback or need assistance with the MCP directory API, please join our Discord server