Un servidor MCP (Protocolo de Contexto de Modelo) que convierte todas las funciones del depurador de Windows de pybag en herramientas MCP nativas. Permite que clientes compatibles con MCP (Claude Desktop, Claude Code, Cowork, OpenAI Codex CLI, Cursor y agentes personalizados) controlen procesos en modo usuario, sesiones de kernel y análisis de volcados de memoria a través de llamadas JSON estructuradas.
Un servidor MCP (Model Context Protocol) que expone cada función del depurador de Windows de pybag como una herramienta nativa de MCP. Le otorga a cualquier cliente compatible con MCP (Claude Desktop, Claude Code, Cowork, OpenAI Codex CLI, Cursor y agentes personalizados) control total sobre procesos en modo usuario, sesiones de kernel y análisis de volcados de memoria — todo a través de llamadas de herramientas tipadas con respuestas JSON estructuradas.
git clone https://github.com/your-username/windbg-mcp.git cd windbg-mcp
### 2. Instalar dependencias de Python```bat
pip install pybag mcp
Descargue el SDK de Windows y seleccione Debugging Tools for Windows durante la instalación: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
El servidor se ejecuta como un proceso local stdio. Todos los clientes a continuación lo inician de la misma manera —
python <path-to>/windbg_mcp.py — pero cada uno tiene su propio formato de configuración.
Edite el archivo de configuración de Claude Desktop y agregue la entrada windbg-mcp:
Ubicación del archivo de configuración:
%APPDATA%\Claude\claude_desktop_config.jsonReinicie Claude Desktop. Las 55 herramientas de depuración aparecerán automáticamente.
---
### Claude Code (CLI)
Ejecute el siguiente comando una vez para registrar el servidor. Claude Code almacena la entrada
en su propia configuración MCP y hace que las herramientas estén disponibles en cada sesión posterior.```bash
claude mcp add windbg-mcp python C:\path\to\windbg-mcp\windbg_mcp.py
Para verificar que el servidor fue registrado:```bash claude mcp list
Para eliminarlo después:```bash
claude mcp remove windbg-mcp
Hay dos formas de agregar WinDbg MCP a Cowork: mediante configuración JSON (rápida) o instalándolo como un paquete de complemento .mcpb (portátil, compartible).
3. Guarda y reinicia Cowork. Las herramientas estarán disponibles en tu próxima sesión.
#### Opción B — Instalar como un paquete de plugins `.mcpb`
Un archivo `.mcpb` es un archivo zip del directorio de plugins que Cowork puede instalar
directamente. Este es el enfoque recomendado cuando se comparte el servidor con un equipo o
entre máquinas.
**Paso 1 — Construir el archivo `.mcpb`**
Desde la raíz del repositorio clonado, ejecuta:```bat
powershell -Command "Compress-Archive -Path '.\*' -DestinationPath 'windbg-mcp.zip'; Rename-Item 'windbg-mcp.zip' 'windbg-mcp.mcpb'"
Esto crea windbg-mcp.mcpb en el directorio actual, empaquetando windbg_mcp.py,
manifest.json y cualquier otro archivo del proyecto.
Paso 2 — Instalar en Cowork
windbg-mcp.mcpb.manifest.json del paquete, registra el servidor MCP y pone todas las herramientas disponibles de inmediato — no se requiere configuración manual de rutas.El manifest.json incluido en este repositorio ya está configurado correctamente:```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}` se resuelve en el momento de la instalación al directorio donde Cowork desempaquetó el paquete, por lo que no necesita codificar rutas de forma fija.
---
### OpenAI Codex CLI
Agregue el servidor a su archivo de configuración de Codex CLI. El archivo normalmente se encuentra en
`~/.codex/config.json` (Linux/macOS) o `%USERPROFILE%\.codex\config.json` (Windows).```json
{
"mcpServers": {
"windbg-mcp": {
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
}
Una vez guardado, inicia una nueva sesión de Codex. Las herramientas de WinDbg estarán disponibles para que el modelo las llame.
{
"mcpServers": {
"WinDbg": {
"command": "python",
"args": [
"-m",
"codex_windbg_server",
"--llm-provider",
"openai",
...
]
}
}
}
``````json
{
"windbg-mcp": {
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
Añade lo siguiente a tu ~/.continue/config.json (o al .continue/config.json a nivel de espacio de trabajo):```json
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "python",
"args": ["C:\path\to\windbg-mcp\windbg_mcp.py"]
}
}
]
}
}
Recarga la extensión Continue. Las 55 herramientas de depuración aparecerán en la lista de herramientas.
---
### Agentes personalizados y el SDK de MCP
Si estás construyendo tu propio agente o pipeline de automatización, conéctate a WinDbg MCP a través del transporte stdio estándar de MCP. El servidor habla JSON-RPC 2.0 sobre stdin/stdout.
#### Python (usando el SDK `mcp`)```python
import 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())
@modelcontextprotocol/sdk)```typescriptimport { 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);