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

J-Link MCP

by Klievanversion 0.8.0i★ –iRuns on your computer
Registry nameio.github.Klievan/jlink-mcp

Install

Overview

Description from the maker (original English)

Debug embedded firmware on real hardware: J-Link probes, Cortex-M faults, RTT logs, GDB.

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: Other
  • You need to fill in: JLINK_DEVICE

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: JLINK_DEVICE, JLINK_SERIAL, SVD_PATH, JLINK_RTT_ADDR

You need

  • npmNode.js installed (for the npx 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": {
    "jlink": {
      "command": "npx",
      "args": [
        "-y",
        "jlink-mcp"
      ],
      "env": {
        "JLINK_DEVICE": "your-value",
        "JLINK_SERIAL": "your-value",
        "SVD_PATH": "your-value",
        "JLINK_RTT_ADDR": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add jlink --env JLINK_DEVICE=your-value --env JLINK_SERIAL=your-value --env SVD_PATH=your-value --env JLINK_RTT_ADDR=your-value -- npx -y jlink-mcp

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": {
    "jlink": {
      "command": "npx",
      "args": [
        "-y",
        "jlink-mcp"
      ],
      "env": {
        "JLINK_DEVICE": "your-value",
        "JLINK_SERIAL": "your-value",
        "SVD_PATH": "your-value",
        "JLINK_RTT_ADDR": "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": {
    "jlink": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "jlink-mcp"
      ],
      "env": {
        "JLINK_DEVICE": "your-value",
        "JLINK_SERIAL": "your-value",
        "SVD_PATH": "your-value",
        "JLINK_RTT_ADDR": "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

  • JLINK_DEVICE required env
    Target device name, exactly as J-Link spells it (e.g. nRF52840_XXAA, STM32F407VG). Use the search_devices tool to find it.
  • JLINK_SERIAL env
    Serial number of a specific probe, when more than one is attached.
  • SVD_PATH env
    CMSIS-SVD file for the target. Without it, peripheral reads are undecoded hex.
  • JLINK_RTT_ADDR env
    Address of the firmware's _SEGGER_RTT symbol. Lets RTT survive a reset or flash.

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 Klievan, 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 Otheri

  • More stars than 0% of the other 32673 servers in this category
  • Published to the registry more recently than 75% of the other 32673 servers in this category
  • Basic checks equal to or better than 100% of the other 32673 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 J-Link MCP 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?

You need to fill in: JLINK_DEVICE

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.8.0) reached the registry 12 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Systemdox

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

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

Systemdox

by puglieseweb

Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.

Runs on your computerUpdated today
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.

jlink-mcp

Give AI hands to touch silicon.

An MCP server that lets LLMs debug embedded devices through SEGGER J-Link probes.


See it work

Real MCP tool calls against a real nRF52840-DK. Reproduce it yourself: npm run demo

Your firmware just crashed. One tool call:

> diagnose_crash

Crash Diagnosis

CPU State

Core: PC=0x000000B8 SP=0x2003FFA8 R0=0x0000000A R1=0x000007FF R2=0x00000001 ... Status: XPSR=0x21000003 CONTROL=0x00000000 PRIMASK=0x00000000 ... Stack: MSP=0x2003FFA8 PSP=0x00000000

⚠ CPU is in exception handler (IPSR=0x00000003)

Fault Registers

CFSR=0x01000000 HFSR=0x40000000 DFSR=0x00000000 MMFAR=0xe000edf8 BFAR=0xe000edf8

Decoded Faults

UsageFault (UFSR):

  • UNALIGNED: Unaligned memory access

HardFault (HFSR):

  • FORCED: Forced HardFault (escalated from configurable fault)
Exception Stack Frame

R0 = 0x0000000A R1 = 0x000007FF R12 = 0x00000000 LR = 0x000001F5 PC = 0x00000254 xPSR = 0x21000000

→ Faulting instruction at PC=0x00000254

Recent Errors/Warnings from RTT

[WRN] sensor_drv: sample out of range, clamping seq=2

Fault decoded, exception frame unwound, faulting instruction named, and the device's own log correlated — from one call, without a human reading a datasheet to find out what bit 24 of CFSR means.

And it knows what the silicon is

Point it at your target's CMSIS-SVD file and peripheral registers stop being hex:

> read_peripheral FICR

FICR @ 0x10000000 INFO.PART @ 0x10000100 = 0x00052840 (read-only) [31:0] PART 0x52840 → N52840 INFO.RAM @ 0x1000010C = 0x00000100 (read-only) [31:0] RAM 0x100 → K256 INFO.FLASH @ 0x10000110 = 0x00000400 (read-only) [31:0] FLASH 0x400 → K1024

0x400 means 1024 KB of flash — but only if you know that, and an LLM guessing at bit layouts is exactly the failure this avoids. The addresses come from the vendor's own description, and the meanings from its enumerations.

*Both transcripts are verbatim output from an nRF52840-DK in this project's hardware test suite.*

What is this?

jlink-mcp connects AI assistants (Claude, Copilot, etc.) to your embedded hardware via SEGGER J-Link debug probes using the Model Context Protocol.

Instead of manually typing J-Link commands, your AI assistant can:

  • Read registers and memory to understand device state
  • Flash firmware and reset devices
  • Stream RTT logs and search them by level/module/regex
  • Diagnose crashes by auto-decoding ARM Cortex-M fault registers
  • Control execution — halt, step, resume, breakpoints
  • Start GDB servers for full debugging sessions

Also supports OpenOCD (ST-Link, CMSIS-DAP, FTDI) and Black Magic Probe backends.

Installing

You need the SEGGER J-Link software — that is what this server drives — a probe connected to an ARM Cortex-M target, and Node 18+. For the other backends, OpenOCD or arm-none-eabi-gdb instead.

Claude Code — from the plugin marketplace. This brings the embedded-debugging skill along with the server, which is what stops an assistant guessing at your hardware:

/plugin marketplace add Klievan/jlink-mcp

/plugin install jlink-mcp

Any other agent — point it at this repository and ask it to set itself up:

Install the MCP server at https://github.com/Klievan/jlink-mcp and configure

it for my board.

It will find what it needs here. If you would rather do it by hand, the server is on npm and needs no build step: npx -y jlink-mcp, with JLINK_DEVICE set to your target. mcp-config.json is a config you can paste.

VS Code — install the extension. It registers the server for Copilot Chat, Claude, and any MCP-aware client, so there is nothing to configure.

Nix / NixOS — run directly from the flake without installing:

# Run standalone MCP server

nix run github:Klievan/jlink-mcp

Or in an MCP client configuration (e.g. Claude Desktop / Claude Code)

"command": "nix", "args": ["run", "github:Klievan/jlink-mcp", "--"]

Or add jlink-mcp and jlink-mcp-skills to your system configuration or flake:

# flake.nix inputs

inputs.jlink-mcp.url = "github:Klievan/jlink-mcp";

In your packages:

inputs.jlink-mcp.packages.''${system}.jlink-mcp inputs.jlink-mcp.packages.''${system}.jlink-mcp-skills

Note for NixOS users: Add your preferred probe tools (segger-jlink / segger-jlink-headless, openocd, or gdb) to environment.systemPackages or your devShell. segger-jlink requires nixpkgs.config.allowUnfree = true; and services.udev.packages = [ pkgs.segger-jlink ]; for probe USB permissions.

Then check it

Ask for check_setup. One call, and it says what is missing and what to do:

Not ready to debug yet.

OK probe software — J-Link software found at /Applications/SEGGER/JLink BLOCK probe — none detected (Connecting to J-Link via USB...FAILED). Check the USB cable. BLOCK target device — not set. Find the exact name with search_devices, then set_device. note SVD — not loaded, so peripheral reads stay raw hex. Set SVD_PATH to a CMSIS-SVD file.

You do not need your device's exact part number up front. search_devices searches all 9800 that J-Link supports, by part number, manufacturer, or core.

Tools (48)

Workflow Tools (start here)
ToolDescription
start_debug_sessionOne-call setup. Starts GDB server + connects RTT + returns boot log.
snapshotCaptures full device state: registers, fault status, stack dump, RTT output.
diagnose_crashAuto-reads and decodes ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR) with exception stack frame.
Device Setup
ToolDescription
list_devicesScan for connected probes and show the configured target
set_deviceChange the target device at runtime — no restart needed
set_serial_numberChange the probe serial number at runtime (for multi-probe setups)
get_configCurrent probe, target device, and GDB server state
Device Control
ToolDescription
device_infoProbe type, target CPU, compact register summary
haltHalt CPU
resumeResume CPU
resetReset device. halt stops it at the reset vector; strategy picks a J-Link reset type, or omit it and let J-Link choose
stepSingle-step one instruction
Peripherals (CMSIS-SVD)

Set jlinkMcp.svdPath to your target's SVD — the same file Cortex-Debug takes as svdFile. Vendors publish one per part.

ToolDescription
list_peripheralsEvery peripheral and base address on the chip
read_peripheralRead a peripheral's registers and decode each one's bit fields by name
decode_registerDecode one register — read from the device, or interpret a value you already have
Memory & Registers
ToolDescription
read_memoryRead memory at address (clean hex dump output)
write_memoryWrite 32-bit value to address
read_registersAll CPU registers in compact format
read_registerRead specific register (PC, SP, R0-R12, etc.)
Flash
ToolDescription
flashFlash .hex/.bin/.elf firmware to device
eraseErase entire flash
Breakpoints
ToolDescription
set_breakpointSet hardware breakpoint at address
clear_breakpointsClear all breakpoints
GDB Server
ToolDescription
gdb_server_startStart probe's GDB server
gdb_server_stopStop GDB server + disconnect RTT
gdb_server_statusGDB server, RTT, and proxy status
Source-Level Debugging

Attach a real GDB client for symbol-aware work — backtraces, variable inspection, and stepping by source line rather than by instruction.

ToolDescription
gdb_connectAttach a GDB client (auto-starts the server; optional ELF for symbols)
gdb_loadLoad an ELF for debug symbols, optionally flashing it too
gdb_backtraceCall stack, optionally with locals in each frame
gdb_commandRun any GDB command — print sensor_state, info threads, break main
gdb_waitWait for the target to stop (after a continue or a breakpoint)
gdb_disconnectDetach the client, clearing breakpoints and debug hardware
RTT (Real-Time Transfer)
ToolDescription
rtt_connectConnect to RTT telnet port
rtt_disconnectDisconnect from RTT
rtt_readRead recent log lines (ANSI stripped, Zephyr format parsed)
rtt_searchFilter logs by level (err/wrn/inf/dbg), module, or regex
rtt_sendSend data to device via RTT down-channel
rtt_clearClear RTT buffer
Telnet Proxy (Trice / Pigweed)
ToolDescription
telnet_proxy_startStart TCP proxy that tees RTT for external detokenizers
telnet_proxy_stopStop proxy
telnet_proxy_statusProxy connection status

| `te

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

Ask PopNx