qt-mcp
Click on "Deploy 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., "@qt-mcpScaffold a Qt mainwindow project called demo"
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.
qt-mcp
一个本地 stdio MCP 服务器,把 Qt 5.14.2 + MinGW 工具链封装成 148 个 Python 工具,让 Claude 或任何 MCP 兼容客户端可以直接搭建、构建、运行、测试、格式化、部署、检查 Qt C++ 项目,不用离开对话。
概述:本项目把 Qt 5.14.2 工具链(qmake / mingw32-make / windeployqt / moc / lupdate / qmllint / clang-format / cppcheck / signtool / cc / git 等)封装成 148 个 MCP 工具,覆盖 Qt 项目的完整生命周期。MIT 协议,当前版本 v0.4.4。
项目特点
148 个工具覆盖 Qt C++ 项目完整生命周期(脚手架 → 构建 → 运行 → 测试 → 静态分析 → 主题样式 → 部署签名 → 数据库 → 网络 → 多媒体 → 部署分发 → 游戏状态 → 信号槽 → Q_PROPERTY → Git → 文档 i18n → 运行时 IDE → 构建系统)
本地 FTS5 全文检索:把 Qt 5.14.2 自带的 6613 页文档建成索引,100 ms 内搜到答案
AI 友好的诊断信息:
qt_build把编译器 / moc / uic / 链接器输出解析成结构化 JSON,并给出可执行的修复建议完整的 e2e 测试:577+ pytest 测试,每个工具配套 happy path + error path + edge case 验证
零样例代码污染:所有 Qt 二进制(
*.exe/*.dll)走 subprocess 调真实 Qt SDK,不引入 C++ 源码
Related MCP server: ladder-mcp
V0.4.4 新增 1 个工具
工具 | 作用 |
| 生成 QPalette C++ 代码(light/dark 主题),设置 11+ 个 QPalette 角色(Window/Base/Text/Highlight/Disabled 等)。配对 |
详见 CHANGELOG.md。
5 分钟上手
前置条件
Windows 10 / Windows 11
Qt 5.14.2 已装(默认路径
E:\Download_tools\QT\5.14.2\mingw73_64)Python ≥ 3.10
MinGW 730_64 已装
安装
git clone https://github.com/fan1959/qt-mcp.git
cd qt-mcp
pip install -e .配到 Claude Code
在 ~/.claude.json 或 MCP 客户端配置里加:
{
"mcpServers": {
"qt-mcp": {
"command": "python",
"args": ["-m", "server"]
}
}
}第一次使用
重启 Claude Code,在对话里说:
帮我用 Qt 写一个 hello world 项目
Claude 会调 qt_scaffold 生成项目骨架,再调 qt_build + qt_run 编译运行。整个过程你看着终端输出 + Claude 的解释,不用手动跑命令。
Qt 路径自定义
如果 Qt 不在默认路径,设环境变量:
set QT_MCP_QT_ROOT=D:\Qt\5.14.2\mingw73_64 # Windows
export QT_MCP_QT_ROOT=/opt/Qt/5.14.2/gcc_64 # Linux148 个工具完整清单
快速查找:不确定用什么工具?调
qt_cheatsheet即可拿到按类别分组的完整 quick reference(每次 sprint 加新工具时自动同步)。下面是这个清单的离线版本。
按 17 个类别组织。每条带一句话说明 + 与其他工具的关系。
1. 脚手架 / 生成器(14)—— 从零创建 Qt 项目
工具 | 用途 |
| 13 个模板(widget / mainwindow / dialog / qml_app / console_app / tictactoe_game / breakout_game / tasklist / music_player / cards_game / chess_game / generic_game / game_framework)。首选创建项目骨架。 |
| 自然语言描述 → 自动选模板(中文/英文关键词匹配)。更适合 LLM 调用:直接说"做个井字棋"即可。 |
| 生成单个 QObject 子类的 .h/.cpp/.ui 三件套。用于向现有项目加类。 |
| MVVM ViewModel(Q_PROPERTY + Q_INVOKABLE + signals),配 QML 用。 |
| QAbstractListModel / QAbstractTableModel 子类,棋牌数据层。 |
| 6 种 QML 组件(card / board / player / hand / deck / tile),含 qmldir。 |
| Qt 3D 项目骨架(4 模板:cube / sphere / scene / model_loader)。 |
| QGraphicsScene + QGraphicsView 教学项目(含拖拽)。 |
| SCU C++ 强化 9 章 12 个 topic 的 .cpp 教学片段。纯 C++ 无 Qt。 |
| 把平面 .pro 拆成 lib/ + app/(TEMPLATE=subdirs)。 |
| CMake 版本的 lib/app 拆分。 |
| .pro 文件 12 条 lint 规则(重复 SOURCES、Qt 模块 typo、TEMPLATE 缺失等)。 |
| 读写 .pro 变量(list/get/set/append/remove)。用于批量改 .pro。 |
| 扫描 .pro 引用 + #include,emit Graphviz DOT 依赖图。 |
2. 构建(6)
工具 | 用途 |
| qmake + mingw32-make + 结构化 JSON 诊断。最常用。 |
| 读 .qt_mcp_last_build.log 解析成 JSON(不重编译)。 |
| 移除 build artifacts(debug/ release/ moc_*.cpp/ ui_*.h 等)。 |
| build-debug/ + build-release/ + .pro.user + build_shadow.bat。 |
| ccache / sccache 检测 + 注入 QMAKE_CXX = ccache g++(5-10× 加速)。 |
| auto-rebuild on file change(watchdog)。 |
3. 运行 / 性能(4)
工具 | 用途 |
| 启动 .exe(foreground 或 detached GUI)。配 qt_kill_exe。 |
| QT_LOGGING_RULES=*=true 捕获 trace 日志。 |
| 启动延迟预算(first_cpu + first_window)。CI gate:是否在 budget_ms 内启动。 |
| 与 baseline JSON 对比。CI gate:是否比上次慢 >regression_ms。 |
4. 测试(6)
工具 | 用途 |
| QTestLIB C++ test exe + 解析 PASS/FAIL。 |
| qmltestrunner + 解析 TestCase 输出。 |
| libFuzzer skeleton(MinGW 需 clang++)。 |
| ASan / UBSan / TSan 集成。 |
| gcov + lcov → HTML 报告。 |
| 两个 lcov .info 对比覆盖率回归。 |
5. 静态分析 / Lint(15)
工具 | 用途 |
| cpplint + qmllint + clang-tidy 一站式。 |
| clang-tidy 自定义检查(bugprone-/performance-)。 |
| Qt 反模式 regex 检查(无 clazy 二进制依赖)。 |
| cppcheck --json + Qt library。 |
| McCabe 圈复杂度 per function(threshold 默认 12)。 |
| clang-format 修 / 审计。 |
| doxygen 注释覆盖率(@brief/@param/@return)。 |
| QtConcurrent / QFuture / QThreadPool 7 条反模式。 |
| QObject 跨线程并发 8 条规则。 |
| QObject 跨线程信号连接 4 条规则。 |
| qmllint 包装。 |
| QML 运行时性能 6 条规则。 |
| QML property 静态分析(unused/shadowed/mismatch)。 |
| .ui XML 布局反模式(5 条规则)。 |
| C++ 源码 a11y 扫描(缺 setAccessibleName / setObjectName 等)。 |
6. 信号与槽 / QObject(6)
工具 | 用途 |
| connect()/signals/slots 静态分析(text/json/dot)。 |
| 找无配对 disconnect 的 connect site(生命周期泄漏)。 |
| 自动修 4 类反模式(unique_connection/queued_connection/functor_to_pointer/orphan_slot_stub)。 |
| 静态 QObject 反射(signals/slots/Q_INVOKABLE/Q_PROPERTY)。 |
| 对比两 header set 的 QObject metadata 漂移。 |
| invokeMethod 调用计数 / 运行时 history / connect 拓扑热图。 |
7. Q_PROPERTY / Runtime 反射(5)
工具 | 用途 |
| 提取 Q_PROPERTY 渲染为 markdown/html/json 表。 |
| Q_PROPERTY 完整性(missing_notify / signal_not_found 等 7 条)。 |
| 生成 Qt helper .exe(QApplication + QObject + JSON 协议)。 |
| 运行时通过 helper set Q_PROPERTY。 |
| 运行时通过 helper invoke Q_INVOKABLE。 |
8. 主题 / 样式(3)
工具 | 用途 |
| QSS 完整 stylesheet(light/dark)。 |
| QSS 14 个 widget selector 子集。 |
| 解析 .qss 报告 selector / property / 重复。 |
| QPalette C++ 代码生成(light/dark)。配 qt_theme_gen 做完整 theming。 |
9. 多媒体 / 资源(5)
工具 | 用途 |
| 音频 list/probe/play snippet(QSoundEffect / QMediaPlayer)。 |
| ffmpeg 批量转 mp3/opus/wav/ogg/flac。 |
| 多分辨率 .ico from PNG(16/32/48/64/128/256)。 |
| QtMultimedia 启动项目(QMediaPlayer + QSoundEffect + QVideoWidget + .qrc)。 |
| SVG → PNG 多宽度(cairosvg + ImageMagick)。 |
10. 数据库(7)
工具 | 用途 |
| 创建 SQLite schema + seed data + CRUD 示例。 |
| FK integrity + orphan-row scan + integrity_check。 |
| SQLite → CSV/JSON/SQL dump。 |
| 索引建议器(EXPLAIN QUERY PLAN + CREATE INDEX SQL)。 |
| 两个 .db schema 对比 + migration SQL。 |
| SQLiteStudio 集成(QT_MCP_DBGUI_EXE 覆盖)。 |
| Qt + MySQL/MariaDB starter + SETUP.md(关键:Qt 5.14 MinGW 不带 QMYSQL)。 |
11. 网络(3)
工具 | 用途 |
| QTcpSocket / QTcpServer / QUdpSocket / QWebSocket 类骨架。 |
| QNetworkAccessManager HTTP 客户端(GET/POST + async/sync)。 |
| QNetworkAccessManager FTP 客户端(替代被移除的 QFtp)。 |
12. 文档 / i18n(7)
工具 | 用途 |
| FTS5 全文搜本地 Qt 5.14.2 文档(100ms 内)。 |
| 生成 Doxyfile + doxygen 运行。 |
| LLM 补 doxygen @brief/@param/@return(dry_run 默认)。 |
| lupdate + lrelease 完整流程。 |
| .ts 翻译覆盖率(每语言 finished/total)。 |
| 源 tr() vs .ts 同步(找 missing/orphan)。 |
| LLM 填 .ts unfinished 条目(dry_run 默认)。 |
13. 部署 / 分发(9)
工具 | 用途 |
| windeployqt 打包 DLL。 |
| 一站式:windeployqt + signtool + NSIS installer 串联。 |
| signtool.exe 单文件 / 批量签名。 |
| NSIS / Inno Setup 脚本 + build_installer.bat。 |
| CMake install() + CPack NSIS + windeployqt 集成。 |
| Microsoft Store (MSIX/AppX) 打包。 |
| Steamworks SDK 集成骨架(SteamAPI_Init + Achievements)。 |
| itch.io .itch.toml + butler push 脚本。 |
14. 环境 / SDK(6)
工具 | 用途 |
| 展示 Qt / MinGW 路径 + 版本。 |
| 健康检查(16+ 二进制 + 32/64-bit + PATH)。 |
| 列已装 Qt 5 模块(headers/libs/plugins)。 |
| aqtinstall 装 / 卸 Qt SDK。 |
| 两个 Qt SDK 安装对比(qmake 版本 + 模块差异)。 |
| 分析 .exe DLL 搜索路径(找缺失 Qt5*.dll)。 |
15. 文件 / 资源(6)
工具 | 用途 |
| .pro SOURCES/HEADERS/FORMS/RESOURCES 引用完整性。 |
| 两个 .pro 项目对比(变量 + SHA1)。 |
| 扫描图片目录 → emit .qrc。 |
| 高级 .qrc + 可选 Q_INIT_RESOURCE cpp。 |
| .qrc 增删改查(list/add/remove/validate)。 |
| 深挖 .qrc(naming / case-collision / depth / size / prefix)。 |
16. Git / 合规(4)
工具 | 用途 |
| 初始化 git repo(Qt 专用 .gitignore)。 |
| git 历史洞察(hot files / bus factor / churn / stale branches)。 |
| 自动生成 CHANGELOG.md 段(conventional-commits 分类)。 |
| license 头批量加(SPDX 检测)。 |
17. 游戏 / 状态 / UI 工具(12)
工具 | 用途 |
| QSettings 包装(APPDATA 持久化)。 |
| JSON save files(便携 + 易检查)。 |
| 玩家排行榜(leaderboard)。 |
| 命名计时器(turn time / total game)。 |
| 步骤回放系统。 |
| undo / redo 状态栈。 |
| 游戏成就系统。 |
| leaderboard widget(table 或 cards)。 |
| QPropertyAnimation 代码生成(fade/move/scale/rotate/color/sequence)。 |
| 键盘 / 鼠标 / 手柄 / focus chain / JSON 映射代码生成。 |
| 鼠标键盘事件录制/回放(pyautogui)。 |
| double_buffer / painter_path / doodle_board(v0.3.8 教学性增强)。 |
18. 运行时 / IDE(7)
工具 | 用途 |
| pywinauto 驱动运行中 Qt app(点击 / 输入 / 截图)。 |
| snapshot/find/details 三合一 widget 树探查(0xCarbon 借鉴)。 |
| 运行时 widget accessible properties 快照(借 0xCarbon qt_props)。 |
| 抓运行中 Qt app 的 QPlainTextEdit / QStatusBar 文本。 |
| Qt Creator 直接打开 .pro(跳过欢迎页)。 |
| Qt Creator 内 Ctrl+B + 启动 .exe。 |
| designer.exe 打开 .ui 文件。 |
| 生成 .vscode/* + .idea/* 元数据(VSCode/CLion debug)。 |
19. 构建系统 / 包管理(5)
工具 | 用途 |
| 生成 CMakeLists.txt(Qt5/Qt6 切换)。 |
| Conan recipes(conanfile.py + conanfile.txt + profiles)。 |
| conda-forge Qt 包(environment.yml + install 脚本)。 |
| qt_module_split_cmake 同主题。 |
| 见上文 部署/分发 段。 |
20. 杂项(5)
工具 | 用途 |
| 发现入口:打印 148 工具 quick reference(按 20 类别分组)。 |
| 单文件 moc 验证(不重编译)。 |
| objdump 列 .exe DLL 依赖。 |
| 终止 Qt 进程(taskkill /IM)。 |
| clean → build → run 三步健康检查。 |
| Qt log 按 level/category 过滤分析。 |
| 项目健康报告(LOC / 注释率 / 函数复杂度等)。 |
| 解析 Valgrind massif / heaptrack 输出。 |
| 把 ASan/UBSan/TSan 报告翻译成中文 + 修复建议。 |
| Qt 5 → Qt 6 自动迁移(6 条规则,dry_run 默认)。 |
|
|
| 视觉回归(pixel diff + baseline 捕获 + 多 DPI)。 |
总计:148 个工具(v0.4.4 + 1;v0.4.3 + 4;v0.4.2 + 4;v0.4.1 + 3;v0.3.8 + 7;v0.3.7 + 12;v0.3.6 + 5;v0.3.5 + 6;v0.3.4 + 5;v0.3.3 + 5;v0.3.2 + 5;v0.3.1 + 3;v0.3.0 + 4;v0.2.9 + 8;v0.2.8 + 6;v0.2.7 + 8;v0.2.6 + 5;v0.2.5 + 4;v0.2.4 + 5;v0.2.3 + 8;v0.2.0–v0.2.2 + 13)
决策指南:哪个工具做什么
你想做什么? | 用这些工具 |
从零做 Qt 项目 |
|
自然语言描述 → 自动选模板 |
|
加新类 |
|
加 QML 组件 |
|
完整暗色主题 |
|
写测试 |
|
静态分析 |
|
CI 质量门 |
|
打包部署 |
|
上 Steam |
|
上 Microsoft Store |
|
上 itch.io |
|
数据库持久化 |
|
MySQL 后端 |
|
HTTP API |
|
TCP 多人游戏 |
|
国际化 |
|
修 signal/slot 反模式 |
|
doxygen 注释补全 |
|
Qt 5 → Qt 6 升级 |
|
跨平台依赖管理 |
|
性能分析 |
|
大项目拆分 lib/app |
|
打开 Qt Creator |
|
在 VSCode/CLion 调试 |
|
找工具/查文档 |
|
完整工作流示例
示例 1:棋牌游戏全链路
1. qt_scaffold --template=chess_game --name=mygame
2. qt_theme_gen --mode=dark --output_file=mygame/dark.qss
3. qt_palette_gen --mode=dark --output_header=mygame/dark_palette.h
4. qt_qml_component_gen --components=card,board,tile
5. qt_assets --assets_dir=mygame/images/
6. qt_model_gen --class_name=CardModel
7. qt_viewmodel_gen --class_name=GameViewModel --properties=[...]
8. qt_state --action=save --key=score --data={...} # 存档
9. qt_score --action=add --player=Alice --score=100 # 排行榜
10. qt_timer --action=start --timer_id=turn1
11. qt_input --action=keyboard --key_sequence=Esc --slot_name=onPause
12. qt_audio_convert --input_files=sfx/*.wav --output_format=mp3
13. qt_anim --animation_type=fade
14. qt_network --skeleton_type=tcp_server
15. qt_achievement --action=define --achievement_id=first_win
16. qt_undo --action=push --state_data={...}
17. qt_build
18. qt_test
19. qt_high_dpi_test --scale_factors=1.0,2.0
20. qt_screenshot_diff --image_a=baseline.png --image_b=current.png
21. qt_clazy_check --project_dir=mygame/
22. qt_translation_validate --ts_files=mygame/i18n/*.ts
23. qt_deploy_bundle --executable=mygame/release/mygame.exe
24. qt_signature_batch --action=sign --directory=mygame/deploy/示例 2:Qt 5 → Qt 6 升级
1. qt_modernize_qt5_to_qt6 --project_dir=. --rule_ids=qregexp_to_qregularexpression
2. qt_modernize_qt6_string_literal --project_dir=. --apply
3. qt_build # 验证编译通过
4. qt_test # 验证测试通过示例 3:CI 质量门(GitHub Actions)
- run: qt_smoke_test --project_dir=. --run_seconds=10
- run: qt_format_check --target=. --init_clang_format=true
- run: qt_perf_budget --executable=release/myapp.exe --budget_ms=2000
- run: qt_test_coverage_diff --baseline_info=coverage_old.info --current_info=coverage.info环境变量
变量 | 默认值 | 作用 |
|
| Qt 5.14.2 安装根目录 |
|
| Qt 32-bit 安装目录 |
|
| 64-bit MinGW bin/ |
|
| sandbox 根目录,所有 MCP 输入输出必须在此目录下 |
| (未设) | 设为 |
|
| ffmpeg 路径( |
|
| SQLite GUI( |
|
| cppcheck 路径 |
|
| Qt 版本(写入元数据) |
架构
Claude / MCP 客户端
│ stdio JSON (一行 JSON 一个命令)
▼
server.py (FastMCP)
│
├─ 148 个 @mcp.tool 装饰的 async def qt_xxx(params) → str
│
├─ 共享 helpers
│ ├─ _json_footer() # 每个工具结尾加 {ok, data}(QT_MCP_JSON 门控)
│ ├─ _require_sandbox() # 拦截 sandbox 外路径
│ └─ _strip_comments() # 静态分析前剥离注释
│
└─ subprocess 调 Qt SDK + 外部工具
├─ qmake / mingw32-make / windeployqt
├─ moc / uic / rcc / lupdate / lrelease
├─ qmllint / clang-format / cppcheck / ffmpeg
├─ objdump / signtool / git
└─ pywinauto + UI Automation (运行时 widget 探查)详细架构图见 docs/ARCHITECTURE.md。
跑测试
cd qt-mcp
unset QT_MCP_SANDBOX # 让所有工具用默认 sandbox
python -m pytest -q # 577+ passed in ~3min或跑单个套件:
python -m pytest tests/full/e2e_new_tools_v32.py -v # V0.4.4 新工具(10 tests)
python -m pytest tests/light/ -v # 快速 smoke(不需要 Qt SDK)CI 在每次 push / PR 时自动跑(.github/workflows/ci.yml):Windows runner + Python 3.12 + 全套测试。
项目结构
qt-mcp/
├── server.py ⭐ 148 个工具全在这一个文件(约 30K 行)
├── pyproject.toml pip install 配置
├── README.md 本文件
├── CHANGELOG.md 版本历史
├── PROJECT_FILES.md 文件结构详解
├── LICENSE MIT 协议
│
├── docs/ 架构图 + 演示截图
├── examples/minimal/ 5 分钟跑通的 hello Qt 示例
├── tests/ 577+ pytest(tests/full + tests/light)
├── .github/ issue / PR 模板 + GitHub Actions CI
└── docs_data/ Qt 文档 FTS5 索引(51 MB,由 build_docs_index.py 生成)详见 PROJECT_FILES.md。
添加新工具
参考 qt_palette_gen(V0.4.4 新加)的流程:
在
server.py合适位置插入 Pydantic Input +@mcp.tool函数(约 200 行)在
qt_cheatsheetcatalog 加一行:"qt_xxx": ("category", "description")加 e2e 测试到
tests/full/e2e_new_tools_v<N+1>.py(至少 5 个测试:happy / edge / error)更新 README.md 工具表 + 决策指南 + CHANGELOG.md 加 V0.X.Y 段
跑
pytest -q验证 + 新套件 10/10 PASS提醒用户重启 Claude Code(stdio MCP server 缓存工具列表,加完要重启才生效)
协议
MIT 协议。可随便用、商用、改源码、闭源分发。详见 LICENSE。
贡献
欢迎 PR。提交前请确认:
新功能有 Pydantic Input + 完整 docstring (Args/Returns/Raises/Note) + 至少 5 个 e2e 测试
现有测试全 PASS(577+)
更新 README.md + CHANGELOG.md
.github/PULL_REQUEST_TEMPLATE.md检查清单全勾
仓库
当前版本: V0.4.4 (2026-09)
This server cannot be deployed
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA complete MCP server that gives LM Studio's Qwen3 (or any local LLM) full coding agent capabilities including 80+ tools for file operations, command execution, git, web search, memory, planning, and a full skills system.13MIT
- AlicenseBqualityCmaintenanceWindows-first MCP bridge for Kimi Code CLI, exposing code analysis, editing, sessions, and diagnostics as tools for AI agents.621 npmMIT
- AlicenseNot gradedqualityBmaintenanceA local MCP server that gives AI agents access to developer tooling — GitHub (read-only), documentation search, and web research — via stdio transport.MIT
- AlicenseAqualityCmaintenanceAn MCP server for capturing screenshots of Qt/desktop windows and performing filesystem operations, enabling AI clients to inspect and modify project files.15MIT