Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Dbgprobe MCP Server

by es617version 0.1.4i★ –iRuns on your computer
Registry nameio.github.es617/dbgprobe-mcp-server

Install

Overview

Description from the maker (original English)

Let AI agents interact with debug probes — connect, flash, read/write memory, and reset.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Search & AI memory

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: DBGPROBE_BACKEND, DBGPROBE_MCP_LOG_LEVEL, DBGPROBE_JLINK_PATH, DBGPROBE_JLINK_GDBSERVER_PATH, DBGPROBE_JLINK_DEVICE, DBGPROBE_INTERFACE, DBGPROBE_SPEED_KHZ, DBGPROBE_MCP_PLUGINS, DBGPROBE_MCP_TOOL_SEPARATOR

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "dbgprobe": {
      "command": "uvx",
      "args": [
        "dbgprobe-mcp-server"
      ],
      "env": {
        "DBGPROBE_BACKEND": "your-value",
        "DBGPROBE_MCP_LOG_LEVEL": "your-value",
        "DBGPROBE_JLINK_PATH": "your-value",
        "DBGPROBE_JLINK_GDBSERVER_PATH": "your-value",
        "DBGPROBE_JLINK_DEVICE": "your-value",
        "DBGPROBE_INTERFACE": "your-value",
        "DBGPROBE_SPEED_KHZ": "your-value",
        "DBGPROBE_MCP_PLUGINS": "your-value",
        "DBGPROBE_MCP_TOOL_SEPARATOR": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add dbgprobe --env DBGPROBE_BACKEND=your-value --env DBGPROBE_MCP_LOG_LEVEL=your-value --env DBGPROBE_JLINK_PATH=your-value --env DBGPROBE_JLINK_GDBSERVER_PATH=your-value --env DBGPROBE_JLINK_DEVICE=your-value --env DBGPROBE_INTERFACE=your-value --env DBGPROBE_SPEED_KHZ=your-value --env DBGPROBE_MCP_PLUGINS=your-value --env DBGPROBE_MCP_TOOL_SEPARATOR=your-value -- uvx dbgprobe-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "dbgprobe": {
      "command": "uvx",
      "args": [
        "dbgprobe-mcp-server"
      ],
      "env": {
        "DBGPROBE_BACKEND": "your-value",
        "DBGPROBE_MCP_LOG_LEVEL": "your-value",
        "DBGPROBE_JLINK_PATH": "your-value",
        "DBGPROBE_JLINK_GDBSERVER_PATH": "your-value",
        "DBGPROBE_JLINK_DEVICE": "your-value",
        "DBGPROBE_INTERFACE": "your-value",
        "DBGPROBE_SPEED_KHZ": "your-value",
        "DBGPROBE_MCP_PLUGINS": "your-value",
        "DBGPROBE_MCP_TOOL_SEPARATOR": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "dbgprobe": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "dbgprobe-mcp-server"
      ],
      "env": {
        "DBGPROBE_BACKEND": "your-value",
        "DBGPROBE_MCP_LOG_LEVEL": "your-value",
        "DBGPROBE_JLINK_PATH": "your-value",
        "DBGPROBE_JLINK_GDBSERVER_PATH": "your-value",
        "DBGPROBE_JLINK_DEVICE": "your-value",
        "DBGPROBE_INTERFACE": "your-value",
        "DBGPROBE_SPEED_KHZ": "your-value",
        "DBGPROBE_MCP_PLUGINS": "your-value",
        "DBGPROBE_MCP_TOOL_SEPARATOR": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • DBGPROBE_BACKEND env
    Debug probe backend to use (default: jlink). Future: openocd, pyocd.
  • DBGPROBE_MCP_LOG_LEVEL env
    Log level: DEBUG, INFO, WARNING (default), ERROR.
  • DBGPROBE_JLINK_PATH env
    Explicit path to JLinkExe (or JLink.exe on Windows). Auto-detected if not set.
  • DBGPROBE_JLINK_GDBSERVER_PATH env
    Explicit path to JLinkGDBServerCLExe. Auto-detected if not set.
  • DBGPROBE_JLINK_DEVICE env
    Default target device string (e.g. nRF52840_xxAA). Can be overridden per-session.
  • DBGPROBE_INTERFACE env
    Debug interface: SWD (default) or JTAG.
  • DBGPROBE_SPEED_KHZ env
    Interface speed in kHz (default: 4000).
  • DBGPROBE_MCP_PLUGINS env
    Plugin policy: 'all' or comma-separated plugin names. Unset = disabled.
  • DBGPROBE_MCP_TOOL_SEPARATOR env
    Tool name separator character (default '.'). Set to '_' for clients that reject dots (e.g. Cursor).

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account es617, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 7266 servers in this category
  • Published to the registry more recently than 5% of the other 7266 servers in this category
  • Basic checks equal to or better than 100% of the other 7266 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Dbgprobe MCP Server safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.4) reached the registry 8 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

by upstash

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

Computer or cloud★ 64,224MITUpdated yesterday
Install

Codebase Memory

by DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Runs on your computer★ 48,148MITUpdated 21 days ago
Install

Exa

by exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Runs in the cloud★ 5,213MITUpdated last month
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Debug Probe MCP Server

A stateful debug probe Model Context Protocol (MCP) server for developer tooling and AI agents. Works out of the box with Claude Code, VS Code with Copilot, and any MCP-compatible runtime. Communicates over stdio and drives on-chip debug probes (J-Link first, OpenOCD and pyOCD planned) to flash, debug, and inspect embedded targets.

Example: Let Claude Code list attached J-Link probes, connect to your nRF52840, flash a new firmware, read memory, and reset the target — all conversationally.

Demo

Video walkthrough — connecting to a J-Link probe, flashing firmware, loading ELF and SVD for symbol-aware debugging, RTT logging, and breakpoints.


Why this exists

If you've ever typed J-Link Commander commands by hand, copy-pasted memory addresses between a datasheet and a terminal, re-flashed the same firmware 20 times during a debug session, and juggled multiple tool windows — this is for you.

You have a microcontroller on a debug probe. You want an AI agent to interact with it — connect, flash firmware, read/write memory, reset, halt, resume. This server makes that possible.

It gives any MCP-compatible agent a full set of debug probe tools. The agent calls these tools, gets structured JSON back, and reasons about what to do next — without you manually driving JLinkExe for every operation.

What agents can do with it:

  • Flash and iterate — build firmware, flash it, reset, check behavior — all in one conversation
  • Inspect memory — read peripheral registers, check RAM contents, verify flash writes
  • Debug interactively — halt, step, set breakpoints, inspect state, resume
  • Automate test flows — flash → reset → read output → validate
  • Multi-probe setups — connect to multiple probes simultaneously, each with its own session

Who is this for?

  • Embedded engineers — faster iteration: flash, debug, inspect memory conversationally
  • Hobbyists and makers — interact with microcontrollers without learning JLinkExe command syntax
  • QA and test engineers — automated flash-and-test sequences across multiple boards
  • Researchers — systematic exploration of embedded systems, register inspection

Quickstart (Claude Code)

pip install dbgprobe-mcp-server

Register the MCP server with Claude Code

claude mcp add dbgprobe -- dbgprobe_mcp

Or with explicit J-Link path

claude mcp add dbgprobe \ -e DBGPROBE_JLINK_PATH=/Applications/SEGGER/JLink/JLinkExe \ -- dbgprobe_mcp

Then in Claude Code, try:

"List attached debug probes, connect to the J-Link, and read 16 bytes from address 0x20000000."


Supported backends

BackendStatusProbe hardware
J-LinkWorking (v0)SEGGER J-Link (EDU, EDU Mini, PLUS, PRO, etc.)
OpenOCDPlannedST-Link, CMSIS-DAP, and many others
pyOCDPlannedCMSIS-DAP, ST-Link, J-Link (via pyOCD)

The server is backend-agnostic — tool names (dbgprobe.*) stay the same regardless of which probe you use.

J-Link requirements

Install the SEGGER J-Link Software Pack. The server auto-detects JLinkExe on PATH or in common install locations:

  • macOS: /Applications/SEGGER/JLink/
  • Linux: /opt/SEGGER/JLink/, /usr/bin/
  • Windows: C:\Program Files\SEGGER\JLink\

Or set DBGPROBE_JLINK_PATH to point to the executable directly.

*This project is not affiliated with or sponsored by SEGGER. J-Link is used because it's widely available and well-supported.*


Tools

CategoryTools
Probedbgprobe.probes.list, dbgprobe.connect, dbgprobe.erase, dbgprobe.disconnect, dbgprobe.reset, dbgprobe.halt, dbgprobe.go, dbgprobe.step, dbgprobe.status, dbgprobe.flash, dbgprobe.mem.read, dbgprobe.mem.write, dbgprobe.breakpoint.set, dbgprobe.breakpoint.clear, dbgprobe.breakpoint.list
Introspectiondbgprobe.connections.list
ELFdbgprobe.elf.attach, dbgprobe.elf.info, dbgprobe.elf.lookup, dbgprobe.elf.symbols
SVDdbgprobe.svd.attach, dbgprobe.svd.info, dbgprobe.svd.read, dbgprobe.svd.write, dbgprobe.svd.set_field, dbgprobe.svd.update_fields, dbgprobe.svd.list_peripherals, dbgprobe.svd.list_registers, dbgprobe.svd.list_fields, dbgprobe.svd.describe
RTTdbgprobe.rtt.start, dbgprobe.rtt.stop, dbgprobe.rtt.read, dbgprobe.rtt.write, dbgprobe.rtt.status
Pluginsdbgprobe.plugin.list, dbgprobe.plugin.template, dbgprobe.plugin.load, dbgprobe.plugin.reload
Tracingdbgprobe.trace.status, dbgprobe.trace.tail

See docs/tools.md for full schemas and examples.


Install (development)

# Editable install from repo root

pip install -e ".[test]"

Or with uv

uv pip install -e ".[test]"

MCP is a protocol — this server works with any MCP-compatible client. Below are setup instructions for the most common ones.

Add to Claude Code

# Standard setup

claude mcp add dbgprobe -- dbgprobe_mcp

With default target device

claude mcp add dbgprobe \ -e DBGPROBE_JLINK_DEVICE=nRF52840_xxAA \ -- dbgprobe_mcp

Debug logging

claude mcp add dbgprobe -e DBGPROBE_MCP_LOG_LEVEL=DEBUG -- dbgprobe_mcp

Add to VS Code / Copilot

Add to your project's .vscode/mcp.json (or create it):

{

"servers": { "dbgprobe": { "type": "stdio", "command": "dbgprobe_mcp", "args": [], "env": { "DBGPROBE_JLINK_DEVICE": "nRF52840_xxAA" } } } }

Adjust env to match your target — set DBGPROBE_JLINK_DEVICE to your chip, or remove it to specify the device at connect time.

Add to Cursor

Add to your project's .cursor/mcp.json (or create it). Cursor does not support dots in tool names, so DBGPROBE_MCP_TOOL_SEPARATOR must be set to _:

{

"mcpServers": { "dbgprobe": { "command": "dbgprobe_mcp", "args": [], "env": { "DBGPROBE_JLINK_DEVICE": "nRF52840_xxAA", "DBGPROBE_MCP_TOOL_SEPARATOR": "_" } } } }

Environment variables

Server
VariableDefaultDescription
DBGPROBE_BACKENDjlinkDebug probe backend. Future: openocd, pyocd.
DBGPROBE_MCP_LOG_LEVELWARNINGPython log level (DEBUG, INFO, WARNING, ERROR). Logs go to stderr.
DBGPROBE_MCP_TRACEenabledJSONL tracing of every tool call. Set to 0, false, or no to disable.
DBGPROBE_MCP_TRACE_PAYLOADSdisabledInclude memory data payloads in traced args (stripped by default).
DBGPROBE_MCP_TRACE_MAX_BYTES16384Max payload chars before truncation (only when TRACE_PAYLOADS is on).
DBGPROBE_MCP_TOOL_SEPARATOR.Character used to separate tool name segments. Set to _ for MCP clients that reject dots in tool names (e.g. Cursor).
DBGPROBE_MCP_PLUGINSdisabledPlugin policy: all or comma-separated plugin names (e.g. nrf52,stm32).
J-Link backend
VariableDefaultDescription
DBGPROBE_JLINK_PATHauto-detectExplicit path to JLinkExe (or JLink.exe on Windows).
DBGPROBE_JLINK_GDBSERVER_PATHauto-detectExplicit path to JLinkGDBServerCLExe.
DBGPROBE_JLINK_DEVICE*(none)*Default target device string (e.g. nRF52840_xxAA). Can be overridden per-session.
DBGPROBE_INTERFACESWDDebug interface: SWD or JTAG.
DBGPROBE_SPEED_KHZ4000Interface clock speed in kHz.
DBGPROBE_GDB_TRACEdisabledLog all GDB RSP packets to file. Set to 1, true, or yes to enable.
DBGPROBE_GDB_TRACE_FILE/tmp/gdb_trace.logPath for GDB RSP trace log (only when GDB_TRACE is on).

ELF Support

Attach an ELF file to a session to enable symbol-aware debugging:

  • Symbol lookup — resolve function names to addresses and vice versa
  • Breakpoints by name — breakpoint.set(symbol="main") instead of raw addresses
  • Auto-enriched responses — status, step, and halt include symbol + symbol_offset when an ELF is attached
  • Flash integration — flashing an .elf auto-attaches it; flashing .hex/.bin auto-reloads a previously attached ELF; sibling .elf files are suggested via hints
> "Attach the ELF, set a breakpoint on main, run, and show me where it halted."

The agent calls elf.attach, breakpoint.set(symbol="main"), go, then status — and gets back "halted at main+0" instead of a raw hex address.


SVD Support

Attach an SVD (System View Description) file to a session to enable register-level peripheral access:

  • Named register reads — svd.read("GPIO.OUT") returns the raw value and all decoded fields with enum names
  • Field-level reads — svd.read("GPIO.PIN_CNF[3].PULL") returns the field value and enum name ("PullUp")
  • Safe field writes — svd.set_field("GPIO.PIN_CNF[3].PULL", "PullUp") does read-modify-write
  • Batch field updates — svd.update_fields("GPIO.PIN_CNF[3]", {"DIR": "Output", "PULL": "PullUp"}) — one read, one write
  • Raw register writes — svd.write("GPIO.OUT", 0x01) — full register, no RMW
  • Discovery — list peripherals, registers, fields; describe with enums
  • Auto-decode on mem.read — when an SVD is attached and mem.read hits a known register address, the response includes decoded fields
> "Attach the SVD, read GPIO.PIN_CNF[3], and set PULL to PullUp."

The agent calls svd.attach, svd.read("GPIO.PIN_CNF[3]"), then svd.set_field("GPIO.PIN_CNF[3].PULL", "PullUp") — and gets back decoded field values instead of raw hex.


RTT (Real-Time Transfer)

Start, stop, read, and write to SEGGER RTT channels. The agent can stream target log output and send data to the device — useful for debugging firmware that prints over RTT instead of UART.

> "Start RTT and show me the output."

For repetitive flows — read device ID, run a self-test sequence, validate calibration — you can package them as plugins: Python modules that expose custom tools the agent can call directly.

Only the beginning is shown; read the rest in the repo

Ask PopNx