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
Our assessment of jlink-mcp
jlink-mcp scores 49/100 on our quality scale, 922nd of 947 AI & Machine Learning skills we index.
Its MCP Server is 8.8 KB long, written without headings and no code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- Our last check on 2026-10-19 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill 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 | 49 | 0 | — | MCP Server |
| claude-memby thedotmack | 100 | 102.5k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 101.3k | today | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 87.9k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.6k | 1d ago | 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?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/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?
- We could not determine when the repository was last updated.
Skill content
View source on GitHub{
"name": "jlink-mcp",
"displayName": "J-Link MCP \u2014 Embedded Debugging for AI Agents",
"description": "MCP server for SEGGER J-Link debug probes \u2014 LLM-driven embedded debugging with RTT, GDB server, and Trice/Pigweed support",
"repository": {
"type": "git",
"url": "https://github.com/Klievan/jlink-mcp"
},
"homepage": "https://github.com/Klievan/jlink-mcp#readme",
"bugs": {
"url": "https://github.com/Klievan/jlink-mcp/issues"
},
"version": "0.7.0",
"publisher": "Klievan",
"icon": "logo.png",
"license": "MIT",
"engines": {
"vscode": "^1.110.0"
},
"categories": [
"Debuggers",
"AI",
"Other"
],
"keywords": [
"jlink",
"j-link",
"segger",
"embedded",
"firmware",
"debugger",
"gdb",
"rtt",
"swd",
"jtag",
"cortex-m",
"arm",
"microcontroller",
"mcu",
"nrf52",
"nordic",
"stm32",
"zephyr",
"svd",
"cmsis",
"mcp",
"mcp-server",
"model-context-protocol",
"copilot",
"ai",
"llm",
"openocd",
"blackmagic",
"trice",
"pigweed"
],
"bin": {
"jlink-mcp": "./out/mcp/standalone.js"
},
"activationEvents": [
"onStartupFinished"
],
"main": "./out/extension.js",
"contributes": {
"commands": [
{
"command": "jlinkMcp.showStatus",
"title": "J-Link MCP: Show Status",
"category": "J-Link"
},
{
"command": "jlinkMcp.startGdbServer",
"title": "J-Link MCP: Start GDB Server",
"category": "J-Link"
},
{
"command": "jlinkMcp.stopGdbServer",
"title": "J-Link MCP: Stop GDB Server",
"category": "J-Link"
},
{
"command": "jlinkMcp.connectRtt",
"title": "J-Link MCP: Connect RTT",
"category": "J-Link"
},
{
"command": "jlinkMcp.disconnectRtt",
"title": "J-Link MCP: Disconnect RTT",
"category": "J-Link"
},
{
"command": "jlinkMcp.startTelnetProxy",
"title": "J-Link MCP: Start Telnet Proxy",
"category": "J-Link"
},
{
"command": "jlinkMcp.stopTelnetProxy",
"title": "J-Link MCP: Stop Telnet Proxy",
"category": "J-Link"
},
{
"command": "jlinkMcp.flashFirmware",
"title": "J-Link MCP: Flash Firmware",
"category": "J-Link"
},
{
"command": "jlinkMcp.showOutput",
"title": "J-Link MCP: Show Output Log",
"category": "J-Link"
},
{
"command": "jlinkMcp.showRttOutput",
"title": "J-Link MCP: Show RTT Output",
"category": "J-Link"
},
{
"command": "jlinkMcp.freeProbe",
"title": "J-Link: Free the probe (stop the GDB server)",
"category": "J-Link MCP"
}
],
"configuration": {
"title": "J-Link MCP",
"properties": {
"jlinkMcp.probeType": {
"type": "string",
"enum": [
"jlink",
"openocd",
"blackmagic"
],
"default": "jlink",
"description": "Debug probe backend. OpenOCD covers ST-Link, CMSIS-DAP and FTDI adapters."
},
"jlinkMcp.gdbPath": {
"type": "string",
"default": "arm-none-eabi-gdb",
"description": "GDB used for source-level debugging. gdb-multiarch works if you have no ARM-specific build."
},
"jlinkMcp.jlink.installDir": {
"type": "string",
"default": "",
"description": "Path to SEGGER J-Link installation directory (auto-detected if empty)"
},
"jlinkMcp.jlink.device": {
"type": "string",
"default": "Unspecified",
"description": "Target device name (e.g., NRF52840_XXAA, STM32F407VG)"
},
"jlinkMcp.jlink.interface": {
"type": "string",
"enum": [
"SWD",
"JTAG"
],
"default": "SWD",
"description": "Debug interface"
},
"jlinkMcp.jlink.speed": {
"type": "number",
"default": 4000,
"description": "Connection speed in kHz"
},
"jlinkMcp.jlink.serialNumber": {
"type": "string",
"default": "",
"description": "J-Link serial number (for multi-probe setups)"
},
"jlinkMcp.jlink.gdbPort": {
"type": "number",
"default": 2331,
"description": "GDB server port"
},
"jlinkMcp.jlink.rttTelnetPort": {
"type": "number",
"default": 19021,
"description": "RTT telnet port"
},
"jlinkMcp.jlink.swoTelnetPort": {
"type": "number",
"default": 2332,
"description": "SWO telnet port"
},
"jlinkMcp.telnetProxy.listenPort": {
"type": "number",
"default": 19400,
"description": "Telnet proxy listen port for Trice/Pigweed"
},
"jlinkMcp.telnetProxy.sourcePort": {
"type": "number",
"default": 19021,
"description": "Source port to proxy (usually RTT telnet port)"
},
"jlinkMcp.telnetProxy.sourceHost": {
"type": "string",
"default": "localhost",
"description": "Source host for telnet proxy"
},
"jlinkMcp.openocd.binaryPath": {
"type": "string",
"default": "openocd",
"description": "Path to the openocd binary"
},
"jlinkMcp.openocd.interfaceConfig": {
"type": "string",
"default": "interface/stlink.cfg",
"description": "OpenOCD interface config (e.g. interface/stlink.cfg, interface/cmsis-dap.cfg)"
},
"jlinkMcp.openocd.targetConfig": {
"type": "string",
"default": "target/stm32f4x.cfg",
"description": "OpenOCD target config (e.g. target/stm32f4x.cfg, target/nrf52.cfg)"
},
"jlinkMcp.openocd.gdbPort": {
"type": "number",
"default": 3333,
"description": "OpenOCD GDB server port"
},
"jlinkMcp.openocd.telnetPort": {
"type": "number",
"default": 4444,
"description": "OpenOCD telnet/monitor port"
},
"jlinkMcp.blackmagic.gdbPath": {
"type": "string",
"default": "arm-none-eabi-gdb",
"description": "GDB binary used to drive a Black Magic Probe"
},
"jlinkMcp.blackmagic.serialPort": {
"type": "string",
"default": "",
"description": "BMP serial port (e.g. /dev/cu.usbmodemXXXX). Auto-detected when empty."
},
"jlinkMcp.blackmagic.targetIndex": {
"type": "number",
"default": 1,
"description": "Target index reported by the probe's scan"
},
"jlinkMcp.svdPath": {
"type": "string",
"default": "",
"description": "Path to a CMSIS-SVD file for the target. Enables symbolic peripheral reads (list_peripherals, read_peripheral, decode_register). Vendors publish these; the same file Cortex-Debug uses as svdFile works here."
},
"jlinkMcp.rtt.controlBlockAddress": {
"type": "string",
"default": "",
"markdownDescription": "Address of the SEGGER RTT control block (your firmware's _SEGGER_RTT symbol), e.g. 0x20000000. J-Link locates this by scanning RAM and never reports it back, so supplying it is what allows RTT to be recovered after a target reset \u2014 without it, collection stops at the first reset and every later read looks like a quiet target."
}
}
},
"mcpServerDefinitionProviders": [
{
"id": "jlinkMcp.mcpServer",
"label": "J-Link Debug Probe"
}
]
},
"scripts": {
"compile": "tsc -p ./",
"bundle": "node esbuild.mjs",
"watch": "tsc -watch -p ./",
"build": "npm run compile && npm run bundle",
"prepublishOnly": "npm run build",
"vscode:prepublish": "npm run build",
"package": "npm run build && vsce package",
"lint": "tsc --noEmit",
"test": "npm run test:unit",
"test:unit": "npm run clean:test && tsc -p tsconfig.test.json && node --test out-test/test/unit/.test.js",
"test:watch": "npm run clean:test && tsc -p tsconfig.test.json && node --test --watch out-test/test/unit/.test.js",
"test:hil": "npm run clean:test && tsc -p tsconfig.test.json && node --test out-test/test/hil/*.test.js",
"clean:test": "node -e "require('fs').rmSync('out-test',{recursive:true,force:true})"",
"demo": "node demo/story.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"sax": "^1.6.1",
"zod": "^4.3.6"
},
"devDependencies": {
"@types/node": "^25.5.2",
"@types/sax": "^1.2.7",
"@types/vscode": "^1.110.0",
"@vscode/vsce": "^3.7.1",
"esbuild": "^0.28.0",
"typescript": "^6.0.2"
},
"mcpName": "io.github.Klievan/jlink-mcp"
}
Related Skills
claude-mem
102.5kPersistent 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
101.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
87.9kGraphs 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
77.6kCompress 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.
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.
