# mcp_config.json 配置文件说明

## 完整模板

```json
{
    "wiggle_exe": "D:\\wiggle_MCP\\wiggle\\wiggle.exe",
    "aurix_flasher_exe": "D:\\wiggle_MCP\\AURIXFlasher\\AURIXFlasher.exe",
    "server": "localhost",
    "target": null,
    "device": null,
    "timeout": 120,

    "build": {
        "command": null,
        "work_dir": null,
        "timeout": 300
    },
    "project": {
        "elf_file": null,
        "map_file": null,
        "lst_file": null,
        "mdf_file": null,
        "hex_file": null,
        "toolchain": null
    }
}
```

---

## 第一部分：基础配置

| 字段 | 类型 | 默认值 | 必填 | 说明 |
|------|------|--------|------|------|
| `wiggle_exe` | string/null | 自动检测 | 否 | wiggle.exe 绝对路径（DFlash 调试工具）。分发版已自带，通常无需修改 |
| `aurix_flasher_exe` | string/null | 自动检测 | 否 | AURIXFlasher.exe 绝对路径（PFlash 烧写工具）。分发版已自带 |
| `server` | string | `"localhost"` | 否 | TAS Debug Server 地址。`"localhost"` = 本机，也可填远程 IP |
| `target` | string/null | `null` | 否 | 目标设备标识。`null` = 自动检测已连接设备，也可指定如 `"TC334"` |
| `device` | string/null | `null` | 否 | 设备族标识。`null` = 自动检测，也可指定如 `"TC33x"`, `"TC37x"`, `"TC39x"` |
| `timeout` | int | `120` | 否 | wiggle 命令超时时间（秒）。大容量 DFlash 擦除可适当调大 |

> **提示**：路径使用 Windows 反斜杠时需双写 `\\`，也可使用正斜杠 `/`。

---

## 第二部分：构建配置（build）

用于 `build_project` 工具执行编译。

| 字段 | 类型 | 默认值 | 必填 | 说明 |
|------|------|--------|------|------|
| `build.command` | string/null | `null` | 使用 build_project 时必填 | 编译命令。留 null 则不执行编译，仅分析已有产物 |
| `build.work_dir` | string/null | `null` | 是 | 编译工作目录（命令在此目录下执行） |
| `build.timeout` | int | `300` | 否 | 编译超时时间（秒）。大型项目可调至 600+ |

### 示例

```json
// TASKING
"build": {
    "command": "C:\\TASKING\\TriCore\\vx-toolset\\bin\\cctc.exe -t makefile.mak all",
    "work_dir": "D:\\workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)",
    "timeout": 300
}

// GCC
"build": {
    "command": "make -j4 all",
    "work_dir": "D:\\workspace\\TC334_LK_Autosar_OS\\TriCore Debug (GCC)",
    "timeout": 300
}
```

---

## 第三部分：项目产物配置（project）

用于 `parse_symbols`、`parse_elf`、`lookup_symbol`、`lookup_address` 工具分析符号和地址。

| 字段 | 类型 | 默认值 | 必填 | 说明 |
|------|------|--------|------|------|
| `project.elf_file` | string/null | `null` | 使用 parse_elf 时必填 | ELF 文件路径，解析符号表、段信息、DWARF 调试信息 |
| `project.map_file` | string/null | `null` | TASKING 用 parse_symbols 时填 | TASKING MAP 文件路径，包含完整段布局和符号地址映射 |
| `project.lst_file` | string/null | `null` | GCC 用 parse_symbols 时填 | GCC objdump 生成的 .lst 反汇编列表文件 |
| `project.mdf_file` | string/null | `null` | 否 | TASKING MDF 文件路径，描述 space/chip/map 内存空间映射 |
| `project.hex_file` | string/null | `null` | 否 | Intel HEX 文件路径，可用于 wiggle_write / wiggle_pflash 烧写 |
| `project.toolchain` | string/null | `null` | 否 | 工具链类型：`"tasking"` / `"gcc"` / `null`（自动判断） |

> **注意**：GCC 默认不生成 .map 文件，只有 .lst 文件。TASKING 则同时有 .map 和 .mdf。

---

## TASKING 编译器完整配置示例

```json
{
    "wiggle_exe": "D:\\wiggle_MCP\\wiggle\\wiggle.exe",
    "aurix_flasher_exe": "D:\\wiggle_MCP\\AURIXFlasher\\AURIXFlasher.exe",
    "server": "localhost",
    "target": null,
    "device": null,
    "timeout": 120,
    "build": {
        "command": "C:\\TASKING\\TriCore\\vx-toolset\\bin\\cctc.exe -t makefile.mak all",
        "work_dir": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)",
        "timeout": 300
    },
    "project": {
        "elf_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)\\TC334_LK_Autosar_OS.elf",
        "map_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)\\TC334_LK_Autosar_OS.map",
        "lst_file": null,
        "mdf_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)\\TC334_LK_Autosar_OS.mdf",
        "hex_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (TASKING)\\TC334_LK_Autosar_OS.hex",
        "toolchain": "tasking"
    }
}
```

## GCC 编译器完整配置示例

```json
{
    "wiggle_exe": "D:\\wiggle_MCP\\wiggle\\wiggle.exe",
    "aurix_flasher_exe": "D:\\wiggle_MCP\\AURIXFlasher\\AURIXFlasher.exe",
    "server": "localhost",
    "target": null,
    "device": null,
    "timeout": 120,
    "build": {
        "command": "make -j4 all",
        "work_dir": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (GCC)",
        "timeout": 300
    },
    "project": {
        "elf_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (GCC)\\TC334_LK_Autosar_OS.elf",
        "map_file": null,
        "lst_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (GCC)\\TC334_LK_Autosar_OS.lst",
        "mdf_file": null,
        "hex_file": "D:\\workspace\\AURIX-v1.10.24-workspace\\TC334_LK_Autosar_OS\\TriCore Debug (GCC)\\TC334_LK_Autosar_OS.hex",
        "toolchain": "gcc"
    }
}
```

---

## 仅调试（不编译）的最小配置

如果不需要编译功能，只使用硬件调试和产物分析：

```json
{
    "wiggle_exe": "D:\\wiggle_MCP\\wiggle\\wiggle.exe",
    "aurix_flasher_exe": "D:\\wiggle_MCP\\AURIXFlasher\\AURIXFlasher.exe",
    "server": "localhost",
    "target": null,
    "device": null,
    "timeout": 120,
    "build": {
        "command": null,
        "work_dir": null,
        "timeout": 300
    },
    "project": {
        "elf_file": "D:\\path\\to\\your\\project.elf",
        "map_file": "D:\\path\\to\\your\\project.map",
        "lst_file": null,
        "mdf_file": null,
        "hex_file": null,
        "toolchain": null
    }
}
```

---

## 启动方式

```bash
# stdio 模式（供 AI 客户端直接调用）
python aurix_mcp_server.py --config mcp_config.json

# SSE 模式（HTTP 服务，默认端口 8000）
python aurix_mcp_server.py --config mcp_config.json --transport sse

# SSE 模式（自定义端口）
python aurix_mcp_server.py --config mcp_config.json --transport sse --port 8001

# Windows 一键启动
start_mcp.bat

# Windows 一键启动（SSE 模式）
start_mcp.bat --sse
```
