ghidralens
GhidraLens
Ghidra, gerendert in Ihrem KI-Client. Klicken Sie auf ein Symbol, um es umzubenennen. Klicken Sie auf einen Aufruf, um ihm zu folgen.

Jeder Ghidra-MCP-Server bisher gibt Text zurück. Das Modell kann ihn lesen; Sie können
nicht darin navigieren. GhidraLens liefert dieselbe Analyse als interaktive Ansicht –
basierend auf MCP Apps
(io.modelcontextprotocol/ui), der Erweiterung, die es einem Server erlaubt, echtes HTML
in die Konversation zu bringen.
Sie und das Modell betrachten dasselbe laufende Programm. Benennen Sie eine Variable um, indem Sie darauf klicken, und der nächste Decompile des Modells sieht den neuen Namen.
Das ist ein echter Screenshot: where.exe, von Ghidra dekompiliert, jede Kennung
trägt die Adresse, von der sie stammt.
Was Sie bekommen
Ansicht | Was sie tut |
Decompiler | Ghidras C-Ausgabe als Live-Token-Strom – jede Kennung trägt ihre Adresse und ihre Art. Klicken Sie auf eine lokale Variable, um sie umzubenennen, auf einen Aufruf, um ihm zu folgen. Aufrufer, Aufgerufene und Variablen in einer Seitenleiste. |
Funktionsbrowser | Jede Funktion im Binary, filterbar und sortierbar nach Adresse, Name, Größe oder Anzahl der Aufrufer. Klicken Sie auf eine Zeile, um sie zu dekompilieren. |
Aufrufgraph | Aufrufer links, Aufgerufene rechts, die angefragte Funktion in der Mitte. Klicken Sie auf einen Knoten, um neu zu zentrieren. |
Funktionsbrowser

Aufrufgraph

Zehn Tools insgesamt. Drei offene Ansichten; der Rest sind Lookups und Schreibvorgänge, darunter zwei, die das Modell nie sieht – sie existieren nur, damit ein Klick in einer Ansicht sie auslösen kann.
Related MCP server: GhidraMCP
Wie es zusammenhängt
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 viewsDie Brücke ist bewusst ein separater langlebiger Prozess. Ghidras Auto-Analyse ist der teure Schritt, und sie passiert einmal. Gemessen an einem 64-KB-Windows-Systemprogramm (198 Funktionen):
Erstes Öffnen, mit Analyse | 25 s |
Dasselbe Binary erneut öffnen | 0,3 s |
Eine 2-KB-Funktion dekompilieren | 0,4 s |
87-Knoten-Aufrufgraph | < 0,1 s |
Starten Sie den MCP-Server oder den Client neu, und das analysierte Programm ist immer noch da.
Einrichtung
Voraussetzungen: Ghidra 11.3+, ein JDK 21+, Python 3.9–3.13 (nicht 3.14 –
JPype hat dafür noch kein Wheel), Node 20+. Siehe
bridge/setup.py.md – die Python-Seite ist eigenwillig, und diese Datei
behandelt jeden Weg, auf dem es schiefgehen kann. GhidraLens findet ein JDK für Sie, wenn
JAVA_HOME nicht gesetzt ist, was den üblichen Fall »Java installiert, Shell nicht neu gestartet« abdeckt.
git clone https://github.com/hellosverre/ghidralens
cd ghidralens
npm install
npm run buildStarten Sie dann die Brücke auf dem Binary, das Sie ansehen möchten:
python bridge/serve.py --binary /path/to/target.exeSie gibt ein Token aus. Fügen Sie das und den Pfad zum gebauten Server in die Konfiguration Ihres MCP-Clients ein:
{
"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"
}
}
}
}Fragen Sie dann Ihren Client: »dekompiliere die Funktion, die die Lizenzvalidierung übernimmt«.
Tools
Tool | Sichtbar für | Rendert |
| Modell | — |
| Modell | — |
| Modell + Ansicht | Decompiler |
| Modell + Ansicht | Funktionsbrowser |
| Modell + Ansicht | Aufrufgraph |
| Modell | — |
| Modell + Ansicht | — |
| Modell + Ansicht | — |
| nur Ansicht | — |
| Modell | — |
add_comment ist absichtlich vor dem Modell verborgen. Sichtbarkeit ist, wie MCP Apps
trennt zwischen »der Agent darf das tun« und »ein Klick darf das tun«; Schreib-Tools
aus der Liste des Modells herauszuhalten hält sie kurz und verhindert, dass das Modell
von sich aus Dinge umbenennt.
Umbenennungen und Kommentare leben im Speicher, bis save_program sie in das
Ghidra-Projekt schreibt – danach erscheinen sie im Ghidra-GUI wie jede andere Bearbeitung.
Die Ansichten ohne Ghidra entwickeln
npm run dev:ui
# open http://localhost:5173/dev/harness.htmlui/dev/harness.ts ist ein echter MCP-Apps-Host – er führt die AppBridge des SDK
gegen die Ansicht in einem iframe aus, sodass der ui/initialize-Handshake, das
eröffnende ui/notifications/tool-result und jeder tools/call, den ein Klick auslöst,
über echte postMessage-JSON-RPC laufen. Rechts unten gibt es eine Nachrichtenverfolgung und
einen Host-Theme-Umschalter, weil die Ansichten in beiden richtig aussehen müssen.
Zwei Datenquellen, in der Symbolleiste umschaltbar:
Fixtures – kein Ghidra nötig, nichts zu installieren
Live-Brücke – proxyt zu einer laufenden Brücke, sodass Sie gegen ein echtes analysiertes Programm entwickeln
Nutzen Sie Live, bevor Sie irgendetwas vertrauen. Fixtures sind aufgeräumt; echte Ausgabe ist eine 400-Zeilen-Funktion mit 56 lokalen Variablen und einem 87-Knoten-Aufrufgraph, und genau dort bricht das Layout tatsächlich.
Mit einem lokalen Modell ausführen
Reverse Engineering ist genau die Arbeit, die man nicht gern an ein gehostetes
Modell schickt, daher ist agent/ollama-agent.mjs ein kleiner MCP-Host, der GhidraLens
hinter Ollama stellt. Kein API-Schlüssel, nichts verlässt die
Maschine.
OLLAMA_MODEL=qwen3:14b node agent/ollama-agent.mjs "what does this binary do?"Er respektiert _meta.ui.visibility, sodass die Nur-App-Tools vor dem Modell verborgen
bleiben – dieselbe Trennung, die ein grafischer Client durchsetzt. Ein ~9B-Modell reicht, um
sich mit find_strings und list_functions zu orientieren; ein 14B ist deutlich besser
beim Lesen dekompilierten C-Codes.
Tests
Suite | Braucht Ghidra | Deckt ab |
| nein | MCP-Oberfläche: Tools, |
| nein | Brücken-Auth, CSRF-Ablehnung, Routing, Eingabevalidierung |
| ja | Jeder Ghidra-Aufruf: Analyse, Caching, Decompiler-Tokens, Importe, Umbenennungen, Schreibvorgänge |
| ja (Brücke läuft) | Die ganze Kette und dass jede Nutzlast zur Form passt, in die die Ansichten indexieren |
Die ersten beiden sind das, was CI ausführen kann. test_session.py ist das, was zählt,
nachdem man bridge/session.py angefasst hat – es ist das Einzige, das beweist, dass die
Ghidra-API-Aufrufe richtig sind, und es hat am Tag seiner Entstehung drei echte Bugs gefunden.
Sicherheit
Die Brücke bindet nur an 127.0.0.1, verlangt ein Pro-Lauf-Token in
X-GhidraLens-Token und lehnt jede Anfrage mit einem Origin- oder Referer-Header ab –
eine in Ihrem Browser geöffnete Seite kann also nicht auf Ihren Decompiler zugreifen. Sie hat
kein Mehrbenutzermodell und ist nicht dafür gedacht, exponiert zu werden; --host lehnt
alles außer Loopback ab.
Das Analysieren eines Binaries führt es nicht aus, aber Ghidra öffnet bereitwillig Malware. Nutzen Sie dieselbe Isolation, die Sie für jede andere RE-Arbeit nutzen würden.
Lizenz
MIT.
Maintenance
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables LLMs to perform binary analysis using Ghidra in headless mode, extracting functions, pseudocode, structs, and enums from binaries for interactive reverse-engineering.94
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously reverse engineer binaries using Ghidra's capabilities including decompilation, function analysis, automatic renaming, and BSim integration for function similarity matching.1AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceBridges 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
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to analyze binaries, debug processes, and inspect kernel state using Ghidra, x64dbg, WinDbg, and ILSpyCmd.5Apache 2.0
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).
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/hellosverre/ghidralens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server