{
  "name": "jlink-mcp",
  "displayName": "jlink-mcp",
  "description": "MCP server for SEGGER J-Link debug probes — 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.4.0",
  "publisher": "Klievan",
  "icon": "logo.png",
  "license": "MIT",
  "engines": {
    "vscode": "^1.110.0"
  },
  "categories": [
    "Debuggers",
    "Other"
  ],
  "keywords": [
    "j-link",
    "segger",
    "embedded",
    "mcp",
    "mcp-server",
    "model-context-protocol",
    "rtt",
    "debug",
    "arm",
    "cortex-m",
    "trice",
    "pigweed",
    "openocd",
    "blackmagic",
    "firmware"
  ],
  "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"
      }
    ],
    "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"
        }
      }
    },
    "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",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@types/node": "^25.5.2",
    "@types/vscode": "^1.110.0",
    "@vscode/vsce": "^3.7.1",
    "esbuild": "^0.28.0",
    "typescript": "^6.0.2"
  }
}
