Skip to main content

Offline MCP Server for Qt 4.8.4 documentation

Project description

Qt 4.8.4 Documentation MCP Server

PyPI Version License Python Version GitHub Issues CI

Offline‑only MCP Server that serves Qt 4.8.4 documentation to Agents/LLMs and IDEs. It loads local HTML docs, converts pages to Markdown, and provides fast full‑text search via SQLite FTS5.

Quickstart

  1. Install the package: pip install qt4-doc-mcp-server.
  2. Fetch and stage the Qt docs (one-time): python scripts/prepare_qt48_docs.py --segments 4.
  3. Copy .env from the script output or create one manually (see table below).
  4. Run the server: qt4-doc-mcp-server (or uv run python -m qt4_doc_mcp_server.main).
  5. Verify health: curl -s http://127.0.0.1:8000/health{ "status": "ok" }.
  6. Optional: warm the Markdown cache for faster responses: qt4-doc-warm-md.

Project Structure

.
├─ README.md                    # Quick start, config, licensing
├─ LICENSE                      # MIT license for this codebase
├─ CHANGELOG.md                 # Keep a Changelog (Unreleased + releases)
├─ THIRD_PARTY_NOTICES.md       # Qt docs and deps licensing notes
├─ pyproject.toml               # Packaging, deps, console entry points
├─ scripts/
│  ├─ prepare_qt48_docs.py      # Download, extract, and stage Qt 4.8.4 docs; writes .env
├─ src/
│  └─ qt4_doc_mcp_server/
│     ├─ __init__.py            # Package version
│     ├─ main.py                # FastMCP app (+ /health) and CLI run()
│     ├─ config.py              # Env loader (dotenv) + startup checks
│     ├─ tools.py               # MCP tools (read_documentation now, search planned)
│     ├─ fetcher.py             # Canonical URL + local path mapping
│     ├─ convert.py             # HTML extraction, link normalization, HTML→Markdown
│     ├─ cache.py               # LRU + Markdown store (disk) helpers
│     ├─ doc_service.py         # Read path orchestration (store + convert)
│     ├─ search.py              # FTS5 index build/query stubs
│     └─ cli.py                 # Warm‑MD CLI entry (qt4-doc-warm-md)
└─ tests/                       # pytest suite (e.g., test_doc_service.py)

Requirements

  • Python 3.11+
  • Local Qt 4.8.4 HTML documentation (see below)

Get the Qt 4.8.4 Docs

Prepare Docs with Python helper (recommended)

python scripts/prepare_qt48_docs.py # copy docs by default into ./qt4-docs-html

OR

python scripts/prepare_qt48_docs.py --segments 4 # faster download with 4 segments

This will:

  • Download and extract the Qt 4.8.4 source archive (or reuse if present)
  • Stage the HTML docs at qt4-docs-html (symlink by default)
  • Copy LICENSE.FDL next to the docs
  • Create/update .env with QT_DOC_BASE and sensible defaults

Configure (dotenv)

Create a .env file in the repo root. The helper script writes sensible defaults; adjust as needed:

Variable Default Purpose
QT_DOC_BASE required Absolute path to the Qt 4.8.4 HTML docs (.../doc/html).
INDEX_DB_PATH .index/fts.sqlite Location of the future FTS5 index (safe to leave as-is today).
MD_CACHE_DIR .cache/md Directory for cached Markdown blobs + metadata.
PREINDEX_DOCS true Reserved for search; keep true so indexing runs once implemented.
PRECONVERT_MD true Warm the Markdown cache automatically at startup.
SERVER_HOST 127.0.0.1 Bind address for the FastMCP server (0.0.0.0 for containers).
SERVER_PORT 8000 TCP port for streamable HTTP transport.
MCP_LOG_LEVEL WARNING Logging verbosity (DEBUG/INFO/WARNING/ERROR).
MD_CACHE_SIZE 512 In-memory CachedDoc LRU capacity (counts pages).

Dev Setup and Run

uv venv .venv && source .venv/bin/activate

# Option 1: run without installing the package (dev-only)
# Using uv to run the module directly
uv run python -m qt4_doc_mcp_server.main

# Option 2: install and use the CLI
uv pip install -e .[dev]
qt4-doc-mcp-server
# Health check
curl -s http://127.0.0.1:8000/health

# Optional: preconvert all HTML→Markdown into the store for faster reads
uv run qt4-doc-warm-md

# Run tests (ensure TMPDIR points to a writable location when sandboxed)
uv run python -m pytest -q

How It Works (high‑level)

  • Offline‑only: no external HTTP fetches; everything reads from QT_DOC_BASE.
  • HTML→Markdown: focused extraction of main content; normalized internal links; attribution appended.
  • Markdown store: preconverted pages saved under .cache/md (sharded by URL hash) for fast reads; in‑memory LRU caches hot pages.
  • Search (planned): SQLite FTS5 index (title/headings/body) with bm25 ranking and snippets.

MCP Tool Example

Example MCP request/response for read_documentation (trimmed for brevity):

// request
{
  "method": "tools/run",
  "params": {
    "name": "read_documentation",
    "arguments": {
      "url": "https://doc.qt.io/archives/qt-4.8/qstring.html",
      "fragment": "#details",
      "section_only": true,
      "max_length": 2000
    }
  }
}

// response
{
  "result": {
    "title": "QString Class",
    "canonical_url": "https://doc.qt.io/archives/qt-4.8/qstring.html",
    "markdown": "# QString Class\n...",
    "links": [
      {"text": "QStringList", "url": "https://doc.qt.io/archives/qt-4.8/qstringlist.html"}
    ],
    "attribution": "Content © The Qt Company Ltd./Digia — GNU Free Documentation License 1.3"
  }
}

Deployment

  • Direct (systemd, bare metal, CI runners):
    • Install with pip install qt4-doc-mcp-server.
    • Ensure .env points to your Qt docs and writable cache/index directories.
    • Start with qt4-doc-mcp-server; add PRECONVERT_MD=true for faster first reads.
  • Containerization (roadmap):
    • Docker support is planned; follow the repository for updates or open an issue if you need it sooner.

Licensing

  • Code: MIT License (see LICENSE).
  • Qt docs: © The Qt Company Ltd./Digia, licensed under GFDL 1.3. This server converts locally obtained docs and includes attribution in outputs. If you redistribute a local mirror, include LICENSE.FDL and preserve notices.
  • See THIRD_PARTY_NOTICES.md for more.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qt4_doc_mcp_server-0.3.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qt4_doc_mcp_server-0.3.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file qt4_doc_mcp_server-0.3.0.tar.gz.

File metadata

  • Download URL: qt4_doc_mcp_server-0.3.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for qt4_doc_mcp_server-0.3.0.tar.gz
Algorithm Hash digest
SHA256 cc14988f10bcb4e281adc39c68db8e3df6892c54a64671b2db1530c10d42e7a0
MD5 86a13995c8856de639ebf4d8b80714f7
BLAKE2b-256 bb5435e62be1c34c859623a9073a2b6e040103acac8739f0737ee7598baccb53

See more details on using hashes here.

File details

Details for the file qt4_doc_mcp_server-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for qt4_doc_mcp_server-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1bcdc6b45a301f37b1b16fdeaf66960d1b9a5be1248473059aa390211d863f6
MD5 ef810688f0c23371f1cae874c197268a
BLAKE2b-256 11365ca3d80c356897e70f43147deff03756f69bbf02db3dac43e97fa0549a16

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page