
すべてのpybag Windowsデバッガ機能をネイティブMCPツールに変換するMCP (Model Context Protocol) サーバーです。MCP互換クライアント (Claude Desktop、Claude Code、Cowork、OpenAI Codex CLI、Cursor、カスタムエージェント) が、構造化JSON呼び出しを介してユーザーモードプロセス、カーネルセッション、クラッシュダンプ分析を制御できるようにします。
すべての pybag Windows デバッガー関数をネイティブ MCP ツールとして公開する MCP (Model Context Protocol) サーバーです。任意の MCP 互換クライアント (Claude Desktop、Claude Code、Cowork、OpenAI Codex CLI、Cursor、カスタムエージェント) に、ユーザーモードプロセス、カーネルセッション、クラッシュダンプ解析の完全な制御を、型付きツール呼び出しと構造化 JSON レスポンスを通じて提供します。
git clone https://github.com/your-username/windbg-mcp.git cd windbg-mcp
### 2. Pythonの依存関係をインストールする```bat
pip install pybag mcp
Windows SDK をダウンロードし、セットアップ中に Debugging Tools for Windows を選択してください: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
サーバーはローカルの stdio プロセスとして実行されます。以下のすべてのクライアントは同じ方法で起動します —
python <path-to>/windbg_mcp.py — ただし、それぞれ独自の設定形式を持ちます。
Claude Desktop の設定ファイルを編集し、windbg-mcp エントリを追加します:
設定ファイルの場所:
%APPDATA%\Claude\claude_desktop_config.jsonClaude Desktop を再起動してください。55 個のデバッガツールが自動的に表示されます。
---
### Claude Code (CLI)
サーバーを登録するには、次のコマンドを一度実行してください。Claude Code はエントリを自身の MCP config に保存し、以降のセッションでツールを利用できるようにします。```bash
claude mcp add windbg-mcp python C:\path\to\windbg-mcp\windbg_mcp.py
サーバーが登録されたことを確認するには:```bash claude mcp list
後で削除するには:```bash
claude mcp remove windbg-mcp
CoworkにWinDbg MCPを追加する方法は2つあります:JSON設定(クイック)または.mcpbプラグインバンドル(ポータブル、共有可能)としてインストールする方法です。
3. Coworkを保存して再起動します。ツールは次のセッションで利用できるようになります。
#### オプション B — `.mcpb` プラグインバンドルとしてインストール
`.mcpb` ファイルは、プラグインディレクトリの zip アーカイブであり、Cowork が直接インストールできます。これは、チームやマシン間でサーバーを共有する場合に推奨される方法です。
**ステップ 1 — `.mcpb` ファイルをビルドする**
クローンしたリポジトリのルートから、次を実行します:```bat
powershell -Command "Compress-Archive -Path '.\*' -DestinationPath 'windbg-mcp.zip'; Rename-Item 'windbg-mcp.zip' 'windbg-mcp.mcpb'"
これにより、現在のディレクトリに windbg-mcp.mcpb が作成され、windbg_mcp.py、manifest.json、およびその他のプロジェクトファイルがバンドルされます。
ステップ2 — Cowork にインストール
windbg-mcp.mcpb を選択します。manifest.json を読み取り、MCP サーバーを登録し、すべてのツールをすぐに利用できるようにします。手動でのパス設定は不要です。このリポジトリにバンドルされている manifest.json は、すでに正しく設定されています:```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}` はインストール時に、Cowork がバンドルを展開したディレクトリに解決されるため、パスをハードコードする必要はありません。
---
### OpenAI Codex CLI
Codex CLI 設定ファイルにサーバーを追加してください。ファイルは通常、次の場所にあります:
`~/.codex/config.json` (Linux/macOS) または `%USERPROFILE%\.codex\config.json` (Windows)。```json
{
"mcpServers": {
"windbg-mcp": {
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
}
保存後、新しいCodexセッションを開始します。WinDbgツールがモデルから呼び出せるようになります。
4. 保存します。Cursor は次回の Composer セッションでサーバーに接続します。
---
### Continue.dev
以下を `~/.continue/config.json` (またはワークスペースレベルの `.continue/config.json`) に追加します:```json
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "python",
"args": ["C:\\path\\to\\windbg-mcp\\windbg_mcp.py"]
}
}
]
}
}
Reload the Continue extension. The 55 debugger tools will appear in the tool list.
If you are building your own agent or automation pipeline, connect to WinDbg MCP over the standard MCP stdio transport. The server speaks JSON-RPC 2.0 over 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 (`@modelcontextprotocol/sdk` パッケージを使用)```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);
await client.close();
from langchain_mcp_adapters.tools import load_mcp_tools 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 get_tools(): async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() return await load_mcp_tools(session)
#### stdio 経由の直接 JSON-RPC (言語非依存)
サーバーは改行区切りの JSON-RPC 2.0 メッセージを介して通信します。プロセスの stdin に書き込み、stdout から読み取ることで、任意の言語から操作できます。```
→ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0"}}}
← {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{...},"serverInfo":{"name":"WinDbg MCP","version":"1.0.0"}}}
→ {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"load_dump","arguments":{"path":"C:\\crashes\\crash.dmp"}}}
← {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"{\"status\": \"ok\", ...}"}]}}