jlink-mcp
Give AI hands to touch silicon — an MCP server for SEGGER J-Link, OpenOCD and Black Magic probes. Flash, halt, step, stream RTT logs and decode ARM Cortex-M faults. Verified against real hardware.
Install / Use
claude mcp add Klievan -- npx -y github:Klievan/jlink-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Tags
Our assessment of jlink-mcp
jlink-mcp scores 87/100 on our quality scale, 493rd of 941 AI & Machine Learning skills we index.
Its MCP Server is 24 KB long, well organised into 50 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
It has 43 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 12 days ago, so jlink-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
jlink-mcp compared with similar skills
All 4 of these similar skills score higher than jlink-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| jlink-mcp (this skill)by Klievan | 87 | 43 | 12d ago | MCP Server |
| claude-memby thedotmack | 100 | 114.2k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 109.8k | 1d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 91.2k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.1k | today | CLAUDE.md |
Frequently asked questions
- How do I install jlink-mcp?
- Run
claude mcp add Klievan -- npx -y github:Klievan/jlink-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does jlink-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is jlink-mcp safe to use?
- It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is jlink-mcp still maintained?
- The repository was last updated 12 days ago, so jlink-mcp is actively maintained.
Skill content
View source on GitHubSee it work
<p align="center"> <img src="demo/jlink-mcp-demo.gif" alt="A terminal session: the MCP server finds the probe, flashes firmware, opens a debug session, streams RTT logs, injects a fault, and decodes the resulting HardFault — naming the faulting instruction." width="100%"> </p> <p align="center"> <em>Real MCP tool calls against a real nRF52840-DK. Reproduce it yourself: <code>npm run demo</code></em> </p>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, orgdb) toenvironment.systemPackagesor yourdevShell.segger-jlinkrequiresnixpkgs.config.allowUnfree = true;andservices.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)
| Tool | Description |
|------|-------------|
| start_debug_session | One-call setup. Starts GDB server + connects RTT + returns boot log. |
| snapshot | Captures full device state: registers, fault status, stack dump, RTT output. |
| diagnose_crash | Auto-reads and decodes ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR) with exception stack frame. |
Device Setup
| Tool | Description |
|------|-------------|
| list_devices | Scan for connected probes and show the configured target |
| set_device | Change the target device at runtime — no restart needed |
| set_serial_number | Change the probe serial number at runtime (for multi-probe setups) |
| get_config | Current probe, target device, and GDB server state |
Device Control
| Tool | Description |
|------|-------------|
| device_info | Probe type, target CPU, compact register summary |
| halt | Halt CPU |
| resume | Resume CPU |
| reset | Reset device. halt stops it at the reset vector; strategy picks a J-Link reset type, or omit it and let J-Link choose |
| step | Single-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.
| Tool | Description |
|------|-------------|
| list_peripherals | Every peripheral and base address on the chip |
| read_peripheral | Read a peripheral's registers and decode each one's bit fields by name |
| decode_register | Decode one register — read from the device, or interpret a value you already have |
Memory & Registers
| Tool | Description |
|------|-------------|
| read_memory | Read memory at address (clean hex dump output) |
| write_memory | Write 32-bit value to address |
| read_registers | All CPU registers in compact format |
| read_register | Read specific register (PC, SP, R0-R12, etc.) |
Flash
| Tool | Description |
|------|-------------|
| flash | Flash .hex/.bin/.elf firmware to device |
| erase | Erase entire flash |
Breakpoints
| Tool | Description |
|------|-------------|
| set_breakpoint | Set hardware breakpoint at address |
| clear_breakpoints | Clear all breakpoints |
GDB Server
| Tool | Description |
|------|-------------|
| gdb_server_start | Start probe's GDB server |
| gdb_server_stop | Stop GDB server + disconnect RTT |
| gdb_server_status | GDB 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.
| Tool | Description |
|------|-------------|
| gdb_connect | Attach a GDB client (auto-starts the server; optional ELF for symbols) |
| gdb_load | Load an ELF for debug symbols, optionally flashing it too |
| gdb_backtrace | Call stack, optionally with locals in each frame |
| gdb_command | Run any GDB command — print sensor_state, info threads, break main |
| gdb_wait | Wait for the target to stop (after a continue or a breakpoint) |
| gdb_disconnect | Detach the client, clearing breakpoints and debug hardware |
RTT (Real-Time Transfer)
| Tool | Description |
|------|-------------|
| rtt_connect | Connect to RTT telnet port |
| rtt_disconnect | Disconnect from RTT |
| rtt_read | Read recent log lines (ANSI stripped, Zephyr format parsed) |
| rtt_search | Filter logs by level (err/wrn/inf/dbg), module, or regex |
| rtt_send | Send data to device via RTT down-channel |
| rtt_clear | Clear RTT buffer |
Telnet Proxy (Trice / Pigweed)
| Tool | Description |
|------|-------------|
| telnet_proxy_start | Start TCP proxy that tees RTT for external detokenizers |
| telnet_proxy_stop | Stop proxy |
| telnet_proxy_status | Proxy connection status |
| `te
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
114.2kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
109.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
91.2kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
79.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
