This project has been archived by its maintainers, and is no longer receiving any updates.
quickshell-docs-mcp
Live Quickshell documentation for AI coding agents.
An MCP server that gives AI agents live access to the official Quickshell documentation, so they stop guessing QML API names from stale training data.
Also included:
- Qt base types (
Rectangle,RowLayout, ...) from doc.qt.io - Official example configs from quickshell-examples
- Real-world implementations, searchable across the Caelestia and Noctalia shells
Every result carries its source URL. When implementations disagree with the docs, the docs win.
Table of Contents
- Install
- Configure
- Tools
- Static validation
- Source Hierarchy
- References
- Development
- Limitations
- License
Install
pip install quickshell-docs-mcp # or: uvx quickshell-docs-mcp
From source
git clone https://github.com/franklinnolasco7/quickshell-docs-mcp
cd quickshell-docs-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
Nix
nix run github:franklinnolasco7/quickshell-docs-mcp
Docker
docker build -t quickshell-docs-mcp .
docker run --rm -i quickshell-docs-mcp # speaks MCP over stdio
Configure
opencode (opencode.json):
{
"mcp": {
"quickshell-docs": {
"type": "local",
"command": ["/absolute/path/to/quickshell-docs-mcp/.venv/bin/quickshell-docs-mcp"],
"enabled": true
}
}
}
Claude Desktop: same JSON under claude_desktop_config.json, wrapped in mcpServers. For HTTP transport, set QUICKSHELL_DOCS_MCP_TRANSPORT=http (plus optional HOST/PORT).
Set
QUICKSHELL_DOCS_MCP_LOG=DEBUGfor verbose request logging on stderr. Bulk doc indexes persist on disk (~/.cache/quickshell-docs-mcp, 30-day freshness). Relocate or disable withQUICKSHELL_DOCS_MCP_DISK_CACHE, re-tune withQUICKSHELL_DOCS_MCP_DISK_TTL_HOURS.
Tools
| Tool | What it does |
|---|---|
quickshell_search |
Search type names, guide slugs, optionally full text including deep search over type pages. Call this before writing QML from memory. |
quickshell_search_all |
One-call unified search across Quickshell docs/types, Qt types, official examples, and Caelestia/Noctalia implementations; grouped by source, ranked by relevance |
quickshell_find_pattern |
Describe what you want to build ("Spotlight-style launcher") and get matching real-world implementations with per-pattern API hints and cross-project grouping |
quickshell_list_versions |
Published doc versions and the latest |
quickshell_list_types / quickshell_get_type |
Browse and fetch Quickshell QML type docs |
quickshell_list_guide_pages / quickshell_get_guide_page |
Usage Guide pages as Markdown |
quickshell_about / quickshell_changelog |
About and Changelog pages |
quickshell_list_qt_types / quickshell_get_qt_type |
Qt-side types (QtQuick, Controls, Layouts, ...) |
quickshell_list_examples / quickshell_get_example |
Official example configs |
quickshell_search_implementations |
Find bar/OSD/IPC/... patterns in Caelestia or Noctalia |
quickshell_get_implementation |
Read those files, narrowed via find= |
quickshell_explain_error |
Explain a QML/Quickshell error and suggest a fix, grounded in actual docs |
quickshell_validate_qml |
Statically validate QML source: unknown types, properties, signals, imports, and version-incompatible APIs |
quickshell_stats |
Session call counts and cache-hit ratio |
Page-fetching tools accept version="latest" (default) or an explicit version like "v0.3.0". Cache-backed tools accept refresh=True to bypass the 30-minute cache.
Static validation
quickshell_validate_qml statically checks a QML snippet before you run it: unknown Quickshell/Qt types, properties, signals, missing import Quickshell.* statements, obvious scalar type mismatches, and types absent from the requested Quickshell version. It returns structured diagnostics (severity, line/column, confidence, suggested alternatives, and a docs source URL per finding).
It is a lightweight heuristic that complements qmlls, not a replacement: it validates against the same live docs index the other tools use, treats JavaScript bodies as opaque, and reports anything it cannot verify as an info or warning diagnostic rather than a false error. Local component files (a root type matching the filename stem) are skipped rather than flagged.
{"source": "PanelWindow { foo: 123 }", "version": "latest", "filename": "panel.qml"}
Source Hierarchy
- Official documentation (quickshell.org, doc.qt.io), authoritative
- Official examples, next in line
- Caelestia / Noctalia results, practical references labeled
real-world implementation
References
Data comes from these upstream sources:
| Source | URL | What it provides |
|---|---|---|
| Quickshell docs | https://quickshell.org | Type references, usage guide, changelog |
| Qt docs | https://doc.qt.io/qt-6 | QtQuick base types (Rectangle, RowLayout, etc.) |
| Quickshell examples | https://git.outfoxxed.me/quickshell/quickshell-examples | Official example configs |
| Caelestia shell | https://github.com/caelestia-dots/shell | Real-world implementation references |
| Noctalia shell | https://github.com/noctalia-dev/noctalia (legacy-v4) | Real-world implementation references |
Development
See CONTRIBUTING.md for setup, workflow, and how to submit changes.
Limitations
- Deep type-page search (
include_type_pages=True) fetches every type page once per machine (~15s cold, then cached on disk for 30 days across sessions;refresh=Trueforces a refetch). Plain name search stays instant. - Example configs may target a different Quickshell version than yours; listings include a
last_modifieddate so you can judge their age. quickshell_validate_qmlis heuristic static analysis; it cannot see local components or dynamic JavaScript and does not replaceqmlls. Property-level checks fetch the type's docs page (cached), so the first validation of a new type is network-bound.
License
Metadata
Release files for quickshell-docs-mcp 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quickshell_docs_mcp-1.4.0.tar.gz | 187.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quickshell_docs_mcp-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 243.9 kB
Release files / quickshell_docs_mcp-1.4.0.tar.gz
| Download URL | quickshell_docs_mcp-1.4.0.tar.gz |
|---|---|
| Size | 187.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d038644624d3d6a339cf70b6f24e28a55e89861fe5a8ee15c1a3b9f29207d3ee
|
|
BLAKE2b-256 checksum How to use checksums |
42441a2a329475f5a013234e8cb82d6d447805526d1e2aca693074cf1a3aa40d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / quickshell_docs_mcp-1.4.0-py3-none-any.whl
| Download URL | quickshell_docs_mcp-1.4.0-py3-none-any.whl |
|---|---|
| Size | 56.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1aa7a5c4d58037186a086514a6a957b5f8dd1ec8e3f1bf22ce8e67916b3434d9
|
|
BLAKE2b-256 checksum How to use checksums |
71a36e4259585667b0a380d93ad7d95389971a09acc7688fc36f7f6f48e48aff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency log