jlink-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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
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