
Ein MCP-Server (Model Context Protocol), der alle pybag-Windows-Debugger-Funktionen in native MCP-Tools verwandelt. Er ermöglicht MCP-kompatiblen Clients (Claude Desktop, Claude Code, Cowork, OpenAI Codex CLI, Cursor und benutzerdefinierten Agenten) die Steuerung von Benutzermodus-Prozessen, Kernel-Sitzungen und Absturzanalyse über strukturierte JSON-Aufrufe.
Ein MCP (Model Context Protocol)-Server, der jede pybag Windows-Debugger-Funktion als natives MCP-Tool bereitstellt. Er gibt jedem MCP-kompatiblen Client (Claude Desktop, Claude Code, Cowork, OpenAI Codex CLI, Cursor und benutzerdefinierten Agenten) die volle Kontrolle über User-Mode-Prozesse, Kernel-Sitzungen und Absturzspeicheranalyse – alles durch typisierte Werkzeugaufrufe mit strukturierten JSON-Antworten.
git clone https://github.com/your-username/windbg-mcp.git cd windbg-mcp
### 2. Python-Abhängigkeiten installieren```bat
pip install pybag mcp
Laden Sie das Windows SDK herunter und wählen Sie Debugging Tools for Windows während der Installation aus: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
Der Server läuft als lokaler stdio-Prozess. Alle unten aufgeführten Clients starten ihn auf dieselbe Weise —
python <path-to>/windbg_mcp.py — aber jeder hat sein eigenes Konfigurationsformat.
Bearbeiten Sie die Claude Desktop-Konfigurationsdatei und fügen Sie den windbg-mcp-Eintrag hinzu:
Speicherort der Konfigurationsdatei:
%APPDATA%\Claude\claude_desktop_config.jsonStarten Sie Claude Desktop neu. Alle 55 Debugger-Tools werden automatisch angezeigt.
---
### Claude Code (CLI)
Führen Sie den folgenden Befehl einmal aus, um den Server zu registrieren. Claude Code speichert den Eintrag in seiner eigenen MCP-Konfiguration und stellt die Tools in jeder nachfolgenden Sitzung zur Verfügung.```bash
claude mcp add windbg-mcp python C:\path\to\windbg-mcp\windbg_mcp.py
Um zu überprüfen, ob der Server registriert wurde:```bash claude mcp list
Um es später zu entfernen:```bash
claude mcp remove windbg-mcp
Es gibt zwei Möglichkeiten, WinDbg MCP zu Cowork hinzuzufügen: über JSON-Konfiguration (schnell) oder
durch Installation als .mcpb-Plugin-Bundle (portabel, teilbar).
3. Speichern und starten Sie Cowork neu. Die Tools sind in Ihrer nächsten Sitzung verfügbar.
#### Option B — Installation als `.mcpb` Plugin-Bundle
Eine `.mcpb`-Datei ist ein Zip-Archiv des Plugin-Verzeichnisses, die Cowork direkt installieren kann. Dies ist die empfohlene Vorgehensweise, wenn Sie den Server mit einem Team oder auf mehreren Rechnern teilen.
**Schritt 1 — Erstellen Sie die `.mcpb`-Datei**
Führen Sie vom Stammverzeichnis des geklonten Repositorys aus:```bat
powershell -Command "Compress-Archive -Path '.\*' -DestinationPath 'windbg-mcp.zip'; Rename-Item 'windbg-mcp.zip' 'windbg-mcp.mcpb'"
Dies erstellt windbg-mcp.mcpb im aktuellen Verzeichnis und bündelt windbg_mcp.py,
manifest.json sowie alle anderen Projektdateien.
Schritt 2 — Installieren in Cowork
windbg-mcp.mcpb aus.manifest.json aus dem Bundle, registriert den MCP-Server und
stellt alle Werkzeuge sofort zur Verfügung — keine manuelle Pfadkonfiguration erforderlich.Die manifest.json in diesem Repository ist bereits korrekt konfiguriert:```json
{
"manifest_version": "0.2",
"name": "windbg-mcp",
"version": "1.0.0",
"description": "WinDbg MCP — full Windows debugger control via MCP tools",
"server": {
"type": "python",
"entry_point": "windbg_mcp.py",
"mcp_config": {
"command": "python",
"args": ["${__dirname}/windbg_mcp.py"]
}
}
}
`${__dirname}` wird zur Installationszeit in das Verzeichnis aufgelöst, in das Cowork das Bundle entpackt hat, sodass Sie keine Pfade fest codieren müssen.
---
### OpenAI Codex CLI
Fügen Sie den Server zu Ihrer Codex CLI-Konfigurationsdatei hinzu. Die Datei befindet sich normalerweise unter `~/.codex/config.json` (Linux/macOS) oder `%USERPROFILE%\.codex\config.json` (Windows).```json
{
"mcpServers": {
"windbg-mcp": {
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
}
Sobald gespeichert, starten Sie eine neue Codex-Sitzung. Die WinDbg-Tools stehen dem Modell zum Aufruf zur Verfügung.
4. Speichern. Cursor stellt bei der nächsten Composer-Sitzung eine Verbindung zum Server her.
---
### Continue.dev
Fügen Sie Folgendes zu Ihrer `~/.continue/config.json` (oder zur Arbeitsbereichs-`.continue/config.json`) hinzu:```json
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
]
}
}
Laden Sie die Continue-Erweiterung neu. Die 55 Debugger-Tools erscheinen in der Tool-Liste.
Wenn Sie Ihren eigenen Agenten oder Ihre eigene Automatisierungspipeline entwickeln, verbinden Sie sich über den standardmäßigen MCP stdio-Transport mit WinDbg MCP. Der Server spricht JSON-RPC 2.0 über stdin/stdout.
mcp SDK)```pythonimport asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client
server_params = StdioServerParameters( command="python", args=[r"C:\path\to\windbg-mcp\windbg_mcp.py"], )
async def main(): async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize()
# List all available tools
tools = await session.list_tools()
print([t.name for t in tools.tools])
# Load a crash dump
result = await session.call_tool(
"load_dump",
arguments={"path": r"C:\crashes\crash.dmp"},
)
print(result.content)
# Read 64 bytes at RSP
result = await session.call_tool(
"read_mem",
arguments={"addr": "0x00000000001FF000", "size": 64},
)
print(result.content)
asyncio.run(main())
#### TypeScript / Node.js (unter Verwendung des `@modelcontextprotocol/sdk` Pakets)```typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "python",
args: ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"],
});
const client = new Client({ name: "my-agent", version: "1.0.0" }, {});
await client.connect(transport);
// Call a tool
const result = await client.callTool({
name: "load_dump",
arguments: { path: "C:\\crashes\\crash.dmp" },
});
console.log(result.content);