Context7
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Let AI agents interact with debug probes — connect, flash, read/write memory, and reset.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
DBGPROBE_BACKEND, DBGPROBE_MCP_LOG_LEVEL, DBGPROBE_JLINK_PATH, DBGPROBE_JLINK_GDBSERVER_PATH, DBGPROBE_JLINK_DEVICE, DBGPROBE_INTERFACE, DBGPROBE_SPEED_KHZ, DBGPROBE_MCP_PLUGINS, DBGPROBE_MCP_TOOL_SEPARATORต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"dbgprobe": {
"command": "uvx",
"args": [
"dbgprobe-mcp-server"
],
"env": {
"DBGPROBE_BACKEND": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_GDBSERVER_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_DEVICE": "ใส่ค่าของคุณ",
"DBGPROBE_INTERFACE": "ใส่ค่าของคุณ",
"DBGPROBE_SPEED_KHZ": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_PLUGINS": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_TOOL_SEPARATOR": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add dbgprobe --env DBGPROBE_BACKEND='ใส่ค่าของคุณ' --env DBGPROBE_MCP_LOG_LEVEL='ใส่ค่าของคุณ' --env DBGPROBE_JLINK_PATH='ใส่ค่าของคุณ' --env DBGPROBE_JLINK_GDBSERVER_PATH='ใส่ค่าของคุณ' --env DBGPROBE_JLINK_DEVICE='ใส่ค่าของคุณ' --env DBGPROBE_INTERFACE='ใส่ค่าของคุณ' --env DBGPROBE_SPEED_KHZ='ใส่ค่าของคุณ' --env DBGPROBE_MCP_PLUGINS='ใส่ค่าของคุณ' --env DBGPROBE_MCP_TOOL_SEPARATOR='ใส่ค่าของคุณ' -- uvx dbgprobe-mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"dbgprobe": {
"command": "uvx",
"args": [
"dbgprobe-mcp-server"
],
"env": {
"DBGPROBE_BACKEND": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_GDBSERVER_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_DEVICE": "ใส่ค่าของคุณ",
"DBGPROBE_INTERFACE": "ใส่ค่าของคุณ",
"DBGPROBE_SPEED_KHZ": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_PLUGINS": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_TOOL_SEPARATOR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"dbgprobe": {
"type": "stdio",
"command": "uvx",
"args": [
"dbgprobe-mcp-server"
],
"env": {
"DBGPROBE_BACKEND": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_GDBSERVER_PATH": "ใส่ค่าของคุณ",
"DBGPROBE_JLINK_DEVICE": "ใส่ค่าของคุณ",
"DBGPROBE_INTERFACE": "ใส่ค่าของคุณ",
"DBGPROBE_SPEED_KHZ": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_PLUGINS": "ใส่ค่าของคุณ",
"DBGPROBE_MCP_TOOL_SEPARATOR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
DBGPROBE_BACKEND envDBGPROBE_MCP_LOG_LEVEL envDBGPROBE_JLINK_PATH envDBGPROBE_JLINK_GDBSERVER_PATH envDBGPROBE_JLINK_DEVICE envDBGPROBE_INTERFACE envDBGPROBE_SPEED_KHZ envDBGPROBE_MCP_PLUGINS envDBGPROBE_MCP_TOOL_SEPARATOR envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub es617 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.4) เข้า registry 8 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Context7, Codebase Memory, Exa
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A stateful debug probe Model Context Protocol (MCP) server for developer tooling and AI agents. Works out of the box with Claude Code, VS Code with Copilot, and any MCP-compatible runtime. Communicates over stdio and drives on-chip debug probes (J-Link first, OpenOCD and pyOCD planned) to flash, debug, and inspect embedded targets.
Example: Let Claude Code list attached J-Link probes, connect to your nRF52840, flash a new firmware, read memory, and reset the target — all conversationally.
Video walkthrough — connecting to a J-Link probe, flashing firmware, loading ELF and SVD for symbol-aware debugging, RTT logging, and breakpoints.
If you've ever typed J-Link Commander commands by hand, copy-pasted memory addresses between a datasheet and a terminal, re-flashed the same firmware 20 times during a debug session, and juggled multiple tool windows — this is for you.
You have a microcontroller on a debug probe. You want an AI agent to interact with it — connect, flash firmware, read/write memory, reset, halt, resume. This server makes that possible.
It gives any MCP-compatible agent a full set of debug probe tools. The agent calls these tools, gets structured JSON back, and reasons about what to do next — without you manually driving JLinkExe for every operation.
What agents can do with it:
pip install dbgprobe-mcp-server
claude mcp add dbgprobe -- dbgprobe_mcp
claude mcp add dbgprobe \ -e DBGPROBE_JLINK_PATH=/Applications/SEGGER/JLink/JLinkExe \ -- dbgprobe_mcp
Then in Claude Code, try:
"List attached debug probes, connect to the J-Link, and read 16 bytes from address 0x20000000."
| Backend | Status | Probe hardware |
|---|---|---|
| J-Link | Working (v0) | SEGGER J-Link (EDU, EDU Mini, PLUS, PRO, etc.) |
| OpenOCD | Planned | ST-Link, CMSIS-DAP, and many others |
| pyOCD | Planned | CMSIS-DAP, ST-Link, J-Link (via pyOCD) |
The server is backend-agnostic — tool names (dbgprobe.*) stay the same regardless of which probe you use.
Install the SEGGER J-Link Software Pack. The server auto-detects JLinkExe on PATH or in common install locations:
/Applications/SEGGER/JLink//opt/SEGGER/JLink/, /usr/bin/C:\Program Files\SEGGER\JLink\Or set DBGPROBE_JLINK_PATH to point to the executable directly.
*This project is not affiliated with or sponsored by SEGGER. J-Link is used because it's widely available and well-supported.*
| Category | Tools |
|---|---|
| Probe | dbgprobe.probes.list, dbgprobe.connect, dbgprobe.erase, dbgprobe.disconnect, dbgprobe.reset, dbgprobe.halt, dbgprobe.go, dbgprobe.step, dbgprobe.status, dbgprobe.flash, dbgprobe.mem.read, dbgprobe.mem.write, dbgprobe.breakpoint.set, dbgprobe.breakpoint.clear, dbgprobe.breakpoint.list |
| Introspection | dbgprobe.connections.list |
| ELF | dbgprobe.elf.attach, dbgprobe.elf.info, dbgprobe.elf.lookup, dbgprobe.elf.symbols |
| SVD | dbgprobe.svd.attach, dbgprobe.svd.info, dbgprobe.svd.read, dbgprobe.svd.write, dbgprobe.svd.set_field, dbgprobe.svd.update_fields, dbgprobe.svd.list_peripherals, dbgprobe.svd.list_registers, dbgprobe.svd.list_fields, dbgprobe.svd.describe |
| RTT | dbgprobe.rtt.start, dbgprobe.rtt.stop, dbgprobe.rtt.read, dbgprobe.rtt.write, dbgprobe.rtt.status |
| Plugins | dbgprobe.plugin.list, dbgprobe.plugin.template, dbgprobe.plugin.load, dbgprobe.plugin.reload |
| Tracing | dbgprobe.trace.status, dbgprobe.trace.tail |
See docs/tools.md for full schemas and examples.
# Editable install from repo root
pip install -e ".[test]"
uv pip install -e ".[test]"
MCP is a protocol — this server works with any MCP-compatible client. Below are setup instructions for the most common ones.
# Standard setup
claude mcp add dbgprobe -- dbgprobe_mcp
claude mcp add dbgprobe \ -e DBGPROBE_JLINK_DEVICE=nRF52840_xxAA \ -- dbgprobe_mcp
claude mcp add dbgprobe -e DBGPROBE_MCP_LOG_LEVEL=DEBUG -- dbgprobe_mcp
Add to your project's .vscode/mcp.json (or create it):
{
"servers": { "dbgprobe": { "type": "stdio", "command": "dbgprobe_mcp", "args": [], "env": { "DBGPROBE_JLINK_DEVICE": "nRF52840_xxAA" } } } }
Adjust env to match your target — set DBGPROBE_JLINK_DEVICE to your chip, or remove it to specify the device at connect time.
Add to your project's .cursor/mcp.json (or create it). Cursor does not support dots in tool names, so DBGPROBE_MCP_TOOL_SEPARATOR must be set to _:
{
"mcpServers": { "dbgprobe": { "command": "dbgprobe_mcp", "args": [], "env": { "DBGPROBE_JLINK_DEVICE": "nRF52840_xxAA", "DBGPROBE_MCP_TOOL_SEPARATOR": "_" } } } }
| Variable | Default | Description |
|---|---|---|
DBGPROBE_BACKEND | jlink | Debug probe backend. Future: openocd, pyocd. |
DBGPROBE_MCP_LOG_LEVEL | WARNING | Python log level (DEBUG, INFO, WARNING, ERROR). Logs go to stderr. |
DBGPROBE_MCP_TRACE | enabled | JSONL tracing of every tool call. Set to 0, false, or no to disable. |
DBGPROBE_MCP_TRACE_PAYLOADS | disabled | Include memory data payloads in traced args (stripped by default). |
DBGPROBE_MCP_TRACE_MAX_BYTES | 16384 | Max payload chars before truncation (only when TRACE_PAYLOADS is on). |
DBGPROBE_MCP_TOOL_SEPARATOR | . | Character used to separate tool name segments. Set to _ for MCP clients that reject dots in tool names (e.g. Cursor). |
DBGPROBE_MCP_PLUGINS | disabled | Plugin policy: all or comma-separated plugin names (e.g. nrf52,stm32). |
| Variable | Default | Description |
|---|---|---|
DBGPROBE_JLINK_PATH | auto-detect | Explicit path to JLinkExe (or JLink.exe on Windows). |
DBGPROBE_JLINK_GDBSERVER_PATH | auto-detect | Explicit path to JLinkGDBServerCLExe. |
DBGPROBE_JLINK_DEVICE | *(none)* | Default target device string (e.g. nRF52840_xxAA). Can be overridden per-session. |
DBGPROBE_INTERFACE | SWD | Debug interface: SWD or JTAG. |
DBGPROBE_SPEED_KHZ | 4000 | Interface clock speed in kHz. |
DBGPROBE_GDB_TRACE | disabled | Log all GDB RSP packets to file. Set to 1, true, or yes to enable. |
DBGPROBE_GDB_TRACE_FILE | /tmp/gdb_trace.log | Path for GDB RSP trace log (only when GDB_TRACE is on). |
Attach an ELF file to a session to enable symbol-aware debugging:
breakpoint.set(symbol="main") instead of raw addressesstatus, step, and halt include symbol + symbol_offset when an ELF is attached.elf auto-attaches it; flashing .hex/.bin auto-reloads a previously attached ELF; sibling .elf files are suggested via hints> "Attach the ELF, set a breakpoint on main, run, and show me where it halted."
The agent calls elf.attach, breakpoint.set(symbol="main"), go, then status — and gets back "halted at main+0" instead of a raw hex address.
Attach an SVD (System View Description) file to a session to enable register-level peripheral access:
svd.read("GPIO.OUT") returns the raw value and all decoded fields with enum namessvd.read("GPIO.PIN_CNF[3].PULL") returns the field value and enum name ("PullUp")svd.set_field("GPIO.PIN_CNF[3].PULL", "PullUp") does read-modify-writesvd.update_fields("GPIO.PIN_CNF[3]", {"DIR": "Output", "PULL": "PullUp"}) — one read, one writesvd.write("GPIO.OUT", 0x01) — full register, no RMWmem.read hits a known register address, the response includes decoded fields> "Attach the SVD, read GPIO.PIN_CNF[3], and set PULL to PullUp."
The agent calls svd.attach, svd.read("GPIO.PIN_CNF[3]"), then svd.set_field("GPIO.PIN_CNF[3].PULL", "PullUp") — and gets back decoded field values instead of raw hex.
Start, stop, read, and write to SEGGER RTT channels. The agent can stream target log output and send data to the device — useful for debugging firmware that prints over RTT instead of UART.
> "Start RTT and show me the output."
For repetitive flows — read device ID, run a self-test sequence, validate calibration — you can package them as plugins: Python modules that expose custom tools the agent can call directly.
ตัดมาแค่ช่วงต้น อ่านต่อใน repo