内容
# mcp-svd
一款 [MCP(模型上下文协议)](https://modelcontextprotocol.io/) 服务器,暴露 ARM CMSIS SVD 硬件寄存器定义给 AI 编码助手。与其让 AI 助手胡乱生成寄存器名称、位位置和地址,不如直接从官方 SVD 文件中查询您所使用的微控制器的确切定义。
## 安装
**从 GitHub(无需 npm):**
```bash
npm install github:pkt-lab/mcp-svd
```
或者克隆并手动构建:
```bash
git clone https://github.com/pkt-lab/mcp-svd
cd mcp-svd
npm install && npm run build
```
## Claude Desktop 配置
### 如果通过 npm(GitHub)安装:
```json
{
"mcpServers": {
"mcp-svd": {
"command": "node",
"args": ["./node_modules/mcp-svd/dist/index.js"]
}
}
}
```
### 如果在本地克隆:
```json
{
"mcpServers": {
"mcp-svd": {
"command": "node",
"args": ["/绝对路径/to/mcp-svd/dist/index.js"]
}
}
}
```
配置文件位置:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`
编辑后请重启 Claude Desktop。
## MCP 工具
### `list_peripherals`
```json
{ "svd_file": "svd/STM32F411.svd" }
```
### `lookup_register`
```json
{ "svd_file": "svd/STM32F411.svd", "peripheral": "USART1", "register": "CR1" }
```
### `describe_field`
```json
{ "svd_file": "svd/STM32F411.svd", "peripheral": "GPIOA", "register": "MODER", "field": "MODE0" }
```
### `search_registers`
```json
{ "svd_file": "svd/rp2040.svd", "query": "uart" }
```
返回最多 10 个外设 + 寄存器匹配(不区分大小写的子字符串)。
## REST API
```bash
REST_PORT=3000 node dist/index.js
# 列出外设
curl "http://localhost:3000/api/v1/peripherals?svd=svd/STM32F411.svd"
# 列出寄存器
curl "http://localhost:3000/api/v1/registers/GPIOA?svd=svd/STM32F411.svd"
# 描述字段
curl "http://localhost:3000/api/v1/field/GPIOA/MODER/MODE0?svd=svd/STM32F411.svd"
```
## 使用您自己的 SVD 文件
从 [cmsis-svd-data](https://github.com/cmsis-svd/cmsis-svd-data/tree/main/data) 或芯片供应商下载,然后传递路径:
```json
{ "svd_file": "/路径/to/您的/device.svd", "peripheral": "SPI0", "register": "CR" }
```
## 捆绑 SVD 文件
| 文件 | 设备 |
|------|--------|
| `svd/STM32F411.svd` | STM32F411 |
| `svd/nRF52840_xxAA.svd` | Nordic nRF52840 |
| `svd/rp2040.svd` | Raspberry Pi RP2040 |
## 许可证
MIT