J-Link MCP
NPM · JLINK-MCP · SCANNED SEP 23
Debug embedded firmware on real hardware: J-Link probes, Cortex-M faults, RTT logs, GDB.
Available components
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 → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 25 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2026 tokens (~44/item across 46 items; 43 tools + 3 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "erase" implies "erase" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 44 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the J-Link MCP server?
J-Link MCP runs locally as an npm package, launched with npx -y jlink-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · jlink-mcp
claude mcp add klievan-jlink-mcp -- npx -y jlink-mcp
{
"mcpServers": {
"klievan-jlink-mcp": {
"command": "npx",
"args": [
"-y",
"jlink-mcp"
]
}
}
} {
"servers": {
"klievan-jlink-mcp": {
"command": "npx",
"args": [
"-y",
"jlink-mcp"
]
}
}
} codex mcp add klievan-jlink-mcp -- npx -y jlink-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"klievan-jlink-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"jlink-mcp"
],
"enabled": true
}
}
} openclaw mcp add klievan-jlink-mcp --command npx --arg -y --arg jlink-mcp
mcp_servers:
klievan-jlink-mcp:
command: "npx"
args: ["-y", "jlink-mcp"] {
"McpServers": {
"klievan-jlink-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"jlink-mcp"
]
}
}
} assistant mcp add klievan-jlink-mcp -t stdio -c npx -a -y jlink-mcp
{
"mcpServers": {
"klievan-jlink-mcp": {
"command": "npx",
"args": [
"-y",
"jlink-mcp"
]
}
}
} 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.
- 23 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
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 23 Sept 2026 · Analysed npm/jlink-mcp@0.6.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
clear_breakpoints ~27
Clear all breakpoints, including any left armed in the debug hardware by an earlier session
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
decode_register ~96
Decode a value into named bit fields using the target's SVD. Reads from the device unless a value is supplied — useful for interpreting a number you already have.
| Name | Type | Req | Description |
|---|---|---|---|
| peripheral | string | yes | Peripheral name, e.g. 'UARTE0' |
| register | string | yes | Register name, e.g. 'ENABLE' or 'INFO.PART' |
| value | string | – | Hex value to decode instead of reading the device |
No output schema declared.
No examples provided.
device_info ~30
Get connected device info via SEGGER J-Link. Returns probe type, target CPU, and compact register summary.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
diagnose_crash ~42
Auto-read and decode ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR), exception stack frame, and recent errors.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
erase ~13
Erase target flash memory
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
flash ~50
Flash firmware to the target device
| Name | Type | Req | Description |
|---|---|---|---|
| baseAddress | string | – | Base address for .bin files (hex) |
| filePath | string | yes | Path to firmware file (.hex, .bin, .elf) |
No output schema declared.
No examples provided.
gdb_backtrace ~48
Get a stack backtrace. With debug symbols loaded, shows function names, file paths, and line numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | – | Include local variables in each frame (default false) |
No output schema declared.
No examples provided.
gdb_command ~136
Send any GDB command and get the response. For execution commands (continue, step, next, finish, until), blocks until the target stops or times out. If the target doesn't stop, use gdb_wait to poll. Examples: 'bt' (backtrace), 'info threads', 'print myVar', 'break main', 'continue', 'next', 'step', 'finish', 'info registers', 'x/10xw 0x20000000'
| Name | Type | Req | Description |
|---|---|---|---|
| command | string | yes | GDB command to execute |
| timeout | number | – | Timeout in ms for run commands (default 15000) |
No output schema declared.
No examples provided.
gdb_connect ~106
Connect a GDB client to the running GDB server. Enables source-level debugging: backtraces, variable inspection, conditional breakpoints, stepping by source line. Optionally load an ELF file for symbol info.
| Name | Type | Req | Description |
|---|---|---|---|
| elfFile | string | – | Path to .elf file with debug symbols (enables source-level debugging) |
| host | string | – | GDB server host (default: localhost) |
| port | number | – | GDB server port (default: 2331) |
No output schema declared.
No examples provided.
gdb_disconnect ~23
Disconnect the GDB client (does not stop the GDB server)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdb_load ~87
Load an ELF file into GDB. By default loads symbols only (for source-level debugging: backtraces with file:line, variable names). Set flash=true to also program it onto the target.
| Name | Type | Req | Description |
|---|---|---|---|
| elfFile | string | yes | Path to .elf file with debug symbols |
| flash | boolean | – | Also flash the ELF to the target (default: false, symbols only) |
No output schema declared.
No examples provided.
gdb_server_start ~19
Start SEGGER J-Link GDB server
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdb_server_status ~23
Get GDB server, RTT, and telnet proxy status
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdb_server_stop ~22
Stop SEGGER J-Link GDB server and disconnect RTT
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdb_wait ~62
Poll for target stop after a continue/step that timed out. Returns the stop reason (breakpoint hit, signal, finished stepping, etc.) when the target halts.
| Name | Type | Req | Description |
|---|---|---|---|
| timeout | number | – | How long to wait in ms (default 30000) |
No output schema declared.
No examples provided.
get_config ~15
Get current probe and server configuration
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
halt ~12
Halt the target CPU
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_devices ~32
Scan for connected debug probes and show what hardware is attached. Use this first if you don't know what device is connected.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_peripherals ~56
List the target's peripherals and base addresses, from its CMSIS-SVD description. Requires an SVD file to be configured.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | Case-insensitive substring, e.g. 'uart' or 'timer' |
No output schema declared.
No examples provided.
probe_command ~26
Execute raw SEGGER J-Link commands
| Name | Type | Req | Description |
|---|---|---|---|
| commands | array | yes | Commands to execute |
No output schema declared.
No examples provided.
read_memory ~53
Read memory from the target. Returns clean hex dump.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Hex address (e.g., '0x20000000') |
| length | number | yes | Bytes to read (max 4096) |
No output schema declared.
No examples provided.
read_peripheral ~78
Read every register of a peripheral from the target and decode each one's bit fields by name. This is read_memory plus the meaning of what was read.
| Name | Type | Req | Description |
|---|---|---|---|
| peripheral | string | yes | Peripheral name, e.g. 'FICR', 'UARTE0' |
| registers | array | – | Only these registers (default: all readable ones) |
No output schema declared.
No examples provided.
read_register ~38
Read a specific CPU register by name
| Name | Type | Req | Description |
|---|---|---|---|
| register | string | yes | Register name (e.g., 'PC', 'SP', 'R0') |
No output schema declared.
No examples provided.
read_registers ~23
Read all CPU registers (compact format, FP only if non-zero).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
reset ~144
Reset the target device. Halting leaves the core stopped at the reset vector, which is where you want it before flashing, or to watch startup run.
| Name | Type | Req | Description |
|---|---|---|---|
| halt | boolean | – | Halt at the reset vector after reset (default: false) |
| strategy | number | – | J-Link reset type. Omit to let J-Link pick the right one for the device, which is what SEGGER recommends and is almost always correct. 0 = normal; 1 = core only, via VECTRESET, leaving peripherals ru… |
No output schema declared.
No examples provided.
resume ~12
Resume the target CPU
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rtt_clear ~13
Clear RTT buffer
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rtt_connect ~13
Connect to RTT
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rtt_disconnect ~13
Disconnect from RTT
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rtt_read ~36
Read recent RTT log lines (clean, parsed Zephyr format)
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | Lines to read (default 50) |
No output schema declared.
No examples provided.
rtt_search ~79
Search/filter RTT logs by level, module, or regex
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | Max results (default 50) |
| level | string | – | Log level: 'err', 'wrn', 'inf', 'dbg' |
| module | string | – | Module name (partial match) |
| pattern | string | – | Regex or text pattern |
No output schema declared.
No examples provided.
rtt_send ~28
Send data to device via RTT down-channel
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | yes | Data to send |
No output schema declared.
No examples provided.
search_devices ~115
Search the device names this J-Link installation accepts, by part number, manufacturer, or core. Use this before set_device instead of guessing a part number — the name must match exactly, and a wrong one fails in a way that looks like broken hardware.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum results (default 40) |
| query | string | yes | Substring of a part number, manufacturer, or core. E.g. 'stm32f407', 'nrf528', 'nordic', 'cortex-m33' |
No output schema declared.
No examples provided.
set_breakpoint ~23
Set a hardware breakpoint
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Hex address |
No output schema declared.
No examples provided.
set_device ~110
Set the target device name at runtime. Required before any debugging commands will work. The name must match J-Link's exactly — use search_devices to find it rather than guessing a part number. Examples: 'nRF52840_XXAA', 'nRF5340_xxAA_APP', 'STM32F407VG', 'STM32L476RG'.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | yes | Target device name (e.g., 'nRF52840_XXAA', 'STM32F407VG') |
No output schema declared.
No examples provided.
snapshot ~45
Capture complete device state: CPU registers (compact), fault status, recent RTT output, and stack dump.
| Name | Type | Req | Description |
|---|---|---|---|
| rttLines | number | – | RTT lines to include (default 30) |
No output schema declared.
No examples provided.
start_debug_session ~57
One-call setup: starts GDB server via SEGGER J-Link, connects RTT (if supported), waits for initial output. This is the recommended first tool to call. If no device is configured, use list_devices and set_device first.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
step ~12
Step one CPU instruction
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
telnet_proxy_read ~31
Read raw data from telnet proxy buffer
| Name | Type | Req | Description |
|---|---|---|---|
| lines | number | – | Lines (default 100) |
No output schema declared.
No examples provided.
telnet_proxy_start ~58
Start a TCP relay that re-serves the RTT stream on another port, so an external decoder (Trice, Pigweed, or your own) can consume it alongside this server. It relays bytes; it does not decode them.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
telnet_proxy_status ~16
Get telnet proxy status
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
telnet_proxy_stop ~15
Stop telnet proxy
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
write_memory ~45
Write a 32-bit value to memory
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Hex address |
| value | string | yes | Hex value (e.g., '0xDEADBEEF') |
No output schema declared.
No examples provided.
What is the J-Link MCP server?
J-Link MCP is listed in the public MCP registry as io.github.Klievan/jlink-mcp. Debug embedded firmware on real hardware: J-Link probes, Cortex-M faults, RTT logs, GDB. This page covers its npm package (jlink-mcp).
Is the J-Link MCP server safe to use?
J-Link MCP scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the J-Link MCP server expose?
J-Link MCP exposes 43 tools: list_devices, search_devices, set_device, start_debug_session, snapshot, and 38 more. Their descriptions and schemas cost roughly 1,982 tokens of context every time the server is loaded.
Is the J-Link MCP server still maintained?
J-Link MCP is still listed as active in the MCP registry. We last reached this channel on 23 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the J-Link MCP server under?
J-Link MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.