jlink-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connectA | 连接 JLink 调试器并连接到目标单片机。 必须在其他调试操作之前调用此工具。 Args: device: 目标芯片型号,例如 "STM32F103C8"、"nRF52832_xxAA"。 使用 list_devices() 查看常用芯片型号。 interface: 调试接口,"SWD"(推荐,默认)或 "JTAG"。 speed: 通信速度(kHz),默认 4000(4MHz)。 serial_no: 指定 JLink 序列号(连接多个 JLink 时使用,可选)。 ip_addr: JLink over IP 地址,如 "192.168.1.100"(可选)。 Returns: 连接结果,包含 JLink 固件版本、目标芯片信息和当前状态。 |
| disconnectA | 断开 JLink 与目标单片机的连接。 断开前会自动让目标继续运行,避免停在断点。 Returns: 断开结果。 |
| get_statusA | 获取当前调试状态。 Returns: 包含连接状态、目标芯片型号、目标运行状态(运行中/已暂停)、 当前 PC 地址、活动断点数量、ELF 加载状态等信息。 |
| list_devicesA | 列出常用单片机型号供参考。 Returns: 常用芯片型号字典,键为芯片型号字符串(可直接用于 connect()), 值为芯片描述。 |
| haltA | 暂停目标 CPU 执行。 暂停后可以读写内存、读写寄存器、单步执行。 Returns: 包含目标状态和当前 PC 地址。 |
| runA | 继续执行目标程序(从当前 PC 位置继续运行)。 如果有断点,目标将在断点处自动停下。 Returns: 执行状态。 |
| stepA | 单步执行指令(指令级单步,不是源码级)。 如果目标正在运行会先自动暂停。 Args: count: 单步执行次数,默认 1 次。 Returns: 执行的步数和新的 PC 地址。 |
| resetA | 复位目标单片机。 Args: halt_after: True(默认)= 复位后保持暂停,方便从头调试; False = 复位后立即运行。 Returns: 复位结果和目标状态。 |
| set_breakpointA | 在指定地址或函数名处设置断点。 必须提供 address 或 symbol 之一。 Args: address: 十六进制地址字符串,如 "0x08001234" 或 "0x08001234"。 symbol: 函数名或全局变量名,如 "main"、"HAL_GPIO_WritePin"。 使用符号名需要先调用 load_elf() 加载 ELF 文件。 Returns: 断点设置结果,包含断点地址和句柄。 |
| clear_breakpointC | 清除断点。可以通过地址、符号名或断点句柄来指定。 Args: address: 断点地址(十六进制字符串)。 symbol: 断点处的符号名(需已加载 ELF)。 handle: 断点句柄(由 set_breakpoint() 返回)。 Returns: 清除结果。 |
| clear_all_breakpointsA | 清除所有已设置的断点。 Returns: 清除的断点数量。 |
| list_breakpointsA | 列出所有当前活动的断点。 Returns: 断点列表,每个断点包含地址和句柄。 |
| read_memoryA | 读取目标内存。 常用地址范围参考(ARM Cortex-M):
Args: address: 起始地址,十六进制字符串如 "0x20000000"。 num_bytes: 读取字节数,最大 1024,默认 16。 width: 读取宽度,8(字节)、16(半字)、32(字,默认)。 Returns: 读取到的数据(整数列表)和十六进制显示字符串。 |
| write_memoryA | 向目标内存写入数据。 Args: address: 起始地址,十六进制字符串如 "0x20000100"。 data: 要写入的数据列表。 width=8 时为字节列表,如 [0x01, 0xFF]; width=16 时为半字列表,如 [0x1234]; width=32 时为字列表,如 [0xDEADBEEF]。 width: 写入宽度,8/16/32,默认 32。 Returns: 写入结果。 |
| read_registersA | 读取 ARM Cortex-M CPU 所有核心寄存器。 目标需处于暂停状态(不暂停会自动暂停)。 Returns: 寄存器名称到值的映射,包括 R0-R12、SP、LR、PC、xPSR 等。 |
| write_registerA | 写入指定 CPU 寄存器。目标必须处于暂停状态。 Args: reg_name: 寄存器名,如 "PC"、"R0"、"SP"、"LR"(不区分大小写)。 value: 写入值,十六进制字符串如 "0x08001234" 或十进制字符串如 "1024"。 Returns: 写入结果。 |
| load_elfA | 加载 ELF/AXF 文件用于符号名解析。 加载后可以使用变量名读写变量、使用函数名设置断点。 Keil 生成路径示例: C:/Projects/MyProject/Objects/MyProject.axf CLion/CMake 生成路径示例: C:/Projects/MyProject/cmake-build-debug/MyProject.elf Args: elf_path: ELF 文件完整路径(.elf 或 .axf)。 Returns: 加载结果,包含符号数量、变量数量、是否包含 DWARF 调试信息。 |
| get_symbol_addressB | 查询符号(函数/全局变量)的内存地址。 需要先调用 load_elf() 加载 ELF 文件。 Args: symbol: 符号名称,如 "main"、"SystemCoreClock"、"g_counter"。 Returns: 符号名称和对应的内存地址。 |
| list_global_variablesA | 列出 ELF 文件中所有全局变量。 需要先调用 load_elf() 加载 ELF 文件。 Returns: 全局变量列表,每个变量包含名称、地址、类型、大小。 |
| list_functionsA | 列出 ELF 文件中所有函数符号。 需要先调用 load_elf() 加载 ELF 文件。 Returns: 函数列表,每个函数包含名称和起始地址。 |
| read_variableA | 按变量名读取全局变量的当前值。 需要先调用 load_elf() 和 connect()。 目标可以处于运行或暂停状态(建议暂停以获得一致读数)。 Args: name: 全局变量名,如 "g_counter"、"SystemCoreClock"、"g_state"。 Returns: 变量名、地址、类型、大小、原始十六进制值和解码后的值。 |
| write_variableA | 按变量名修改全局变量的值。 需要先调用 load_elf() 和 connect()。 目标建议处于暂停状态,以确保写入一致性。 Args: name: 全局变量名,如 "g_counter"、"g_mode"。 value: 要写入的数值(整数或浮点数,系统会根据变量类型自动转换)。 Returns: 写入结果。 |
| read_rttA | 读取 SEGGER RTT(Real Time Transfer)缓冲区内容。 RTT 是非侵入式实时日志通道,无需停止目标即可读取。 需要目标固件中包含 SEGGER RTT 库并使用 SEGGER_RTT_printf() 输出。 Args: channel: RTT 通道号,默认 0(通常用于日志输出)。 max_bytes: 最大读取字节数,默认 1024。 Returns: 读取到的 RTT 文本内容。 |
| write_rttB | 向 RTT 输入通道发送数据(发送到目标单片机)。 Args: text: 要发送的文本字符串。 channel: RTT 通道号,默认 0。 Returns: 实际写入的字节数。 |
| flash_firmwareA | 烧录固件到目标单片机 Flash。 支持 .elf、.axf(Keil)、.hex(Intel HEX)、.bin 格式。 Args: file_path: 固件文件完整路径。 Keil: .../Objects/MyProject.axf 或 .hex CLion: .../cmake-build-debug/MyProject.elf address: 仅 .bin 文件需要,指定 Flash 起始地址,如 "0x08000000"。 .elf/.axf/.hex 文件不需要此参数(地址已包含在文件中)。 verify: 烧录后是否校验,默认 True。 Returns: 烧录结果,包含成功/失败状态和错误信息(如有)。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xun123456/jlink-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server