mcpField
Q
Quickshell MCP

Quickshell MCP

本地服务
github.com/franklinnolasco7开发工具09 周前更新

关于 Quickshell MCP

Quickshell MCP 是面向使用 Quickshell、QML 和 Qt 的编码 Agent 的 MCP 服务。它依据文档、官方示例和实际项目实现,为搜索、验证、迁移建议及项目检查提供信息。

主要功能

  1. 01搜索 Quickshell 与 Qt/QML 文档
  2. 02查找实现模式和示例
  3. 03验证 QML 与 API 兼容性
  4. 04分析版本间迁移
  5. 05检查和测试项目及运行时会话
  6. 06生成有来源依据的 QML 组件

适用场景

  1. 01编写 QML 前核实 API
  2. 02检查组件是否适用于指定 Quickshell 版本
  3. 03规划不同版本间的 QML 升级
  4. 04检查或测试 Quickshell 项目

MCP 相关

向 MCP 客户端提供文档搜索、QML 验证、兼容性、迁移、项目和运行时工具。可使用 stdio;配置后也可使用 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"franklinnolasco7-quickshell": {
"command": "uvx",
"args": [
"quickshell-mcp"
]
}
}
}
启动命令uvx quickshell-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiquickshell-mcp2.17.0

工具

102

收录的工具列表 · 更新于 3 周前

参数类型必填说明
refreshboolean否

详细介绍

quickshell-mcp

一个 MCP 服务,可将 AI 编码 Agent 连接到 Quickshell、QML 和 Qt 的实时文档。

License: MIT PyPI MCP Registry Python codecov Tests


在 Agent 编写或运行代码之前,搜索 API、发现实现模式、解释错误、验证 QML、检查项目、运行测试并分析实时 Shell。

为什么

Quickshell 变化很快,而 AI 编码 Agent 可能会根据过时或不完整的训练数据生成 QML。quickshell-mcp 让 Agent 能够依据最新文档验证 API、查找现有实现模式、验证生成的 QML,以及检查或测试项目,而不是凭记忆猜测。

重要

如果来源之间存在冲突,始终以官方文档为准。

目录

快速开始

pip install quickshell-mcp        # or: uvx quickshell-mcp

然后将 MCP 客户端指向它(请参阅下文的配置)。

也可通过 Model Context Protocol Registry 安装。

从源码安装
git clone https://github.com/franklinnolasco7/quickshell-mcp
cd quickshell-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
使用 Nix 安装
nix run github:franklinnolasco7/quickshell-mcp
使用 Docker 安装
docker build -t quickshell-mcp .
docker run --rm -i quickshell-mcp     # speaks MCP over stdio
## 提供的功能
Quickshell 文档按版本区分的类型参考、指南和更新日志
Qt/QML 文档QtQuick、Controls、Layouts 和其他基础类型
官方示例可运行的 Quickshell 示例配置
真实项目实现可搜索 Caelestia、Noctalia 和 dots-hyprland 的模式
错误说明基于可靠依据诊断 QML 和 Quickshell 错误
QML 验证静态检查类型、属性、信号、导入项和版本兼容性
版本兼容性确认某个 API 或 QML 代码片段是否适用于特定 Quickshell 版本
迁移分析升级后 QML 配置需要进行哪些更改才能继续运行
组件生成根据自然语言描述生成基于可靠依据的精简 QML 组件
项目智能分析分析、映射、搜索和分类磁盘上的项目
项目验证按文件验证、检查代码风格、检查兼容性并迁移整个项目
运行时会话启动并检查隔离的 qs 进程,需主动启用且会修改状态
视觉和 UI 检查窗口、屏幕截图、UI 树、属性和快照
运行时测试针对运行中的会话执行机器可读的测试步骤、测试套件和断言
性能分析有限采样,以及对组件、绑定和定时器进行静态分析
桌面适配器只读检查 Hyprland、PipeWire、D-Bus 和系统
知识 2.0版本差异、API 图谱、最佳实践、模式比较和来源信息
智能分析项目记忆、架构建议、回归检测和任务计划
Agent 编排端到端地构建、调试、迁移、测试和优化功能
编码助手通过一条自然语言请求调用合适的工具,并返回结构化、基于可靠依据的结果
CI 入口无头验证、屏幕截图、运行时测试、兼容性检查和迁移脚本

外部工具

大多数工具只需要 quickshell-mcp 包。检查真实桌面的工具会在运行时检测依赖项;如果缺少依赖项,会报告其不可用,而不是直接失败。运行时会话、UI 检查和桌面适配器都采用这种方式。

依赖项用途
qs(Quickshell 二进制文件)运行时会话、UI 检查、测试、qs ipc
grim屏幕截图
ImageMagick(compare、identify)屏幕截图差异比较、视觉检查
hyprctl、pw-cli、busctl桌面适配器(均为可选;缺少时会优雅降级)

无头 CI Shell(nix develop .#ci)会打包 quickshell、weston、grim 和 imagemagick,以便在没有桌面的环境中运行运行时测试和屏幕截图任务。

知识来源

此服务由六个来源提供支持:Quickshell 文档、Qt/QML 文档、Quickshell 官方示例,以及三个真实 Shell(Caelestia、Noctalia、dots-hyprland)。这些 Shell 是实用参考资料,并非权威 API 定义。有关冲突时的解决方式,请参阅来源优先级。

配置

opencode(opencode.json):

{
  "mcp": {
    "quickshell": {
      "type": "local",
      "command": ["/absolute/path/to/quickshell-mcp/.venv/bin/quickshell-mcp"],
      "enabled": true
    }
  }
}

Claude Desktop:在 claude_desktop_config.json 中使用相同的 JSON,并将其置于 mcpServers 下。

如需使用 HTTP 传输,请设置 QUICKSHELL_DOCS_MCP_TRANSPORT=http(以及可选的 HOST/PORT)。

提示

设置 QUICKSHELL_DOCS_MCP_LOG=DEBUG,即可在 stderr 中记录详细的请求日志。

保留 QUICKSHELL_DOCS_MCP_* 环境变量前缀,以兼容早期版本。

工具

完整的工具列表按功能分组,并标注了会修改状态及高风险的工具,请参阅 docs/TOOLS.md。

典型工作流

flowchart TD
    A[Search] --> B[Find implementation pattern]
    B --> C[Verify API]
    C --> D[Write QML]
    D --> E[Validate]
    E -->|errors| F[Fix errors]
    F --> E
    E -->|clean| G[Done]

    classDef discover fill:#cdeaff,stroke:#1c6dd0,stroke-width:1px,color:#0b3661
    classDef build fill:#ffe3c2,stroke:#d8871b,stroke-width:1px,color:#5c3a05
    classDef check fill:#c9f2d8,stroke:#1f9e5c,stroke-width:1px,color:#0b3d24
    classDef fix fill:#ffd1d1,stroke:#d13b3b,stroke-width:1px,color:#5c0b0b
    classDef done fill:#e3d6ff,stroke:#7b3ff0,stroke-width:2px,color:#2f1466

    class A,B,C discover
    class D build
    class E check
    class F fix
    class G done
示例

与其让 AI Agent 猜测如何在 Quickshell 中创建工作区指示器,不如让它搜索 API、查找现有实现、验证指定版本、生成 QML,并在运行前进行验证:

flowchart LR
    A[quickshell_search_all] --> B[quickshell_find_pattern]
    B --> C[quickshell_list_versions /<br/>quickshell_get_type]
    C --> D[quickshell_generate_component]
    D --> E[quickshell_validate_qml]
    E --> F[quickshell_explain_error]

    classDef tool fill:#cdeaff,stroke:#1c6dd0,stroke-width:1px,color:#0b3661
    classDef action fill:#ffe3c2,stroke:#d8871b,stroke-width:1px,color:#5c3a05
    classDef debug fill:#ffd1d1,stroke:#d13b3b,stroke-width:1px,color:#5c0b0b

    class A,B,C tool
    class D,E action
    class F debug

高级用法

静态验证、版本兼容性、迁移、组件生成和编码助手:捕获错误的 QML、验证各版本的 API 支持情况、规划升级、生成组件,或通过助手处理整个开发任务
静态验证

quickshell_validate_qml 会使用其他工具所用的相同 Quickshell 和 Qt 文档索引检查 QML。它可以捕获:

  • 未知的 Quickshell 和 Qt 类型
  • 未知的属性、方法和信号
  • 缺少导入
  • 明显的类型不匹配
  • 请求的 Quickshell 版本中不可用的 API

quickshell_validate_qml 是对 qmlls 的补充,并不能取代它。动态 JavaScript 和本地组件解析不在其范围内。

{"source": "PanelWindow { foo: 123 }", "version": "latest", "filename": "panel.qml"}
版本兼容性

quickshell_check_compatibility 会检查 Quickshell API、QML 属性/方法/信号、类型或整段代码片段是否适用于特定版本。传入 api、type 或 code 其中之一;使用 version 选择版本(或者使用 from_version/to_version 指定范围)。

它不会仅依据最新文档页面进行判断,而是交叉参考所请求版本的类型索引和页面以及更新日志;如果证据不足,则返回 uncertain。Qt/QML 类型(Rectangle、Item 等)会显示为 compatible,并带有 origin: "qt",因为它们是否可用取决于 Qt 版本,而非 Quickshell 版本。

{"api": "PanelWindow.exclusiveZone", "version": "v0.2.0"}
{"api": "Quickshell.shellRoot", "version": "v0.3.1"}
{"code": "PanelWindow { exclusiveZone: 1 }", "version": "v0.1.0"}

结果包含判定、版本依据(已知的最早/最新版本)、任何重命名或变更及可能的替代项、匹配的更新日志条目,以及引用的文档 URL。

版本间迁移

quickshell_migrate 会分析将 QML 配置从一个 Quickshell 版本升级到另一个版本时必须进行的更改,以确保其继续正常工作。传入 QML 源代码(或单个 api/type),以及 from_version 和 to_version(两者均为必填项,且顺序必须从旧到新)。

它会报告每个已移除、重命名、弃用或变更的 API,并提供严重性、位置、旧 API 和新 API、必须更改的原因、建议的迁移方案、置信度以及引用来源。它还会扫描两个版本之间提及所引用符号的破坏性变更日志条目,因此,在中间版本中生效的重命名会附上生效版本。问题会分类为 definite(有文档或更新日志作为依据)、likely(有记录但影响较小,例如弃用)或 manual_review(证据表明发生了变更,但无法确证具体迁移方式)。

该工具只进行分析并提供建议,不会重写代码或文件。

{
  "code": "Quickshell { shellRoot: \"/tmp\" }\nPanelWindow { exclusiveZone: 1 }",
  "from_version": "v0.1.0",
  "to_version": "v0.3.1"
}

报告包含总体判定(compatible、changes_required、uncertain)、各问题的发现结果,以及按顺序排列的迁移计划。

组件生成

quickshell_generate_component 可将自然语言描述转换为最简 QML 组件,例如“创建一个 Hyprland 工作区指示器”“带动画的音量 OSD”“包含工作区、时钟和系统托盘的顶部栏”“弹出式控制中心”或“通知弹窗”。

{"description": "volume OSD", "version": "latest", "compositor": "hyprland"}

生成器会搜索请求(使用与其他工具相同的搜索和模式工具),根据章节模板构建一个小型组件,然后使用 quickshell_check_compatibility 检查其中引用的每种 Quickshell 类型、属性和方法是否兼容指定版本,并通过 quickshell_validate_qml 验证组装后的 QML。无法验证的 API 会显示在结果中,而不会被悄悄输出,因此输出绝不会将未经验证的 API 冒充为有效 API。

结果包含生成的 QML,以及:

  • dependencies:导入项、所需的 Quickshell 类型和 Qt 类型
  • verified_surface:组件使用的每种类型中有文档说明的属性、方法和信号,便于你根据已验证成员重写 QML
  • integration:合成器和外部服务要求(Hyprland 套接字、PipeWire、通知守护进程等)
  • verification:各 API 的兼容性判定,以及总体 verified/unverified 标记
  • validation:静态验证器的诊断信息
  • references:可供对照的文档、官方示例和实际实现
  • assumptions:所采用的保守选择(默认配色、无法识别的合成器、未嵌入的请求窗口)

compositor="hyprland" 会生成 Hyprland 专用类型;其他任何值都会被注明,且不会生成合成器专用代码。若请求与任何模板都不匹配,仍会返回 verified_surface 和 references,因此你可以自行组合组件。每个生成的文件只包含一个顶层窗口:如果请求提到了多个窗口(例如状态栏和通知弹窗),则只生成主要窗口,其余窗口会列在 assumptions 下,而不会嵌套其中。该工具不会向磁盘写入任何内容。

编码助手

quickshell_coding_assistant 是其他工具之上的编排层,适用于需要调用多个工具的任务。向它提供一条自然语言开发请求,它就会运行一条固定的阶段流水线:搜索、验证、生成、校验、迁移、研究(出处),以及可选的执行。每个阶段只会启用请求所需的工具。结果结构化且有来源依据,包含以下部分:需求理解、相关 API、推荐方案、实现参考、兼容性、校验、待解决问题、来源、出处,以及末尾的 grounded_result。

{"request": "Build a Hyprland workspace bar"}
{"request": "Why is this PanelWindow failing?", "code": "PanelWindow { foo: 1 }"}
{"request": "Migrate this shell from v0.2 to v0.3", "from_version": "v0.2.0", "to_version": "v0.3.1"}
{"request": "Find an implementation of a volume OSD and adapt the pattern"}

请求会映射到五种意图,每种意图都会运行相关的流水线阶段:

  • build(“构建/添加/制作一个……”)会将搜索和验证阶段交给 quickshell_generate_component,由它在内部运行这两个阶段,并将其通过校验的 QML 作为 grounded_result。
  • debug(“为什么 X 失败了?”、“修复此错误”)会运行搜索(quickshell_explain_error)和验证(相关类型页面 + 兼容性),然后进行校验(quickshell_validate_qml);grounded_result 是诊断结果和修复方案。
  • migrate(“从 vX 迁移/升级到 vY”)会运行搜索(未提供代码时查找破坏性变更日志)、针对目标版本进行校验,以及迁移(quickshell_migrate);grounded_result 是按顺序排列的迁移计划。
  • pattern(“查找某个实现……并进行调整”)会运行搜索(quickshell_find_pattern,并提供排名最高的实现的简短摘录)和验证(检查提示中 API 的兼容性);grounded_result 是该摘录及已验证的 API。
  • research(“X 是什么?”、“我该如何……?”)会运行搜索(所有来源)和验证(排名靠前的类型页面与指南页面 + 兼容性);grounded_result 会列出已确定的类型和指南。

默认情况下不执行任何操作:助手绝不会修改文件。若要让它应用明确且经过校验的编辑集,请同时传入 permitted_execution=True、edits=[...](格式与 quickshell_apply_patch 相同)以及 project= 路径。对于未获准的请求,系统会记录一个执行步骤,然后继续以只读方式运行。

版本和合成器信息可从请求文本中获取(0.2、hyprland),也可通过 version/compositor/from_version/to_version 参数传入。运行时会根据已发布的版本列表解析宽泛的版本提示。每个步骤都会独立运行,因此某个来源出错时,错误会出现在 errors 中,而不会导致整个请求失败。结果包含一条记录所用工具的 orchestration 跟踪信息,以及去重后的 sources 列表。方案步骤上的 basis 标签和 API 条目上的 verified 标记,可区分已验证事实(来自官方文档)与建议。

**适用场景:**多步骤开发请求,或尚不确定该使用哪个单一工具时。对于单项且范围明确的查询(一个类型页面、一条错误信息、一次版本检查),请直接调用相应工具;这样成本更低,也能获得原始答案。

项目、运行时、检查、测试、性能与 Agent:在磁盘上的真实项目和运行中的 shell 中工作
项目分析

quickshell_project_analyze、quickshell_project_map 和 quickshell_project_find 会读取磁盘上的项目,但不会执行任何内容。分析结果会明确标记未知值;映射会区分已确认和推断出的边,并报告循环;查找会搜索项目文件并提供位置和上下文。quickshell_project_dependencies 会将导入项归类为必需、可选、已检测或缺失。

{"project": "/path/to/shell"}

quickshell_project_validate、quickshell_project_lint、quickshell_project_compatibility 和 quickshell_project_migrate 会对每个 QML 文件运行与单文件工具相同的引擎,并按文件和严重程度分组。Lint 使用可扩展的规则表;兼容性检查不会夸大运行时不兼容情况;迁移会生成机器可读的拟议编辑,且绝不会写入文件。

### 运行时会话

运行时工具会在隔离的 XDG 目录中启动真实的 qs 进程,确保受管理的 shell 不会触碰你的桌面会话。这些工具需主动启用且会修改状态,并要求 qs 位于 PATH 中。

{"project": "/path/to/shell", "entrypoint": "main.qml"}

quickshell_runtime_start 会返回会话 ID;quickshell_runtime_status、quickshell_runtime_logs 和 quickshell_runtime_ping 用于检查会话;quickshell_runtime_stop 和 quickshell_runtime_reset 用于管理生命周期。配置文件通过生态系统中的 quickshell_profile_* 工具命名并进行版本管理,也可以在启动时重复使用。

视觉和 UI 检查

quickshell_windows、quickshell_ui_tree 和 quickshell_ui_find 用于检查正在运行的会话。截图需要 grim 和合成器;UI 自省需要 shell 中有一个 inspector IpcHandler 目标。quickshell_ui_set_property 和 quickshell_ui_invoke 通过 IPC 修改会话并返回修改前后的状态;quickshell_ui_eval 风险较高(需显式启用、设有时间限制且输出有上限),并且绝不会触碰文件系统。

测试

quickshell_test 运行可机器读取的测试(先执行步骤,再进行断言,失败时截图);quickshell_test_suite 在隔离环境中运行多个测试;quickshell_assert、quickshell_test_macro 和 quickshell_test_record 用于构建步骤;quickshell_test_report 用于汇总测试套件。

{"session_id": "abc123", "tests": [{"name": "bar shows", "assertions": [{"type": "visible", "target": "bar"}]}]}
性能

quickshell_profile 在有限的时间窗口内采集会话的 CPU/内存数据。quickshell_profile_component、quickshell_profile_bindings、quickshell_profile_timers 和 quickshell_profile_object_tree 对项目进行静态分析。quickshell_performance_diagnose 会将证据关联起来,形成带置信度的假设,绝不会在没有证据的情况下归因开销。

Agent

quickshell_build_feature、quickshell_debug、quickshell_migrate_project、quickshell_test_feature、quickshell_optimize 和 quickshell_engineer 均会通过较低层级的工具,按明确分阶段的计划执行。每个阶段彼此隔离,因此单个阶段失败不会导致整个计划失败。quickshell_engineer 会组合完整流程(构建、测试、调试、优化、验证),并返回每个阶段的结果以及扁平化计划。

来源优先级

来源存在冲突时,按以下权威性排序:

  1. Quickshell 官方文档
  2. Qt 官方文档
  3. Quickshell 官方示例
  4. 真实项目实现

真实项目实现是实用参考,而非权威的 API 定义。

缓存

文档索引会缓存在本地的 ~/.cache/quickshell-mcp 下。

缓存类型TTL
已获取的页面(内存/磁盘)30 分钟
批量文档索引(磁盘)30 天

在受支持的情况下,使用 refresh=True 可绕过短期缓存。缓存位置和磁盘 TTL 可通过现有的 QUICKSHELL_DOCS_MCP_* 环境变量配置。

参考资料

来源URL提供内容
Quickshell 文档https://quickshell.org类型参考、使用指南、更新日志
Qt 文档https://doc.qt.io/qt-6QtQuick 基础类型(Rectangle、RowLayout 等)
Quickshell 示例https://git.outfoxxed.me/quickshell/quickshell-examples官方示例配置
Caelestia shellhttps://github.com/caelestia-dots/shell真实项目实现参考
Noctalia shellhttps://github.com/noctalia-dev/noctalia (legacy-v4)真实项目实现参考
dots-hyprlandhttps://github.com/end-4/dots-hyprland真实项目实现参考(“ii” shell)

开发

有关内部架构(四层能力/来源栈、CI 脚本列表以及编码/提交约定),请参阅 AGENTS.md;有关环境设置和工作流,请参阅 CONTRIBUTING.md。

局限

  • 验证采用静态启发式方法,可作为 qmlls 的补充。
  • 动态 JavaScript 和本地组件解析能力有限。
  • 官方示例可能面向不同版本的 Quickshell。
  • 冷缓存下,深度文档搜索可能较慢。
  • 真实项目实现仅供参考,且可能包含过时的模式。
  • 运行时和检查工具需选择启用,并且需要将 qs 添加到 PATH;截图还需要合成器,UI 内省则需要一个 inspector IpcHandler 目标。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。