Quickshell MCP
PYPI · QUICKSHELL-MCP · SCANNED SEP 21
Source-grounded Quickshell, QML, and Qt documentation, examples, and real-world implementations.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 33 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 21 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability71
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 10693 tokens (~104/item across 102 items; 102 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
- Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (7% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "quickshell_ui_eval" implies "eval" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 102 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Quickshell MCP server?
Quickshell MCP runs locally as a PyPI package, launched with uvx quickshell-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · quickshell-mcp
claude mcp add franklinnolasco7-quickshell-mcp -- uvx quickshell-mcp
{
"mcpServers": {
"franklinnolasco7-quickshell-mcp": {
"command": "uvx",
"args": [
"quickshell-mcp"
]
}
}
} {
"servers": {
"franklinnolasco7-quickshell-mcp": {
"command": "uvx",
"args": [
"quickshell-mcp"
]
}
}
} codex mcp add franklinnolasco7-quickshell-mcp -- uvx quickshell-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"franklinnolasco7-quickshell-mcp": {
"type": "local",
"command": [
"uvx",
"quickshell-mcp"
],
"enabled": true
}
}
} openclaw mcp add franklinnolasco7-quickshell-mcp --command uvx --arg quickshell-mcp
mcp_servers:
franklinnolasco7-quickshell-mcp:
command: "uvx"
args: ["quickshell-mcp"] {
"McpServers": {
"franklinnolasco7-quickshell-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"quickshell-mcp"
]
}
}
} assistant mcp add franklinnolasco7-quickshell-mcp -t stdio -c uvx -a quickshell-mcp
{
"mcpServers": {
"franklinnolasco7-quickshell-mcp": {
"command": "uvx",
"args": [
"quickshell-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 −14
- Malware scan: pass → unverified ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed pypi/quickshell-mcp@2.17.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 33 packages
| Packages resolved | 33 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
quickshell_about ~53
Fetch the Quickshell 'About' page (https://quickshell.org/about/) as Markdown. Use this for high-level questions like what Quickshell is, who maintains it, and how it's licensed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_api_diff ~59
Compare two Quickshell versions and report added, removed, renamed, and deprecated APIs, each with provenance (changelog and type-page URLs). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| from_version | string | yes | – |
| to_version | string | yes | – |
No output schema declared.
No examples provided.
quickshell_api_graph ~64
Build a documented API dependency graph for a type: its declared properties (with their types) and its documented base type. Only documented relationships are included — no speculative edges. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| api | string | yes | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_apply_patch ~135
Apply a previously generated edit set to a Quickshell project, but only when explicitly requested. This is a mutating operation. Validates that every edit path stays inside the authorized project root, the patch is well-formed, not stale (optionally by expected file hashes), and would not silently overwrite conflicting edits. Only whole-token occurrences are replaced, and a target must be unique or the patch is rejected. Reports every changed file. Nothing outside the project root is ever touched.
| Name | Type | Req | Description |
|---|---|---|---|
| edits | array | yes | – |
| expected_base_hashes | – | – | – |
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_assert ~72
Run a single reusable assertion primitive against a managed runtime session: object_exists, property_equals, property_contains, property_matches, visible, enabled, text_matches, window_exists. Returns a structured pass/fail with useful context. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| assertion | object | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
quickshell_best_practice ~57
Return evidence-backed implementation guidance ranked by authority: official docs > official examples > real-world shells. Documented behavior is separated from community convention. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_binding_inspect ~67
Inspect a binding on a managed runtime object: current live value, likely source expression (from the project QML), and files that reference it. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| property_name | string | yes | – |
| session_id | string | yes | – |
| target | string | yes | – |
No output schema declared.
No examples provided.
quickshell_build_feature ~118
Build a feature end-to-end: analyze the project, research the APIs, generate a verified component, validate it, and optionally apply a permitted edit set. Returns the full staged plan. Read-only unless apply=True and an explicit edit set is given (then mutating).
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | – | – |
| compositor | – | – | – |
| context | – | – | – |
| description | string | yes | – |
| edits | – | – | – |
| filename | – | – | – |
| project | – | – | – |
| style | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_changelog ~45
Fetch the Quickshell changelog (https://quickshell.org/changelog/) as Markdown. Use this to answer 'what's new / what changed' questions.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_check_compatibility ~329
Check whether a Quickshell API, QML property/method/signal, type, or code snippet is compatible with a specific Quickshell version. Use this before targeting an older release, e.g. 'is PanelWindow.exclusiveZone available in v0.2.0?', 'which version introduced SomeType?', 'does this QML config work on v0.3.0?', 'was Quickshell.shellRoot renamed?'. Pass exactly one of: - api: a dotted path like 'PanelWindow.exclusiveZone', 'Quickshell.Hyprland.HyprlandMonitor', or 'HyprlandWorkspace.activate()' - type: a bare type name like 'PanelWindow' - code: a QML snippet; every referenced type and property is checked version pins the Quickshell release (default 'latest', resolved at runtime). to_version overrides version as the target; from_version adds a lower-bound so the result reports compatibility across the whole range. The verdict is one of 'compatible' / 'incompatible' / 'uncertain', backed by per-version documentation and changelog evidence (never a guess from the latest page alone). Qt/QML types (Rectangle, Item, ...) are reported as compatible with origin 'qt': their availability is governed by your Qt version, not the Quickshell one.
| Name | Type | Req | Description |
|---|---|---|---|
| api | – | – | – |
| code | – | – | – |
| from_version | – | – | – |
| to_version | – | – | – |
| type | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_coding_assistant ~500
High-level Quickshell development assistant for AI coding agents. Give it one plain-language development request and it routes the work through the other tools, returning a structured, source-grounded result: - build: 'build a Hyprland workspace bar', 'add an animated volume popup' - debug: 'why is this PanelWindow failing?', 'fix this QML error' (pass error= and/or code=) - migrate: 'migrate this shell from v0.2 to v0.3' (from_version/to_version pin the range) - adapt a pattern: 'find an implementation of this feature and adapt it' - research: 'how should I structure this component?', 'what is PanelWindow?' The assistant picks the minimal set of lower-level tools needed (search, pattern lookup, type/guide pages, compatibility, migration, generation, validation), runs each step in isolation so a failing source never sinks the whole answer, deduplicates searches, reuses the shared cache, and never modifies files. version pins the Quickshell release. Results clearly separate verified facts (official docs) from recommendations, and every claim carries a source URL. For a single, focused lookup call the specific tool directly instead. Pass project= a path to the Quickshell project root to ground the answer in that project: the assistant infers its Quickshell version and compositor from the project's QML imports and uses them as defaults, and returns a 'project' section describing what was detected (version, compositor, QML files, each marked detected/inferred/unknown). An invalid path is reported in that section instead of failing the request. Execution is off by default: the assistant never modifies files. To let it apply an explicit, validated edit set to the project, pass permitted_execution=True together with edits=[...] (same shape as quickshell_apply_patch) and a project= path. Non-permitted requests record an execution step and continue read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| code | – | – | – |
| compositor | – | – | – |
| context | – | – | – |
| edits | – | – | – |
| error | – | – | – |
| filename | – | – | – |
| from_version | – | – | – |
| permitted_execution | boolean | – | – |
| project | – | – | – |
| request | string | yes | – |
| to_version | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_dbus_services ~39
List user-session D-Bus services read-only via ``busctl``. Discovery only — method invocation is never performed. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
quickshell_debug ~106
Debug a failure end-to-end: explain the error from the docs, then correlate live runtime evidence (errors, diagnosis, trace, binding) when a session id is given. Inferred causes are kept separate from observed evidence. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| code | – | – | – |
| error | – | – | – |
| filename | – | – | – |
| project | – | – | – |
| property_name | – | – | – |
| session_id | – | – | – |
| target | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_engineer ~117
Run the full engineering loop end-to-end: build → test → debug → optimize → verify, composing the agent tools with per-stage isolation so one failing stage never sinks the rest. Pass tests= a machine- readable suite to enable the test stage; the loop is otherwise read-only. Returns every stage's result plus the flattened plan.
| Name | Type | Req | Description |
|---|---|---|---|
| compositor | – | – | – |
| description | string | yes | – |
| project | – | – | – |
| seconds | number | – | – |
| tests | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_explain_error ~212
Explain a Quickshell/QML error and suggest a fix, grounded in the actual documentation. Pass the error message; optionally include QML code, the filename, line number, component/type name, or Quickshell version for a more precise diagnosis. The tool verifies reported properties, methods, and signals against the Quickshell and Qt type indexes before suggesting fixes, so it never recommends APIs that don't exist. Use this when you encounter errors like: - "Cannot assign to non-existent property" - "Type 'X' is not accessible" - "X is not a function" - "Cannot connect to non-existent signal" - "module 'X' is not installed" - "Invalid assignment" - "Could not find or load the component" - binding errors or type mismatches
| Name | Type | Req | Description |
|---|---|---|---|
| code | – | – | – |
| component | – | – | – |
| error | string | yes | – |
| filename | – | – | – |
| line_number | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_find_pattern ~290
Find real implementations of a FEATURE you want to build, described in plain words instead of exact type names: 'Hyprland workspace indicator', 'macOS-style control center', 'volume OSD', 'system tray', 'animated popup', 'floating notification', 'top bar with workspaces', 'launcher like Spotlight', 'power menu'. Searches Caelestia, Noctalia, and end-4's dots-hyprland (real-world shells) plus the official examples repo, interprets aliases ('Spotlight' means launcher, 'hud' means OSD), and returns a small ranked set where every entry carries source project, file path, why it matched, and the Quickshell APIs that pattern typically needs. When several projects solve the same pattern they are grouped so you can compare approaches. For API/type lookups by name use quickshell_search or quickshell_search_all instead; for browsing one repo use quickshell_search_implementations. Read matched files via quickshell_get_implementation / quickshell_get_example. limit caps total implementations (default 5, max 10); version pins a Quickshell release; refresh=True bypasses the cache.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | – |
| refresh | boolean | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_generate_component ~486
Generate a minimal, source-grounded Quickshell QML component from a plain-language description, e.g. 'Create a Hyprland workspace indicator', 'animated volume OSD', 'top bar with workspaces, clock and system tray', 'popup control center', or 'notification popup'. The generator researches the request, assembles a small component from curated templates, and BEFORE returning it verifies every Quickshell type and property/method it references against the requested version (via the compatibility machinery) and runs the static validator on the assembled QML. Any API that cannot be verified is surfaced rather than silently emitted, so the result never claims an API is valid without checking. The result also includes a 'verified_surface': the documented properties/methods/signals of every type the component uses, so you can freely rewrite the QML against verified members. When no curated template matches the request, the result carries that verified surface plus supporting references instead of a component, so you can compose the component yourself from grounded building blocks. Only one top-level window is generated; additional requested windows are reported in 'assumptions' rather than embedded. Inputs: - description: what to build, in plain words - version: Quickshell release to target (default 'latest', resolved at runtime) - compositor: e.g. 'hyprland' to use compositor-specific types - style: optional style/behavior hints (surfaced in 'assumptions') - context: optional existing project context (surfaced, never read) - filename: suggested filename; derived from the description by default The result includes the generated QML, the imports/types it needs, any compositor or external-service dependency, per-API verification evidence, validation diagnostics, supporting references, and the assumptions made. Official documentation always wins over examples and real-world implementations when they disagree. This tool writes nothing to disk. Pass project= a path to the pr…
| Name | Type | Req | Description |
|---|---|---|---|
| compositor | – | – | – |
| context | – | – | – |
| description | string | yes | – |
| filename | – | – | – |
| project | – | – | – |
| style | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_generate_panel ~108
Generate high-level panel scaffolding for a bar, OSD, launcher, dashboard, control center, or notification panel. This is scaffolding, not a full design generator: it reuses the component generator and project style detection, and outputs minimal, valid, extendable QML. Pass project= to align version, compositor, and conventions with the project.
| Name | Type | Req | Description |
|---|---|---|---|
| compositor | – | – | – |
| description | string | yes | – |
| project | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_generate_service ~112
Generate a generic, architecture-neutral Quickshell service abstraction for a common application concern. The first version returns a verified service skeleton with declared imports and a placeholder service object you can extend; it is deliberately generic rather than a giant library of service templates. No nonexistent Quickshell APIs are emitted. Pass project= to align the target version and compositor with the project.
| Name | Type | Req | Description |
|---|---|---|---|
| compositor | – | – | – |
| description | string | yes | – |
| project | – | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_get_example ~61
Read one file from the official Quickshell examples repo verbatim (QML configs, READMEs). Get valid paths from quickshell_list_examples. Prefer these maintained examples over writing a shell config from memory.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_get_guide_page ~73
Fetch one Usage Guide page as Markdown, e.g. slug='introduction' or slug='qml-language'. Call quickshell_list_guide_pages first if you don't know the exact slug. Defaults to the latest doc version.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | – |
| version | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_get_implementation ~137
Read a QML file from the Caelestia, Noctalia, or dots-hyprland shells (get paths from quickshell_search_implementations). Pass find='osd' / find='workspace' / find='ipc' etc. to jump to the most relevant section instead of pulling the whole large file. This is a real-world implementation reference, NOT official documentation: when it disagrees with quickshell.org or doc.qt.io, trust the docs.
| Name | Type | Req | Description |
|---|---|---|---|
| find | – | – | – |
| max_chars | integer | – | – |
| path | string | yes | – |
| source | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_get_qt_type ~159
Fetch one Qt type's reference page from doc.qt.io as Markdown, e.g. Rectangle, Text, MouseArea, Timer, Item, RowLayout, or a value type like color or vector3d. Use this when a Quickshell config imports QtQuick / QtQuick.Controls / QtQuick.Layouts types and you need their properties, signals, or syntax. Pass module (e.g. 'qtquick', 'qtquick-controls') to disambiguate names that exist in several modules. qt_version pins a minor (e.g. '6.8') to match your installed Qt instead of the newest.
| Name | Type | Req | Description |
|---|---|---|---|
| module | – | – | – |
| name | string | yes | – |
| qt_version | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_get_type ~110
Fetch the documentation page for one QML type as Markdown, e.g. type_name='PanelWindow', namespace='Quickshell', or type_name='HyprlandMonitor', namespace='Quickshell.Hyprland'. Call quickshell_list_types first if you're unsure of the exact namespace or type name (they are case-sensitive). Defaults to the latest doc version.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | – | – |
| type_name | string | yes | – |
| version | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quickshell_hyprland_info ~65
Inspect the Hyprland compositor read-only: monitors, workspaces, the active workspace, and clients, via ``hyprctl -j``. Returns an explanatory note when Hyprland/hyprctl is unavailable. Never modifies the compositor.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
quickshell_list_examples ~79
List files and folders in the official Quickshell examples repo (real-world sample shell/bar/widget configs written by the Quickshell authors). Call with no path to list the root, then drill into a folder using its path. Pair with quickshell_get_example to read a file's contents.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | – | – |
No output schema declared.
No examples provided.
quickshell_list_guide_pages ~77
List the Usage Guide pages available for a given doc version (e.g. install-setup, introduction, size-position, qml-language, advanced, faq). Defaults to the latest version if none given. Set refresh=True to bypass the in-process cache.
| Name | Type | Req | Description |
|---|---|---|---|
| refresh | boolean | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_list_qt_types ~155
List QML types documented on doc.qt.io for QtQuick and its sibling modules (Controls, Layouts, Effects, Shapes, ...), discovered from the QtQuick module page. Use this for Qt base types like Rectangle, Text, MouseArea, Timer, or RowLayout that Quickshell configs import but the Quickshell docs don't describe themselves. For Quickshell-specific types use quickshell_list_types instead. qt_version pins a minor (e.g. '6.8', '6.7') instead of the newest release. Set refresh=True to bypass the in-process cache.
| Name | Type | Req | Description |
|---|---|---|---|
| module | – | – | – |
| qt_version | string | – | – |
| refresh | boolean | – | – |
No output schema declared.
No examples provided.
quickshell_list_types ~100
List Quickshell QML types, optionally filtered to one namespace (e.g. 'Quickshell.Hyprland', 'Quickshell.Io', 'Quickshell.Services.Pipewire'). Call with no namespace to see every namespace and its types. Defaults to the latest doc version. Set refresh=True to bypass the in-process cache.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | – | – | – |
| refresh | boolean | – | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_list_versions ~67
List all Quickshell documentation versions currently published on quickshell.org, newest first, and report which one is latest. Use this before fetching a page if you're unsure which version to use. Set refresh=True to bypass the in-process cache.
| Name | Type | Req | Description |
|---|---|---|---|
| refresh | boolean | – | – |
No output schema declared.
No examples provided.
quickshell_migrate ~326
Migrate Quickshell/QML code from one Quickshell version to another: 'migrate this config from v0.2.0 to v0.3.0', 'what do I need to change to upgrade to the latest Quickshell?', 'is my config still valid after the upgrade?'. Analyzes the code (or a single API/type) against both versions and reports every removed, renamed, deprecated, or changed API, plus breaking changes from the changelog, each with severity, location, the old API, the replacement, why it must change, a suggested migration, confidence, and a cited source. Pass exactly one of: - code: the QML source to migrate - api: a dotted path like 'Quickshell.shellRoot' or 'PanelWindow.exclusiveZone' - type: a bare type name like 'LegacyThing' Both from_version and to_version are required. The scan covers only breaking-change changelog entries between the versions that mention the referenced symbols, so a rename that landed at an intermediate release is reported with the version it landed in, not as a vague 'sometime between'. Findings are classified definite / likely / manual_review: only changes backed by the docs or changelog are definite. This tool analyzes and recommends; it never rewrites code or modifies files.
| Name | Type | Req | Description |
|---|---|---|---|
| api | – | – | – |
| code | – | – | – |
| filename | – | – | – |
| from_version | string | yes | – |
| to_version | string | yes | – |
| type | – | – | – |
No output schema declared.
No examples provided.
quickshell_migrate_project ~70
Migrate a whole project between Quickshell versions: summarize the API delta, run the per-file migration engine, and report confirmed breaking issues with sources. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| from_version | string | yes | – |
| project | string | yes | – |
| to_version | string | yes | – |
No output schema declared.
No examples provided.
quickshell_nix_diagnostics ~84
Detect the Nix infrastructure of a Quickshell project: flake.nix presence, devShells, nixpkgs inputs, and whether the flake is locked. File-based detection only (no nix evaluation). Falls back to the system package manager when no flake.nix is present. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_optimize ~65
Optimize a project: profile a live session (when given) and run static component/binding/timer analysis plus a correlated diagnosis. Cost is never attributed without evidence. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | – | – | – |
| seconds | number | – | – |
| session_id | – | – | – |
No output schema declared.
No examples provided.
quickshell_pattern_compare ~75
Compare how the indexed real-world shells (Caelestia, Noctalia, dots-hyprland) solve the same problem: per-project matches and source locations. Presents differences for comparison; never declares one implementation correct. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
| version | string | – | – |
No output schema declared.
No examples provided.
quickshell_performance_diagnose ~54
Correlate static project evidence (bindings, timers, object tree) into prioritized performance hypotheses with evidence and confidence. Never modifies source. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_pipewire_info ~49
Inspect PipeWire read-only: sinks, sources, and device identity via ``pw-cli``. Returns a note when PipeWire/pw-cli is unavailable. Never changes device state.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
quickshell_profile ~58
Measure runtime characteristics of a managed session: CPU usage, memory (RSS), and sample duration via bounded /proc sampling. Reports methodology and limitations. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| seconds | number | – | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_bindings ~51
Identify high-frequency or broad property bindings statically (potential re-evaluation chains). Static only; re-evaluation frequency needs runtime instrumentation. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_component ~47
Identify components with potential performance concerns from static evidence: timer/animation counts and layout bindings. Never attributes cost without evidence. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_delete ~37
Delete a saved runtime profile from the in-memory registry by name. Mutates the profile registry only.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_export ~46
Export a saved runtime profile as a JSON-serializable dict (with its schema version), for backup or sharing between servers. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_get ~39
Get a single saved runtime profile by name, with its full launch configuration and schema version. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_import ~70
Import a runtime profile into the registry from a dict (e.g. the output of quickshell_profile_export). A payload with a newer schema version than this server supports is refused. Mutates the profile registry only.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_list ~37
List all saved runtime profiles with summary info: name, project root, entrypoint, compositor, and schema version. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
quickshell_profile_object_tree ~54
Report object-tree statistics from static QML structure: total objects, repeated component patterns, and nesting depth. Useful for optimization; large trees are not automatically bad. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_save ~92
Save a named runtime launch profile in this server's in-memory registry. Profiles are pure data (never launched by saving); combine them with quickshell_runtime_start. Mutates the profile registry only.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | – | – | – |
| compositor | – | – | – |
| config_dir | – | – | – |
| entrypoint | – | – | – |
| environment | – | – | – |
| name | string | yes | – |
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_profile_timers ~49
Find timers with potentially suspicious configuration (very short intervals, repeat disabled). Frequent timers are not labeled bugs by themselves. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_project_analyze ~123
Inspect a Quickshell project and produce a structured project overview containing, where detectable: Quickshell version, Qt version, entrypoints, QML files, JS files, imports, Quickshell modules, components, services, compositor integrations, runtime dependencies, and project configuration. Builds on the shared ProjectContext. Unknown or undetected values are explicitly marked; no information is fabricated. File listings are capped to a reasonable sample; the full list is available via the specialized project tools.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
No output schema declared.
No examples provided.
quickshell_project_architecture ~57
Produce evidence-backed architecture recommendations for a project: confirmed cycles, unresolved references, and docs-grounded guidance. Every recommendation cites its evidence and basis. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | – |
| version | string | – | – |
No output schema declared.
No examples provided.
What is the Quickshell MCP server?
Quickshell MCP is listed in the public MCP registry as io.github.franklinnolasco7/quickshell-mcp. Source-grounded Quickshell, QML, and Qt documentation, examples, and real-world implementations. This page covers its PyPI package (quickshell-mcp).
Is the Quickshell MCP server safe to use?
Quickshell MCP scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Quickshell MCP server expose?
Quickshell MCP exposes 102 tools: quickshell_list_versions, quickshell_about, quickshell_changelog, quickshell_list_guide_pages, quickshell_get_guide_page, and 97 more. Their descriptions and schemas cost roughly 10,693 tokens of context every time the server is loaded.
Is the Quickshell MCP server still maintained?
Quickshell MCP is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.