프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

OpenOCD Debugger

제작자: microhenrio버전 0.4.5i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.microhenrio/openocd-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

Debug microcontrollers via OpenOCD: flash, breakpoints, memory, registers and variables.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 검색 및 AI 기억

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: OPENOCD_BIN, OPENOCD_MCP_CONFIG, OPENOCD_MCP_READONLY

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "openocd": {
      "command": "uvx",
      "args": [
        "openocd-mcp"
      ],
      "env": {
        "OPENOCD_BIN": "your-value",
        "OPENOCD_MCP_CONFIG": "your-value",
        "OPENOCD_MCP_READONLY": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add openocd --env OPENOCD_BIN=your-value --env OPENOCD_MCP_CONFIG=your-value --env OPENOCD_MCP_READONLY=your-value -- uvx openocd-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "openocd": {
      "command": "uvx",
      "args": [
        "openocd-mcp"
      ],
      "env": {
        "OPENOCD_BIN": "your-value",
        "OPENOCD_MCP_CONFIG": "your-value",
        "OPENOCD_MCP_READONLY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "openocd": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "openocd-mcp"
      ],
      "env": {
        "OPENOCD_BIN": "your-value",
        "OPENOCD_MCP_CONFIG": "your-value",
        "OPENOCD_MCP_READONLY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • OPENOCD_BIN env
    Path to OpenOCD binary; optional.
  • OPENOCD_MCP_CONFIG env
    Path to openocd-mcp.json config; optional.
  • OPENOCD_MCP_READONLY env
    Set to 1 to force read-only mode; optional.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 microhenrio 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

검색 및 AI 기억 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 7250개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 7250개 중 19%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 7250개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

OpenOCD Debugger, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.4.5)은 4개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Context7, Codebase Memory, Exa

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Context7

제작자: upstash

Up-to-date docs for AI agents

컴퓨터 또는 클라우드★ 64,224MIT오늘 업데이트
설치

Codebase Memory

제작자: DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

내 컴퓨터에서 실행★ 48,148MIT20일 전 업데이트
설치

Exa

제작자: exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

클라우드에서 실행★ 5,213MIT지난달 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

OpenOCD MCP Server

Debug microcontrollers directly from your AI assistant. This is an MCP server that drives OpenOCD, letting any MCP-compatible AI flash firmware, control execution, and inspect a running target — and read your variables and peripheral registers by name instead of raw addresses.

Description

Once connected to a target through a debug probe (ST-Link, J-Link, CMSIS-DAP, …), your AI assistant can:

  • Flash firmware — program and verify .elf / .bin / .hex images
  • Control execution — halt, resume, single-step, reset
  • Inspect state — read/write CPU registers and memory
  • Set breakpoints — hardware & software, including conditional breakpoints (halt only when an expression is true) and hit-count breakpoints
  • Watch memory — hardware watchpoints that halt on read/write/access to an address
  • Read variables by name — from your firmware's .elf symbols (e.g. read_variable uart_rx_count)
  • Live-watch variables — a window that samples variables over time *without halting* the CPU, with expandable structs/arrays auto-typed from DWARF (signed/float/pointer/enum)
  • Read peripheral registers by name — from a CMSIS-SVD file, decoded into named bitfields (e.g. RCC.CR, GPIOA.MODER)
  • Safety gates — permission layer (read-only mode, gated flash-erase, flash path/size limits) so the agent can't damage a target unexpectedly

The server is chip-agnostic — it works with any target OpenOCD supports; you point it at your chip's config and (optionally) SVD/ELF. It can also start OpenOCD for you and download OpenOCD automatically for your platform, so there's nothing else to install by hand.

Supported AI clients

Any MCP-compatible client works. Tested and known to work:

ClientPlatform
Claude CodeCLI / IDE
Claude DesktopmacOS / Windows
CursorIDE
WindsurfIDE
ClineVS Code extension
ContinueVS Code / JetBrains
ZedEditor
VS Code + GitHub CopilotIDE (agent mode)
Gemini CLICLI

Installation

Prerequisites: Python 3.10+ and a debug probe connected to your target.

Clone and install the package into a virtual environment:

git clone https://github.com/microhenrio/openocd-mcp

cd openocd-mcp python -m venv .venv

Install it (creates the openocd-mcp command):

# Windows

.venv\Scripts\python -m pip install -e .

macOS / Linux

.venv/bin/python -m pip install -e .

Windows shortcut: run setup.bat — it creates the environment, installs

the package, and registers it with Claude Code automatically.

OpenOCD is obtained automatically: a build for your OS/architecture is downloaded and cached on first connect (checksum-verified). You can also fetch it ahead of time with openocd-mcp install-openocd, or use an existing install by setting the OPENOCD_BIN environment variable.

Registering with your AI client

The server executable is:

# Windows

\.venv\Scripts\openocd-mcp.exe

macOS / Linux

/.venv/bin/openocd-mcp

Claude Code

# Windows

claude mcp add --scope user openocd -- "%CD%\.venv\Scripts\openocd-mcp.exe"

macOS / Linux

claude mcp add --scope user openocd -- "$PWD/.venv/bin/openocd-mcp"

Restart Claude Code, then verify with claude mcp list.

Claude Desktop

Add to claude_desktop_config.json (Edit → Settings → Developer → Edit Config):

{

"mcpServers": { "openocd": { "command": "/path/to/.venv/bin/openocd-mcp" } } }

Restart Claude Desktop.

Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in your project):

{

"mcpServers": { "openocd": { "command": "/path/to/.venv/bin/openocd-mcp" } } }

Restart Cursor.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{

"mcpServers": { "openocd": { "command": "/path/to/.venv/bin/openocd-mcp" } } }

Restart Windsurf.

Cline (VS Code)

Open the Cline panel → MCP Servers → Add Server → Manual, then enter:

{

"openocd": { "command": "/path/to/.venv/bin/openocd-mcp" } }

Continue (VS Code / JetBrains)

Add to ~/.continue/config.json:

{

"mcpServers": [ { "name": "openocd", "command": "/path/to/.venv/bin/openocd-mcp" } ] }

VS Code + GitHub Copilot

Add to .vscode/mcp.json in your workspace (or user settings.json):

{

"servers": { "openocd": { "type": "stdio", "command": "/path/to/.venv/bin/openocd-mcp" } } }

Enable via Chat → Agent mode in VS Code.

Updating

There's no self-update tool exposed over MCP — updating means running commands in a terminal, either yourself or by asking an AI that has shell access (e.g. Claude Code). After updating, restart your AI client so it loads the new server; if it was mid-session, it may need to stop the old openocd-mcp process first (a file lock can block the reinstall while it's running).

PyPI install (pip install openocd-mcp or uvx):

pip install -U openocd-mcp

uvx caches by default — force a refresh:

uvx --refresh openocd-mcp

Editable git-clone install (what setup.bat / this repo's instructions set up):

git pull

only needed if dependencies changed:

.venv/bin/python -m pip install -e . # or .venv\Scripts\python on Windows

Check the installed version with pip show openocd-mcp.

How to work with it

1. Point it at your chip

Each firmware project tells the server which target it's debugging. Create an openocd-mcp.json in your project root (a template is in openocd-mcp.example.json):

{

"target_cfg": "target/stm32g0x.cfg", "svd_file": "path/to/STM32G0B0.svd", "elf_file": "path/to/build/firmware.elf" }

  • target_cfg / interface_cfg — OpenOCD configs (relative to its scripts dir). Defaults to an ST-Link probe; set target_cfg for your chip.
  • transport — "swd" or "jtag". Set "swd" for a J-Link on Cortex-M (with interface_cfg: "interface/jlink.cfg"); leave empty for ST-Link.
  • svd_file — CMSIS-SVD file for the chip (enables peripheral registers by name).
  • elf_file — your firmware build output (enables variables by name).

J-Link on Windows: OpenOCD reaches J-Links via libusb, so bind the J-Link's

debug interface to libusbK (or WinUSB) with Zadig

once (Interface 2 / MI_02). Newer SEGGER software (v7.x+) is compatible with

libusbK, so both OpenOCD and SEGGER tools can coexist. ST-Link works without

that step.

Or simply tell the AI the chip you're using and it will configure the session for you. show_config reports the active settings at any time.

2. Describe what you want

With the board plugged in, describe what you want — the AI picks the right tools:

You say…What happens
"connect and halt the target"Starts OpenOCD if needed, attaches, halts the CPU
"what's the status?"Reports running/halted and the current program counter
"read the variable sensor_value"Looks it up in the .elf and reads it off the chip
"set motor_enabled to 1"Writes the variable by name
"watch tick_count live for 2 seconds"Calls watch_variables — samples it repeatedly *without halting* and returns a table of values over time, right in the chat
"read GPIOA.MODER"Reads the register and decodes its named bitfields
"list the RCC registers"Lists registers from the SVD
"break at 0x08001234, then reset and run"Sets a breakpoint and resets
"break at 0x08001234 when r0 is 42"Sets a conditional breakpoint (using [get_reg r0] == 42)
"break at 0x08001234 after 5 hits"Sets a hit-count breakpoint
"watch for writes to 0x20000000"Sets a hardware data watchpoint
"flash build/firmware.elf and run it"Programs, verifies, and restarts
"dump 64 bytes of RAM at 0x20000000"Reads memory

You don't call tools by name — describe the goal and the AI maps it to the underlying tools.

3. Conditional breakpoints & watchpoints

Conditional breakpoints halt only when a condition holds — useful for catching one specific case in code that runs constantly. Conditions are TCL expressions and can use two helpers:

  • get_reg — a CPU register value (e.g. get_reg r0, get_reg pc)
  • get_mem [width] — a memory value (e.g. get_mem 0x20000000)

Just describe the intent; the AI builds the condition:

You say…Condition used
"break at 0x08001234 only when r0 > 100"expr {[get_reg r0] > 100}
"break at parse_packet when the byte at 0x20000005 is 0xFF"expr {[get_mem 0x20000005 8] == 0xFF}
"stop at 0x08001234 on the 10th time it's hit"incr ::hits; expr {$::hits >= 10}

When the condition is false the server resumes automatically and keeps going until it's true (or you stop it).

Watchpoints halt the CPU when it accesses a memory location — ideal for finding what corrupts a variable:

  • "watch for writes to 0x20000000"
  • "watch address 0x20000010 for any read or write"
Live-watching variables

There are two separate ways to watch a variable without halting the CPU — one the AI can trigger, one you run yourself:

watch_variables (MCP tool)openocd-watch (standalone GUI)
Triggered byAsking the AI in chatRunning the command yourself in a terminal
OutputA text table of samples returned to the chatA live-updating window with a tree view
DurationOne-shot: N samples, then it returnsKeeps running until you close it
Structs/arraysFlat values onlyExpandable, DWARF-typed

Ask the AI for a quick, bounded look at a value over time — "watch tick_count for 10 samples", "sample sensor_value every 200ms for 2 seconds". This calls the watch_variables tool directly; no extra setup needed beyond an ELF loaded.

Run the GUI yourself for an open-ended live view, especially of structs/arrays. It's a standalone app that opens its own connection to OpenOCD, so it works fine alongside any AI session driving the same target — but it is *not* an MCP tool, so the AI cannot open it for you; run it directly:

openocd-watch tick_count se

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기