kd-mcp
The kd-mcp server provides tools to manage Windows kernel debugging sessions via KDNET, controlling kd.exe to debug guest VMs remotely.
health_check– Verify server configuration andkd.exepath are valid and accessible.start_kd– Start akd.exeKDNET session using explicit port, key, and target parameters (or config defaults).start_from_state– Start akd.exesession by reading a shared state file (e.g., produced by WinRM-MCP'sconfigure_kdnet).kd_command– Send any debugger command (e.g.,!process 0 0,lm,k,r) to a running session and collect output.break_in– Send a break signal to pause guest kernel execution and enter the debugger prompt.continue_go– Send theg(go) command to resume guest kernel execution after a break or breakpoint.read_output– Retrieve buffered output from a runningkd.exesession (optionally limiting to the last N characters).stop_kd– Terminate a debugging session, with an option to also kill the debug target.list_sessions– List all currently active KD debugging sessions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kd-mcpStart debugging from the state file and list kernel modules"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
KD-MCP
kd-mcp는 Windows 커널 디버깅을 위해 kd.exe 또는 WinDbg를 제어하는 MCP(Model Context Protocol) 서버입니다.
이 프로젝트는 Windows 호스트에서 실행되며, KDNET을 통해 Windows 게스트 VM의 커널 디버깅 세션을 자동으로 연결하고 제어할 수 있습니다.
Features
KDNET 자동 연결
kd.exe 제어
WinDbg 제어
상태 파일 기반 자동 연결
디버거 명령 실행
디버거 출력 수집
KD break 상태에서 WinRM 재시도를 돕는
resume_for_winrmhidden
kd.exe -server기반 remoting modedisposable
kd.exe -remotecommand clientvisible remote client 열기 및 best-effort Ctrl+Break
hidden server log tail 및 local kd process 조회
현재 연결 상태 조회
세션 종료
WinRM-MCP 연동
Related MCP server: winrm-mcp
Architecture
KD-MCP는 항상 호스트 Windows에서 실행됩니다.
게스트 Windows에서는 KDNET 커널 디버깅만 활성화되어 있으면 됩니다.
Host Windows
├─ Codex / MCP Client
├─ kd-mcp
├─ kd.exe
└─ WinDbg
Guest Windows VM
├─ Windows Kernel
└─ KDNET TargetIntegration With WinRM-MCP
KD-MCP는 WinRM-MCP와 함께 사용하는 것을 권장합니다.
WinRM-MCP는 게스트 VM 설정과 KDNET 활성화를 담당하고, KD-MCP는 실제 커널 디버거 연결과 제어를 담당합니다.
일반적인 작업 순서는 다음과 같습니다.
1. WinRM-MCP 실행
2. configure_kdnet()
3. 게스트 재부팅
4. KD-MCP 실행
5. direct mode면 start_from_state()
6. remoting mode면 start_kd_server_from_state()
7. KDNET 연결
8. 커널 디버깅 시작KD가 break 또는 breakpoint 상태에 들어가면 게스트 커널, 스케줄러, 네트워크 스택이 멈출 수 있습니다. 이 상태에서는 WinRM도 응답하지 않는 것이 정상입니다.
WinRM 작업이 timeout되거나 연결 실패가 발생하고 KD가 break 상태라면, 먼저 resume_for_winrm 또는 continue_go를 호출하여 g 명령을 실행하고 기본 5초 동안 기다린 뒤 WinRM-MCP의 wait_for_winrm으로 재연결을 확인하는 것이 안전합니다.
1. kd-mcp: resume_for_winrm(session_id)
2. 약 5초 대기
3. winrm-mcp: wait_for_winrm
4. 이후 WinRM 작업 재시도WinRM 없이 단독으로 사용할 수도 있습니다. 이 경우 guest는 이미 KDNET이 설정되어 있어야 하며, config.yaml의 default_target, default_port, default_key 또는 default_kdnet을 사용해 start_kd() 또는 start_kd_server()를 바로 호출하면 됩니다.
State File
WinRM-MCP의 configure_kdnet()는 상태 파일을 생성합니다.
상태 파일에는 다음 정보가 포함됩니다.
Guest Host
Host IP
KDNET Port
KDNET Key
생성 시각
KD-MCP는 이 정보를 사용하여 자동으로 디버거를 연결합니다. 현재 구현은 guest_host를 kd.exe의 target 값에도 반영합니다.
host IP는 guest에서 bcdedit /dbgsettings net hostip:...로 KDNET을 설정할 때 필요한 값이라 WinRM-MCP 쪽에 있습니다. KD-MCP 단독 attach에는 보통 guest target, port, key만 있으면 충분합니다.
직접 kd.exe를 붙이는 direct-session mode와 hidden kd.exe -server remoting mode를 둘 다 제공합니다. 같은 KDNET target에 두 mode를 동시에 owner로 붙이면 충돌할 수 있으므로 한 시점에는 하나만 사용해야 합니다.
Requirements
호스트에는 다음이 필요합니다.
Windows 10/11
Windows Server
Python 3.10 이상
kd.exe 또는 WinDbg
Debugging Tools for Windows
게스트에는 다음이 필요합니다.
Windows 10/11
Windows Server
KDNET 지원 커널
네트워크 연결 가능 환경
Installation
git clone https://github.com/haoylle/26_KD-MCP.git
cd 26_KD-MCP
.\scripts\install.ps1설치 후 상태 파일 경로와 디버거 실행 경로를 설정합니다.
Configuration
KD-MCP는 상태 파일을 읽어 KDNET 연결을 구성합니다.
일반적으로 다음 정보를 사용합니다.
{
"schema": "winrm-kd-session-v1",
"guest_host": "192.168.122.50",
"host_ip": "192.168.122.1",
"port": 50000,
"key": "1.2.3.4"
}WinRM-MCP와 KD-MCP는 동일한 포트, 키, 상태 파일을 사용해야 합니다.
continue_wait_sec는 continue_go 또는 resume_for_winrm이 g 명령을 보낸 뒤 기다리는 기본 시간입니다.
kd:
continue_wait_sec: 5.0
default_target: "192.168.122.50"
default_kdnet: null
server_port: 50055
remote_server: "127.0.0.1"
server_state_file: "C:\\mcp-state\\kd-server.json"
workdir: "C:\\mcp-state\\kd-work"default_target: standalone mode에서 기본 guest IP 또는 hostnamedefault_kdnet:net:port=...,key=...,target=...형태의 raw KDNET 문자열을 직접 쓰고 싶을 때 사용
standalone mode에서는 다음 두 방식 중 하나를 쓰면 됩니다.
1. default_target + default_port + default_key 설정
2. default_kdnet 하나만 설정MCP Client Configuration
이 MCP 서버는 stdio 기반 로컬 MCP 서버로 실행됩니다.
아래 예시는 레포지토리를 C:\tools\26_KD-MCP에 설치했다고 가정합니다. 실제 경로에 맞게 수정해야 합니다.
Claude Code
Claude Code에서 프로젝트 단위로 등록하려면 프로젝트 루트에서 다음 명령을 실행합니다.
claude mcp add kd `
--env KD_MCP_CONFIG="C:\tools\26_KD-MCP\config.yaml" `
-- "C:\tools\26_KD-MCP\.venv\Scripts\kd-mcp.exe"사용자 전체 설정으로 등록하고 싶다면 Claude Code의 MCP scope 옵션을 사용하여 user scope로 추가합니다.
claude mcp add kd `
--scope user `
--env KD_MCP_CONFIG="C:\tools\26_KD-MCP\config.yaml" `
-- "C:\tools\26_KD-MCP\.venv\Scripts\kd-mcp.exe"수동으로 .mcp.json을 사용하는 경우에는 다음처럼 작성할 수 있습니다.
{
"mcpServers": {
"kd": {
"command": "C:\\tools\\26_KD-MCP\\.venv\\Scripts\\kd-mcp.exe",
"env": {
"KD_MCP_CONFIG": "C:\\tools\\26_KD-MCP\\config.yaml"
}
}
}
}등록 후 Claude Code를 다시 시작하거나 MCP 서버 목록을 갱신한 뒤 kd.health_check를 호출해 설정을 확인합니다.
Codex CLI
Codex CLI에서는 사용자 설정 파일에 MCP 서버를 추가합니다.
Windows 기준 설정 파일 위치 예시는 다음과 같습니다.
%USERPROFILE%\.codex\config.toml다음 항목을 추가합니다.
[mcp_servers.kd]
command = "C:\\tools\\26_KD-MCP\\.venv\\Scripts\\kd-mcp.exe"
env = { KD_MCP_CONFIG = "C:\\tools\\26_KD-MCP\\config.yaml" }Codex CLI를 다시 시작한 뒤 MCP tool 목록에서 kd 서버가 보이는지 확인합니다.
설정 확인은 다음 tool을 먼저 호출하는 방식으로 진행합니다.
kd.health_checkTools
start_from_state
상태 파일을 읽어 KDNET 연결을 시작합니다.
대부분의 사용자는 이 기능을 통해 자동 연결을 수행하면 됩니다. 상태 파일에 guest_host가 있으면 kd.exe 연결 인자에 같이 반영합니다.
start_kd
포트, 키, 타겟 값을 직접 지정하여 KDNET 연결을 수행합니다.
인자를 생략하면 config.yaml의 default_target, default_port, default_key, default_kdnet을 사용하므로 standalone mode에서 바로 호출할 수 있습니다.
start_kd_server / start_kd_server_from_state
hidden kd.exe -server owner를 띄운 뒤 kd.exe -remote 클라이언트로 제어하는 mode입니다.
이 mode는 사람이 visible remote client를 열어도 hidden owner가 계속 유지되는 점이 장점입니다.
start_kd_server()도 인자를 생략하면 standalone용 기본 설정값을 사용합니다.
kd_command
kd.exe 또는 WinDbg에 디버거 명령을 전달합니다.
현재 구현은 kd> 프롬프트를 줄바꿈 없이 출력하는 경우도 처리하도록 문자 단위로 출력을 수집합니다.
예시는 다음과 같습니다.
!process 0 0
lm
!thread
kbreak_in
실행 중인 KD 세션에 break 신호를 보냅니다.
break 상태에서는 게스트 커널과 네트워크 스택이 멈출 수 있으므로 WinRM이 timeout되는 것이 정상일 수 있습니다.
도구 결과에는 prompt_seen이 포함되며, 실제로 kd> 프롬프트를 감지했는지 확인할 수 있습니다.
continue_go
KD 세션에 g 명령을 보내 게스트 실행을 재개합니다.
wait_sec 값을 생략하면 설정 파일의 kd.continue_wait_sec 값만큼 기다린 뒤 반환합니다.
resume_for_winrm
KD break 또는 bp 상태에서 WinRM을 다시 사용해야 할 때 호출하는 helper입니다.
내부적으로 g 명령을 실행하고 기본 5초 동안 기다린 뒤, WinRM-MCP의 wait_for_winrm 호출을 권장하는 결과를 반환합니다.
read_output
현재 KD 세션의 출력 버퍼를 반환합니다.
kd_server_command / kd_server_script
hidden remoting server에 disposable remote client를 붙여 명령이나 스크립트를 실행합니다.
g 같은 long-running command는 다음 break 전까지 반환되지 않을 수 있으므로 timeout에 걸릴 수 있습니다.
kd_server_status / read_kd_server_log / list_kd_processes
hidden remoting server의 상태, 로그, 로컬 kd.exe/windbg.exe 프로세스를 조회합니다.
open_remote_client / break_remote_client
visible kd.exe -remote 창을 열거나, 그 창을 통해 best-effort Ctrl+Break를 보냅니다.
이 방식은 hidden server가 session owner를 유지한 채로 사람이 수동으로 들여다볼 수 있게 해 줍니다.
stop_kd
현재 디버깅 세션을 종료합니다.
list_sessions
현재 활성 KD 세션 목록을 반환합니다.
Common Commands
커널 디버깅 시 자주 사용하는 명령은 다음과 같습니다.
!process 0 0
!thread
!handle
!pool
!pte
lm
k
r필요에 따라 WinDbg 확장 명령도 사용할 수 있습니다.
Troubleshooting
Cannot connect to KDNET target
다음을 확인합니다.
KDNET 설정 적용 여부
게스트 재부팅 여부
포트 번호
KDNET Key
방화벽 설정
WinRM does not respond while KD is attached
KD가 단순히 연결되어 있는 상태라면 WinRM은 동작할 수 있습니다.
하지만 KD가 break 상태이거나 breakpoint에 걸려 kd> 프롬프트에서 멈춰 있으면 게스트 커널과 네트워크 스택이 멈추므로 WinRM이 응답하지 않을 수 있습니다.
이 경우 다음 순서로 처리합니다.
1. resume_for_winrm(session_id)
2. 5초 정도 대기
3. winrm-mcp: wait_for_winrm
4. WinRM 작업 재시도remoting mode의 kd_server_command("g")는 다음 break까지 remote client가 반환되지 않을 수 있으므로, WinRM 복구 자동화가 중요하면 direct-session mode의 resume_for_winrm이 더 적합합니다.
Waiting to reconnect
게스트가 아직 재부팅 중이거나 KDNET 설정이 적용되지 않았을 수 있습니다.
게스트에서 다음 명령을 확인합니다.
bcdedit /dbgsettings
bcdedit /enum {current}State file not found
WinRM-MCP의 configure_kdnet()가 상태 파일을 생성했는지 확인합니다.
두 MCP 서버가 동일한 상태 파일 경로를 사용해야 합니다.
Security Notes
KDNET 연결 정보는 신뢰할 수 있는 환경에서만 사용해야 합니다.
상태 파일에는 디버깅 연결 정보가 포함되어 있으므로 접근 권한을 적절히 제한하는 것이 좋습니다.
License
MIT License
Available Tools
9 toolsbreak_inA
Send a break signal to kd.exe. On Windows this uses CTRL_BREAK_EVENT when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden. It reveals platform-specific behavior (CTRL_BREAK_EVENT on Windows) and the conditional 'when possible'. This is valuable transparency. However, it does not describe the effect on the kd.exe process (e.g., whether it pauses or triggers a debugger break), but given the output schema exists, the return value explanation may be deferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Send a break signal to kd.exe') and appends a relevant platform detail. No extraneous words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description covers the basic action but could be more complete. It does not mention prerequisites (e.g., kd.exe must be running via start_kd) or the expected outcome of sending a break signal (e.g., interrupts execution, opens a debug prompt). An agent might infer from context, but explicit completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (session_id, type string, required) with no description (coverage 0%). The description does not mention or clarify this parameter at all. Since schema coverage is low (<50%), the description must compensate but fails to provide any meaning for the parameter, resulting in no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send a break signal') and the target resource ('to kd.exe'), distinguishing it from sibling tools like 'start_kd' and 'stop_kd' which start/stop the process, or 'kd_command' which sends generic commands. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It provides a technical detail about Windows behavior but lacks guidance on context (e.g., 'use to break into a running kd session') or when not to use it. Implied by the name and action, but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_goC
Send the KD 'g' command to continue target execution.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions sending a command to continue execution, but lacks details on side effects (e.g., whether it clears breakpoints, what happens to the debugger state). For a debugger action, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence without fluff. However, it sacrifices necessary detail for brevity; additional context could be added without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's role in a debugger workflow, the description is incomplete. It does not mention return values (despite an output schema existing), error conditions, or how this fits with sibling tools like break_in or read_output. The agent lacks context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions). The description does not explain the required 'session_id' parameter, its format, or how to obtain it. This forces the agent to infer from the name alone, which is inadequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send the KD g command') and its purpose ('to continue target execution'). It effectively distinguishes from sibling tools like break_in or stop_kd. However, it could be more explicit about what 'continue target execution' entails (e.g., resuming a paused process).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like kd_command (which can send arbitrary commands). The description does not specify prerequisites, such as needing an active session, or when this command is appropriate (e.g., after a breakpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Verify kd-mcp config and kd.exe path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks details on side effects, whether it modifies anything, or what it returns. Since no annotations are provided, the description must fully disclose behavior, but it does not mention output format or success/failure indicators, despite an output schema existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately conveys the tool's function. No wasted words, and it is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description is somewhat complete for a simple health check. However, it could be improved by mentioning the typical use case (e.g., 'Run this first to ensure the environment is set up') or the form of the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0 params), so the baseline is 4. The description adds meaning beyond the empty schema by explaining the purpose, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it verifies kd-mcp config and kd.exe path. The verb 'Verify' and the specific resources (config, path) make the purpose unambiguous, and it is distinct from sibling tools like break_in, continue_go, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_sessions or start_kd. The description only states what it does, not under what circumstances or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kd_commandB
Send a command to a running kd.exe session and collect output.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| command | Yes | ||
| timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It does not mention side effects, blocking nature, timeout behavior, or if commands affect session state. The phrase 'collect output' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loading the action and outcome without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of an output schema, the description lacks essential context: expected command format, session prerequisites, timeout implications. Users need more details to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should clarify each parameter. It does not define session_id, command, or timeout_sec beyond the schema titles, leaving the agent to guess meaning and formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send a command'), the target ('to a running kd.exe session'), and the result ('collect output'). It effectively distinguishes from sibling tools like start_kd or stop_kd.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like read_output or break_in. The description implies the session must be running, but provides no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsA
List active KD sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is minimal and does not disclose behavioral traits beyond listing. With no annotations provided, the description carries the burden, but it omits details like read-only nature, authorization requirements, or side effects. However, for a simple list operation, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema is present, the description is complete enough for an agent to understand its basic function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so this dimension is not applicable. Baseline score of 4 is appropriate as the description adds no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List') and the resource ('active KD sessions'). It effectively distinguishes itself from sibling tools like break_in or start_kd, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (listing sessions) but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_outputC
Return buffered kd.exe output for a session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| tail_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'buffered' but does not explain buffer semantics (e.g., persistence, clearing behavior), or whether output is raw or formatted. Key behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at one sentence, but it sacrifices critical information. It is adequately front-loaded but under-specified for a tool with two parameters and no parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to elaborate on what 'buffered output' entails or how the tool behaves. For a tool with moderate complexity and no annotations, the description is too sparse to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the two parameters: 'session_id' (format, source) or 'tail_chars' (purpose, effect of null). The description adds no meaning beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'return', the resource 'buffered kd.exe output', and the scope 'for a session'. It directly conveys the tool's purpose and distinguishes it from sibling tools like 'kd_command' which sends commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage to retrieve output after running kd commands, but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_from_stateC
Start kd.exe using the shared state file written by winrm-mcp configure_kdnet.
| Name | Required | Description | Default |
|---|---|---|---|
| state_file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes the action but omits important behavioral details such as destructive potential, error handling, or prerequisites beyond the state file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is direct and without redundancy. However, additional context about the parameter or usage would improve utility without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional parameter) and the presence of an output schema (not shown), the description is minimally adequate. It omits error conditions and explicit prerequisites beyond the state file source.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'state_file' has no description in the input schema (0% coverage). The tool description mentions the state file's origin but does not specify format, validity, or default behavior, leaving the agent underinformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts kd.exe using a shared state file from configure_kdnet. It specifies the verb and resource, but does not differentiate it from the sibling 'start_kd', which may have a similar function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like start_kd. It implies a prerequisite (state file from configure_kdnet) but does not explicitly state when-not-to-use or provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_kdB
Start kd.exe for KDNET using explicit port/key values.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| key | No | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only says 'Start kd.exe'. It does not mention side effects, whether it blocks, or what happens if already running.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence with no redundancy; efficient but could slightly benefit from front-loading key details like the target parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no annotations, the description is too brief. It neglects usage context, behavioral details, and full parameter explanation, despite the existence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'port/key values' covering two of three parameters, but does not explain the 'target' parameter. Schema coverage is 0%, so the description partially compensates but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start'), the resource ('kd.exe'), and the method ('using explicit port/key values'), distinguishing it from siblings like 'start_from_state' which starts from a saved state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., 'start_from_state'), nor any prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_kdB
Stop kd.exe. By default only the debugger process is stopped, not the target.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| terminate_target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses default behavior (stop debugger only) but omits side effects, permission needs, or what happens to the target process. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no fluff. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (stopping a debugger, optional target termination), the description lacks details on outcomes, state changes, and prerequisites. Could explain return format or impact on sessions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must add value. It hints at terminate_target's role (default false) and session_id's existence, but doesn't explain session_id format or how to obtain it. Moderate improvement over schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops kd.exe and distinguishes default behavior (stop debugger only, not target). This is specific and differentiates from siblings like start_kd or continue_go.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like break_in or kd_command. Does not explain when to set terminate_target to true or prerequisites. Lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
break_in - First observed
continue_go - First observed
health_check - First observed
kd_command - First observed
list_sessions - First observed
read_output - First observed
start_from_state - First observed
start_kd - First observed
stop_kd
TDQS
Most tools have distinct purposes. The two start tools (start_from_state and start_kd) could be confused but are differentiated by their descriptions (state file vs explicit params). All others are clearly distinct.
Naming convention is mixed: some verb_noun (list_sessions, read_output, start_kd, stop_kd), others follow different patterns (break_in, continue_go, health_check, kd_command). This inconsistency may confuse an agent expecting a uniform pattern.
9 tools is a reasonable count for a KD session manager. It covers starting, stopping, sending commands, reading output, and session listing without being excessive or too sparse.
The tool set covers the core lifecycle of KD sessions: start, stop, interact (break, continue, command), and monitor (list, read, health). Missing advanced debugging features, but those are beyond the server's stated scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.
Remote shell and detached long-running jobs on your own machines — no SSH, open ports or VPN.
Run and manage H Company's Computer-Use Agents from any MCP client.
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA direct kernel debugger MCP server for Windows security research that connects to VM kernels via kdnet using DbgEng COM interfaces. It exposes over 60 tools for memory inspection, breakpoint management, and coordinated execution control between the host and target VM.3Do What The F*ck You Want To Public
- AlicenseAqualityDmaintenanceMCP server for controlling a Windows guest VM over WinRM, enabling PowerShell/CMD execution, file transfer, reboot, and KDNET debug configuration, typically paired with kd-mcp.12MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that exposes WinDbg/DbgEng to AI agents over stdio for user-mode, kernel-mode, crash-dump, and Time Travel Debugging workflows.9MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that drives cdb.exe/kd.exe to provide WinDbg debugging to LLM agents, enabling crash dump analysis, live process debugging, kernel debugging, and a searchable command reference.215MIT
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/uzhaoy/26_KD-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server