Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.kpanuragh/xdebug

NPM · XDEBUG-MCP · SCANNED AUG 3

MCP server for PHP Xdebug debugging with breakpoints, stepping, and variable inspection

Available components

+16 this week 62 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security78
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known medium-severity CVE affects fast-xml-parser 4.5.7, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability75
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 2119 tokens (~46/item across 46 items; 46 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · xdebug-mcp

# add to Claude Code
claude mcp add kpanuragh-xdebug -- npx -y xdebug-mcp
# add to Codex CLI
codex mcp add kpanuragh-xdebug -- npx -y xdebug-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kpanuragh-xdebug": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "xdebug-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add kpanuragh-xdebug --command npx --arg -y --arg xdebug-mcp
# ~/.hermes/config.yaml
mcp_servers:
  kpanuragh-xdebug:
    command: "npx"
    args: ["-y", "xdebug-mcp"]
// mcp.json
{
  "mcpServers": {
    "kpanuragh-xdebug": {
      "command": "npx",
      "args": [
        "-y",
        "xdebug-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +41
    • CVE-2026-41650 affects this package: medium security
    • Provenance: unverified → fail security
    • Known CVEs: unverified → fail security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Schema quality: unverified → good functional
    • Maintenance: unverified → pass functional
    • Dependency health: unverified → partial functional
    • License: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Licence: MIT functional
  • 1 Aug 26 −7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 30 Jul 26 +22
    • Tool coverage: unverified → 100 functional
  • 28 Jul 26 −22
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 46

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-gh4j-gqv2-49f6 CVE-2026-41650 medium CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N yes
Dependencies 97 packages

97 packages in the resolved dependency tree · 97 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 46 exposed · ~2,119 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_logpoint ~82

Add a logpoint that logs messages without stopping execution. Use {varName} placeholders for variables.

NameTypeReqDescription
conditionstringOptional condition
filestringyesFile path
lineintegeryesLine number
messagestringyesMessage template with {var} placeholders (e.g., 'User {$userId} logged in')

No output schema declared.

No examples provided.

add_step_filter ~77

Add a step filter to skip certain files/directories during stepping (e.g., vendor code)

NameTypeReqDescription
descriptionstringDescription of the filter
patternstringyesPattern to match (e.g., '/vendor/', '*.min.js', '/regex/')
typestringyesinclude = step into, exclude = skip

No output schema declared.

No examples provided.

add_watch ~50

Add a watch expression that will be evaluated on each break. Watch expressions persist across steps.

NameTypeReqDescription
expressionstringyesPHP expression to watch (e.g., '$user->id', 'count($items)')

No output schema declared.

No examples provided.

capture_request_context ~39

Capture the current HTTP request context ($_GET, $_POST, $_SESSION, $_COOKIE, headers)

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

capture_snapshot ~31

Capture a snapshot of the current debug state for the export report

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

close_session ~34

Close and terminate a debug session

NameTypeReqDescription
session_idstringSession ID to close (uses active session if not specified)

No output schema declared.

No examples provided.

continue ~29

Continue script execution until the next breakpoint or end of script

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

detach ~32

Detach from the debug session and let the script continue running without debugging

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

evaluate ~93

Evaluate a PHP expression in the current context. Returns the result of the expression. Use for calculations, method calls, or inspecting computed values.

NameTypeReqDescription
expressionstringyesPHP expression to evaluate (e.g., '$x + $y', 'count($array)', '$user->getName()', 'array_keys($data)')
session_idstringSession ID
stack_depthintegerStack frame depth

No output schema declared.

No examples provided.

evaluate_watches ~29

Evaluate all watch expressions and return their current values

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

export_session ~36

Export the current debug session as a report

NameTypeReqDescription
formatstringExport format
session_idstringSession ID

No output schema declared.

No examples provided.

get_contexts ~54

Get available variable contexts (Local, Superglobals, User-defined constants) at the current position

NameTypeReqDescription
session_idstringSession ID
stack_depthintegerStack frame depth (0 = current frame)

No output schema declared.

No examples provided.

get_coverage_report ~17

Get the current code coverage report

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_function_history ~39

Get the history of function calls made during debugging

NameTypeReqDescription
limitintegerMaximum entries
searchstringSearch query to filter

No output schema declared.

No examples provided.

get_logpoint_history ~48

Get the log output history from logpoints

NameTypeReqDescription
limitintegerMaximum entries to return
logpoint_idstringSpecific logpoint ID (all if not specified)

No output schema declared.

No examples provided.

get_memory_timeline ~17

Get memory usage timeline from profiling

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_profile_stats ~14

Get current profiling statistics

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_session_state ~40

Get detailed state of a specific debug session including current position and status

NameTypeReqDescription
session_idstringSession ID (uses active session if not specified)

No output schema declared.

No examples provided.

get_source ~66

Get the source code of a file or a specific line range

NameTypeReqDescription
begin_lineintegerStarting line number
end_lineintegerEnding line number
filestringyesFile path to get source from
session_idstringSession ID

No output schema declared.

No examples provided.

get_stack_trace ~34

Get the current call stack showing all function calls leading to the current position

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

get_variable ~121

Get a specific variable by name, including nested properties. Use PHP syntax for nested access (e.g., '$user->name', '$array[0]', '$obj->items[2]->value')

NameTypeReqDescription
context_idintegerContext ID
max_depthintegerMaximum depth for nested properties
namestringyesVariable name with $ prefix (e.g., '$user', '$data["key"]', '$obj->property')
session_idstringSession ID
stack_depthintegerStack frame depth

No output schema declared.

No examples provided.

get_variables ~96

List all variables in scope with metadata (names, types, child counts). Use get_variable() to inspect specific variable values. Returns lightweight metadata for browsing the variable tree.

NameTypeReqDescription
context_idintegerContext ID: 0=Local variables, 1=Superglobals, 2=User constants
session_idstringSession ID
stack_depthintegerStack frame depth (0 = current frame)

No output schema declared.

No examples provided.

list_breakpoints ~49

List all breakpoints including both active session breakpoints and pending breakpoints

NameTypeReqDescription
include_pendingbooleanInclude pending breakpoints in the list
session_idstringSession ID

No output schema declared.

No examples provided.

list_debug_profiles ~15

List all saved debug profiles

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_sessions ~19

List all active PHP debug sessions with their current state

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_step_filters ~15

List all step filter rules

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_watches ~15

List all active watch expressions

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

load_debug_profile ~26

Load a saved debug profile

NameTypeReqDescription
namestringyesProfile name to load

No output schema declared.

No examples provided.

remove_breakpoint ~59

Remove a breakpoint by its ID. Works for both active session breakpoints and pending breakpoints.

NameTypeReqDescription
breakpoint_idstringyesThe breakpoint ID to remove (session breakpoint ID or pending_* ID)
session_idstringSession ID

No output schema declared.

No examples provided.

remove_logpoint ~26

Remove a logpoint

NameTypeReqDescription
logpoint_idstringyesLogpoint ID

No output schema declared.

No examples provided.

remove_watch ~25

Remove a watch expression

NameTypeReqDescription
watch_idstringyesWatch ID to remove

No output schema declared.

No examples provided.

save_debug_profile ~45

Save the current debug configuration (breakpoints, watches, filters) as a named profile

NameTypeReqDescription
descriptionstringProfile description
namestringyesProfile name

No output schema declared.

No examples provided.

set_active_session ~37

Set which debug session should be the active/default session for subsequent commands

NameTypeReqDescription
session_idstringyesSession ID to set as active

No output schema declared.

No examples provided.

set_breakpoint ~177

Set a breakpoint in PHP code. Supports line breakpoints and conditional breakpoints with hit counts. Can be set before a debug session starts - breakpoints will be applied when a session connects.

NameTypeReqDescription
conditionstringOptional PHP condition expression (e.g., '$x > 10' or '$user !== null')
filestringyesFull file path (use container path for Docker, e.g., /var/www/html/index.php)
hit_conditionstringHit condition: >= (break when hits >= value), == (break on exact hit), % (break every N hits)
hit_valueintegerHit count value - break after this many hits
lineintegeryesLine number for the breakpoint
session_idstringSession ID (uses active session if not specified)

No output schema declared.

No examples provided.

set_call_breakpoint ~69

Set a breakpoint that triggers when a specific function is called. Can be set before a debug session starts.

NameTypeReqDescription
function_namestringyesFunction name to break on (e.g., 'myFunction' or 'MyClass::myMethod')
session_idstringSession ID

No output schema declared.

No examples provided.

set_exception_breakpoint ~67

Set a breakpoint that triggers when a specific exception is thrown. Can be set before a debug session starts.

NameTypeReqDescription
exceptionstringException class name to break on (use '*' for all exceptions, or specific like 'RuntimeException')
session_idstringSession ID

No output schema declared.

No examples provided.

set_variable ~96

Set the value of a variable in the current scope

NameTypeReqDescription
context_idintegerContext ID
namestringyesVariable name (e.g., $x, $user->name)
session_idstringSession ID
stack_depthintegerStack frame depth
valuestringyesNew value as a PHP literal (e.g., 42, "hello", true, null)

No output schema declared.

No examples provided.

start_coverage ~16

Start tracking code coverage during debugging

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_profiling ~20

Start profiling to track memory usage and execution time

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

step_into ~43

Step into the next function call, or to the next line if not a function call. This follows execution into called functions.

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

step_out ~33

Step out of the current function. Execution continues until the current function returns.

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

step_over ~38

Step over to the next line in the current scope. Function calls are executed but not stepped into.

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

stop ~27

Stop the debug session and terminate script execution immediately

NameTypeReqDescription
session_idstringSession ID

No output schema declared.

No examples provided.

stop_coverage ~18

Stop tracking code coverage and get the report

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

stop_profiling ~17

Stop profiling and get the results

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

update_breakpoint ~89

Update a breakpoint (enable/disable or change hit conditions). Works for both active session and pending breakpoints.

NameTypeReqDescription
breakpoint_idstringyesThe breakpoint ID to update
hit_conditionstringNew hit condition
hit_valueintegerNew hit count value
session_idstringSession ID
statestringEnable or disable the breakpoint

No output schema declared.

No examples provided.