vscode-cube-mcp
This MCP server wraps STM32CubeMX's command‑line scripting mode, letting AI assistants automate STM32 project workflows without opening the GUI.
cubemx_load – Read key configuration (pins, peripherals, clock) from an
.iocfile (read‑only).cubemx_configure – Load an
.ioc, apply a sequence ofsetcommands to modify it, and save.cubemx_generate – Generate HAL code from an
.iocinto a specified directory.cubemx_export_pinout – Export the pin configuration to a CSV file (read‑only).
cubemx_new_project – Create a new project from embedded templates (MCU, toolchain, clock, peripherals).
cubemx_remove_peripheral – Remove a peripheral from an
.ioc.cubemx_add_source – Add custom source files to the CMake build list.
cubemx_script – Execute arbitrary CubeMX script commands as an advanced escape hatch.
Note:
cubemx_new_project,cubemx_remove_peripheral, andcubemx_add_sourceare described in the README but may not be present in the current server schema.
For security, all file paths are restricted to pre‑defined allowed root directories.
Allows generating and modifying CMake build configurations for STM32 projects, including adding custom source files to CMake source lists.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vscode-cube-mcpLoad OLED_HAL.ioc and generate HAL code"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vscode_cube_mcp
MCP(Model Context Protocol) server,封装 STM32CubeMX 官方命令行脚本模式(-q),
让 AI 助手可以直接加载 .ioc 工程、改引脚/外设配置、生成 HAL 代码、导出引脚表,全程无需打开 CubeMX GUI。
功能一览
工具 | 说明 |
| 加载 .ioc 并回读关键配置(只读) |
| 加载 .ioc,执行 |
| 加载 .ioc 并生成 HAL 工程 |
| 导出引脚配置 CSV(只读) |
| 从零生成新工程(内置模板库,无需预先 .ioc) |
| 从 .ioc 移除外设 |
| 把自定义源文件加入 CMake 源列表 |
| 任意 CubeMX 脚本命令序列(高级/逃生通道) |
Related MCP server: Chiplab
要求
Python >= 3.10(Windows 建议用官方安装版,不要用 msys2/Git 自带的 python,见 FAQ)
STM32CubeMX 6.x(ST 专有软件,请从 ST 官网 免费下载并自行遵守其许可;本工具仅运行时调用其命令行,不包含、不修改其代码)
快速开始(Windows)
三步,约 2 分钟。以下命令都在 PowerShell 里执行。
第 1 步:安装
pip install vscode-cube-mcp装完后先验证一下(能打印出版本号就说明装好了):
python -m pip show vscode-cube-mcp如果提示
pip不是命令或装到了奇怪的位置,先看文末 FAQ「pip 报错 / 装不上」。
第 2 步:配置环境变量(永久生效)
用 setx 写入用户级环境变量($env: 的临时写法只对当前窗口有效,重启客户端后就没用了,不要用):
setx ST_CUBEMX_EXE "C:\MINE\STM\STM\STM32CubeMX.exe"
setx ST_CUBEMX_ALLOWED_ROOTS "C:\MINE\STM32Project"把路径换成你自己的:
ST_CUBEMX_EXE:本机STM32CubeMX.exe的完整路径;ST_CUBEMX_ALLOWED_ROOTS:允许 AI 访问的工程根目录(多个用;分隔,如C:\MINE\STM32Project;C:\MINE\OTHER)。
设置完成后关掉并重新打开客户端(Reasonix / VS Code 等),环境变量才会被读到。
第 3 步:接入 MCP 客户端
把下面配置加到你所用客户端的 MCP server 列表里(以 mcpServers 配置为例):
{
"mcpServers": {
"Vscode_cube_mcp": {
"command": "python",
"args": ["-m", "cubemx_mcp"],
"env": {
"ST_CUBEMX_EXE": "C:/MINE/STM/STM/STM32CubeMX.exe",
"ST_CUBEMX_ALLOWED_ROOTS": "C:/MINE/STM32Project"
}
}
}
}说明:
env里的路径和上面第 2 步二选一即可(都设也行,env优先)。如果不写env,就必须依赖第 2 步的系统环境变量;JSON 里 Windows 路径建议用正斜杠(
C:/...)或双反斜杠(C:\\...),避免转义问题;
"command": "python"要求python在 PATH 里且就是装有本包的解释器;如果不对,改成"command": "py", "args": ["-m", "cubemx_mcp"]或写解释器完整路径(见 FAQ)。
验证
打开客户端,发一条消息让 AI 调用
cubemx_load(给它一个 .ioc 路径);或在终端手动冒烟:
python -m cubemx_mcp启动后不报错、不立刻退出,即 server 正常(它是 stdio 服务,会挂起等待输入,Ctrl+C退出)。
配置项(环境变量)
变量 | 默认 | 说明 |
| PATH 中的 | STM32CubeMX 可执行文件完整路径 |
| 当前工作目录 | .ioc / 生成路径允许访问的根目录, |
|
| 单次 CubeMX 调用超时秒数,机器慢可调大 |
安全设计:所有 .ioc / 生成路径必须在
ST_CUBEMX_ALLOWED_ROOTS白名单内,白名单外的路径会被拒绝。
使用示例
让 AI 助手做的事情都会通过上述 8 个工具完成,例如:
「加载
D:\proj\Blink.ioc,把 PB13 改成 GPIO_Output 并加标签 LED」→cubemx_configure「用 STM32F103C8T6 从零建一个工程,LED 在 PB13,带 I2C1」→
cubemx_new_project「把 OLED.c 加进编译,重新 generate 后也保留」→
cubemx_add_source
内置模板库(templates/,按芯片型号命名,如 STM32F103C8T6.ioc、STM32F103C8T6_tim2_internal.ioc),新增芯片只需把该芯片 6.18 原生 .ioc 放进 templates/。
cubemx_new_project 参数(设计原则:默认值而非强制)
参数 | 默认 | 说明 |
| 必填 | 工程名(仅字母/数字/下划线) |
| 必填 | 生成目标目录(须在白名单内) |
|
| 芯片型号,匹配 |
| 按 mcu 查找 | 指定模板 .ioc 路径,优先于 mcu |
|
| 目标工具链,可覆盖为 |
|
| 每个外设生成独立 |
|
| PLL 时钟源,默认外部晶振 72MHz; |
|
| PLL 倍频(8MHz×9=72MHz),可覆盖(如 HSI 配 16 → 64MHz) |
| 空 |
|
默认值而非强制:默认生成 CMake 工具链 + 外设独立
.c/.h+ 72MHz(HSE×9), 显式传其他值即覆盖,不会被工具卡死。写 .ioc 时会按默认值补回RCC.PLLSourceVirtual=HSE(CubeMX 的 set RCC 命令可能把该字段弄丢,导致时钟静默降级 HSI);生成后若仍丢失,返回值会附 ⚠ 时钟警告。
升级到新版本
升级到 PyPI 最新版:
python -m pip install -U vscode-cube-mcp
python -m pip show vscode-cube-mcp # 确认版本号升级后必须重启客户端(Reasonix / VS Code 等),MCP server 进程才会加载新代码; 若重启后工具参数仍是旧的,等几秒或新开一个会话(host 侧工具快照可能滞后)。
维护者发布新版流程(改版本号 →
python -m build→twine upload→git tag+ push) 见README.dev-notes.md。
常见问题 FAQ
Q:pip 装上了,但 python -m cubemx_mcp 报 ModuleNotFoundError: No module named 'cubemx_mcp'
装的解释器和 python 指向的不是同一个。确认:
python -m pip show vscode-cube-mcp # 能显示才算装在当前 python 上若 python 指向 msys2/Git/系统 Store 的 python,换成官方 Python(py -m pip install vscode-cube-mcp,py -m cubemx_mcp),或直接写解释器全路径到客户端配置。
Q:客户端里 AI 报找不到 STM32CubeMX / _find_cubemx 失败
环境变量没传进 server 进程。检查:① 是否用了 setx(临时 $env: 会失效);② 是否重启了客户端;③ ST_CUBEMX_EXE 路径是否存在(在 PowerShell 里 Test-Path "C:\...\STM32CubeMX.exe" 应为 True)。
Q:报错说路径不在允许范围内(allowed roots)
把工程所在目录加进 ST_CUBEMX_ALLOWED_ROOTS(多个用 ;),改完重启客户端。如果写在客户端 env 里,检查 JSON 的 ; 和路径是否被转义破坏了。
Q:CubeMX 调用很慢或超时
首次启动 CubeMX 较慢是正常的;把 ST_CUBEMX_TIMEOUT 调大(如 600)。另外确认没有残留的 CubeMX / Java 进程占着工程文件。
Q:CubeMX 弹「Resolve Clock Issues」
通常是 .ioc 时钟树不自洽(如 HSE 未启用但 PLL 选了 HSE)。这个属于工程配置问题,详见 README.dev-notes.md 的「从零配置时钟实战」。
开发与测试
python -m unittest test_cubemx_mcp -v # 运行单元测试(不依赖 CubeMX)技术栈:Python >= 3.10 + mcp SDK 2.x(stdio);打包 setuptools + build + twine;目标平台 Windows(跨平台可用)。
许可与依赖声明
本工具代码:MIT License(见
LICENSE)mcp SDK(唯一 Python 依赖):MIT License(modelcontextprotocol/python-sdk)
STM32CubeMX:ST 专有软件,运行时外部调用,需用户自备并遵守其许可条款
更多资料
docs/install-claude-code.md:Claude Code(终端版)安装配置指南README.dev-notes.md:开发笔记——ST 扩展识别工程踩坑、从零配置时钟实战、各外设实测状态与能力边界、借壳法原理templates/README.md:各外设(GPIO/I2C/TIM/时钟)的配置命令与坑
更新日志
0.3.1(2026-08-07)
修复:pip 安装版
cubemx_new_project找不到模板(_project_template补sys.prefix/templates查找路径——data-files 安装时把模板放在sys.prefix下)
0.3.0(2026-08-07)
新功能:
cubemx_new_project参数化,设计原则 "默认值而非强制":toolchain默认"CMake",可覆盖(EWARM V8.32 / MDK-ARM 等)couple_files默认True(每个外设生成独立.c/.h),可覆盖为False集中到 main.cclock_source默认"HSE"+pll_mul默认9(8MHz×9=72MHz),写 .ioc 时按默认值补回RCC.PLLSourceVirtual=HSE;生成后 HSE 仍丢失会返回 ⚠ 时钟警告
文档:README 新增
cubemx_new_project参数说明;.gitignore忽略*.bak
0.2.2(2026-08-06)
修复:pyproject 作者元数据(
pip show的 Author 字段显示正确)
0.2.1(2026-08-06)
文档:README 重写为面向用户的手册;新增 Claude Code 安装指南
0.2.0(2026-08-06)
新功能:从零生成 HAL 工程(
cubemx_new_project,内置模板库)新功能:外设管理工具(
cubemx_remove_peripheral/cubemx_add_source)新功能:TIM 内部时钟工程化(借壳法,
templates/STM32F103C8T6_tim2_internal.ioc)打包:templates 随 wheel 分发(PyPI 正式发布)
0.1.1(2026-08-05)
文档:补充构建链说明(CMake+Ninja)
0.1.0(2026-08-05)
首个版本:MCP server 封装 STM32CubeMX 命令行脚本模式(
-q)
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceStateful MCP server for driving debug probes (J-Link) to flash, debug, and inspect embedded targets. Enables AI agents to perform flash, memory, breakpoint, and ELF/SVD-aware operations conversationally.4111MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for simulating firmware on virtual microcontroller instances, allowing AI agents to upload, run, and read UART output from supported boards such as STM32 and Nordic.16MIT
- AlicenseCqualityAmaintenanceMCP server for AI-assisted MCU and embedded firmware debugging. It connects to real hardware via debug probes, inspects CPU/memory/peripherals, manages Keil builds, and provides structured evidence for fault diagnosis.434MIT
- FlicenseAqualityCmaintenanceMCP server for scaffolding, building, and flashing bare-metal STM32C011 firmware using the STM32CubeCLT toolchain. Exposes tools for project scaffold, build, flash, and probe listing.4
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for generating rough-draft project plans from natural-language prompts.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
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/h666zhang/vscode-cube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server