mcpField
Q
qt4-doc-mcp-server

qt4-doc-mcp-server

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

关于 qt4-doc-mcp-server

qt4-doc-mcp-server 将本地安装的 Qt 4.8、Qt 5 或 Qt 6 文档提供给编码助手,离线也可使用。它结合全文搜索与页面、章节提取,每次选择一个文档集。

主要功能

  1. 01离线访问本地 Qt 文档
  2. 02支持相关性排序的全文搜索
  3. 03读取页面并提取片段
  4. 04转换为 Markdown 并分页
  5. 05缓存结果和文档索引

适用场景

  1. 01查找离线 Qt 文档中的 API
  2. 02阅读文档的指定章节
  3. 03搜索本地安装的 Qt 版本

MCP 相关

提供搜索所选本地 Qt 文档及以 Markdown 读取页面的工具,并支持片段提取和分页。支持流式 HTTP 与 stdio 传输。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"jztan-qt4-doc": {
"command": "uvx",
"args": [
"qt4-doc-mcp-server"
],
"env": {
"QT_DOC_BASE": "<QT_DOC_BASE>",
"QT_DOC_STATE_DIR": "<QT_DOC_STATE_DIR>",
"SERVER_HOST": "<SERVER_HOST>",
"SERVER_PORT": "<SERVER_PORT>"
}
}
}
}
启动命令uvx qt4-doc-mcp-server
需要配置的环境变量
QT_DOC_BASEAbsolute path to a local Qt 4.8, Qt 5, or Qt 6 HTML documentation root (required)
QT_DOC_STATE_DIRWritable directory for the search index and Markdown cache (default: $QT_DOC_BASE/.index; set when the documentation root is read-only)
SERVER_HOSTServer bind address (default: 127.0.0.1)
SERVER_PORTServer port (default: 8000)

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

安装包
pypiqt4-doc-mcp-server0.7.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Qt Documentation MCP Server

mcp-name: io.github.jztan/qt4-doc-mcp-server

PyPI Version License Python Version GitHub Issues CI Downloads

将本地安装的 Qt 4.8、Qt 5 或 Qt 6 文档接入你的 AI 编码助手。支持离线使用,每次只能选择一套文档。

工具参考 | 更新日志 | 贡献指南 | 故障排除

✨ 功能

  • 🔌 离线优先 - 完全使用本地文档
  • 🔍 全文搜索 - 在所有 Qt 文档中查找所需内容
  • ⚡ 智能缓存 - 加快重复查询的响应速度
  • 🎯 片段支持 - 按需提取特定章节
  • 🛠️ MCP 标准 - 兼容 Claude、VS Code 和其他 MCP 客户端

📦 前置条件

  • 需要 Python 3.11+(使用 Docker 镜像时无需安装)
  • 一个受支持版本的 Qt HTML 文档(Qt 4.8、Qt 5 或 Qt 6)
    • 随附的辅助工具仅下载 Qt 4.8.4。
    • 对于 Qt 5/6 离线文档,请将 QT_DOC_BASE 直接指向现有文档根目录。
  • 约 500MB 磁盘空间,用于文档、缓存和搜索索引
  • 支持 FTS5 的 SQLite(Python 3.11+ 默认包含)

🚀 安装

从 PyPI 安装(推荐)
pip install qt4-doc-mcp-server
从源代码安装
git clone https://github.com/jztan/qt4-doc-mcp-server.git
cd qt4-doc-mcp-server
uv sync --locked
设置 Qt 文档
# Automated setup (recommended, requires the cloned repo)
python scripts/prepare_qt48_docs.py --segments 4

# This will:
# - Download Qt 4.8.4 source archive
# - Extract HTML documentation
# - Create .env with sensible defaults
# - Copy GFDL license file

辅助脚本随代码仓库提供,不包含在 PyPI 软件包中。只从 PyPI 安装?请改为手动下载文档:

curl -LO https://download.qt.io/archive/qt/4.8/4.8.4/qt-everywhere-opensource-src-4.8.4.tar.gz
tar -xzf qt-everywhere-opensource-src-4.8.4.tar.gz qt-everywhere-opensource-src-4.8.4/doc/html
mv qt-everywhere-opensource-src-4.8.4/doc/html ./qt4-docs-html

然后创建一个 .env 文件,将 QT_DOC_BASE 指向该目录(参见下文的配置)。

快速入门命令
# 1. Install
pip install qt4-doc-mcp-server

# 2. Setup Qt docs
python scripts/prepare_qt48_docs.py --segments 4

# 3. Build search index (optional; the server builds it on first start)
qt-doc-build-index

# 4. Start server
qt-doc-mcp

# 5. Verify health
curl -s http://127.0.0.1:8000/health

旧版 qt4-doc-mcp-server 命令仍可用作别名,以兼容现有客户端配置。

便于 Agent 使用的 FTS CLI

构建索引后,Agent 可以搜索并获取物化后的绝对 Markdown 路径:

qt-doc-cli "accessible applications" --limit 5

该命令读取与服务相同的 .env 设置。搜索前,它会自动构建缺失或过期的 FTS 索引,并完整预热不完整的 Markdown 缓存。随后,它会将每条结果的标题、绝对 .md 路径和 FTS 摘要输出到 stdout;准备消息、错误和警告则输出到 stderr。就地修改文档后,请使用 qt-doc-warm-md --force。

🐳 Docker

每次发布时,都会将预构建的多架构镜像(amd64/arm64)发布到 GitHub Container Registry。该容器仅支持离线使用:将准备好的 Qt doc/html 目录以只读方式挂载到 /docs,所有派生数据(Markdown 缓存和搜索索引)都存放在 /data 卷中。

# Prepare Qt docs on the host first (one-time, writes to ./qt4-docs-html)
python scripts/prepare_qt48_docs.py --segments 4

# Run from GHCR
docker run -d --name qt4-doc-mcp-server -p 8000:8000 \
  -v "$PWD/qt4-docs-html:/docs:ro" \
  -v qt4-doc-data:/data \
  ghcr.io/jztan/qt4-doc-mcp-server:latest

# Verify
curl -s http://127.0.0.1:8000/health

只使用已发布的镜像,不克隆此代码仓库?请直接下载 Qt 4.8.4 文档,而不要运行准备脚本:

curl -LO https://download.qt.io/archive/qt/4.8/4.8.4/qt-everywhere-opensource-src-4.8.4.tar.gz
tar -xzf qt-everywhere-opensource-src-4.8.4.tar.gz qt-everywhere-opensource-src-4.8.4/doc/html
mv qt-everywhere-opensource-src-4.8.4/doc/html ./qt4-docs-html

任何现有的 Qt 5 或 Qt 6 doc/html 目录树(来自 Qt 安装程序或发行版文档软件包)也可用作挂载源。

首次启动时会将文档转换并索引到 /data 卷中;之后启动时会复用这些数据。根据文档集的大小,首次启动可能需要一两分钟,健康检查端点才会响应。

Docker Compose

如果文档位于默认的 ./qt4-docs-html 位置,则无需配置:

docker compose up -d

如果文档位于其他位置(包括服务器也支持的 Qt 5 或 Qt 6 doc/html 目录树),请将 QT_DOC_HTML_PATH 指向文档所在位置。如果主机上的 8000 端口已被占用,请在同一个文件中设置 HOST_PORT(使用普通的 docker run 时,请修改 -p 左侧的端口):

cp .env.docker.example .env.docker   # set QT_DOC_HTML_PATH
docker compose --env-file .env.docker up -d

或者使用便捷脚本。该脚本会检查 Docker 是否正在运行,在首次运行时创建 .env.docker,构建并启动服务,然后等待健康检查端点就绪:

./deploy.sh

将 MCP 客户端指向 http://127.0.0.1:8000/mcp(可流式传输的 HTTP)。Qt 文档采用 GFDL 1.3 许可;容器只提供你的本地副本,不会重新分发文档。

⚙️ 配置

这些设置适用于原生运行方式(pip 或源码)。在 Docker 中,它们已在容器内设置(QT_DOC_BASE=/docs、QT_DOC_STATE_DIR=/data、SERVER_HOST=0.0.0.0);.env.docker 中的 QT_DOC_HTML_PATH 变量不是服务器设置,只是挂载到 /docs 的主机路径。

在仓库根目录下创建 .env 文件。辅助脚本会写入合理的默认值;请根据需要调整:

变量默认值用途
QT_DOC_BASE必需一个 Qt 4.8、Qt 5 或 Qt 6 HTML 文档根目录的绝对路径。服务器会检测当前文档集。
QT_DOC_STATE_DIR$QT_DOC_BASE/.index用于 FTS 索引和 Markdown 缓存的可选可写目录。文档根目录为只读时可使用此设置。
PREINDEX_DOCStrue如果搜索索引不存在,则在启动时自动构建。
PRECONVERT_MDfalse在 MCP 启动时自动预热 Markdown 缓存。
SERVER_HOST127.0.0.1FastMCP 服务的绑定地址(容器中为 0.0.0.0)。
SERVER_PORT8000可流式传输的 HTTP 传输所用的 TCP 端口。
MCP_LOG_LEVELWARNING日志详细程度(DEBUG/INFO/WARNING/ERROR)。
MD_CACHE_SIZE512内存中 CachedDoc LRU 容量(按页面计数)。
DEFAULT_MAX_MARKDOWN_LENGTH20000每次请求返回的默认最大字符数(用于避免令牌限制问题)。

工具使用相对于根目录的精确 Markdown 路径标识文档,而非在线 URL。例如,Qt 4 页面使用 qcompleter.md,Qt 5/6 全局页面使用 qtdoc/accessible.md,Qt 5/6 Core 页面使用 qtcore/qobject.md。默认情况下,每个文档集都会在 $QT_DOC_BASE/.index/ 下存储各自的索引和 Markdown 缓存,因此切换 QT_DOC_BASE 后会复用已有的派生数据。将 QT_DOC_STATE_DIR 设置为其他可写目录,即可迁移两者。Markdown 缓存会映射文档目录树:例如,使用默认状态目录时,qtcore/qobject.md 会缓存为 .index/md/qtcore/qobject.md,并附带 qobject.meta.json。

🔌 MCP 客户端设置

默认情况下,服务会在 http://127.0.0.1:8000/mcp 暴露 HTTP 端点。请按照以下说明,将其注册到你首选的兼容 MCP 的 Agent。

Stdio 传输

使用 stdio 而非 HTTP 运行服务:

qt-doc-mcp --transport stdio

对于仅支持 stdio 的 MCP 客户端,请使用 args: ["--transport", "stdio"] 配置该命令。启动索引和 Markdown 缓存进度会写入 stderr,stdout 则专用于 MCP 协议消息。

Visual Studio Code(原生 MCP 支持)

VS Code 通过 GitHub Copilot 内置支持 MCP(需要 VS Code 1.102+)。

使用 CLI(最快):

code --add-mcp '{"name":"qt-docs","type":"http","url":"http://127.0.0.1:8000/mcp"}'

使用命令面板:

  1. 打开命令面板(Cmd/Ctrl+Shift+P)
  2. 运行 MCP: Open User Configuration(全局配置)或 MCP: Open Workspace Folder Configuration(项目专属配置)
  3. 添加配置:
    {
      "servers": {
        "qt-docs": {
          "type": "http",
          "url": "http://127.0.0.1:8000/mcp"
        }
      }
    }
    
  4. 保存文件。VS Code 将自动加载 MCP 服务。

手动配置: 在工作区中创建 .vscode/mcp.json(或在用户配置文件目录中创建 mcp.json):

{
  "servers": {
    "qt-docs": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
Claude Code

使用 CLI 命令将其添加到 Claude Code:

claude mcp add --transport http qt-docs http://127.0.0.1:8000/mcp

或在 Claude Code 设置文件(~/.claude.json)中手动配置:

{
  "mcpServers": {
    "qt-docs": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
Codex CLI

使用以下命令将其添加到 Codex CLI:

codex mcp add qt-docs -- npx -y mcp-client-http http://127.0.0.1:8000/mcp

或在 ~/.codex/config.toml 中手动配置:

[mcp_servers.qt-docs]
command = "npx"
args = ["-y", "mcp-client-http", "http://127.0.0.1:8000/mcp"]

**注意:**Codex CLI 主要支持基于 stdio 的 MCP 服务。上述配置使用 mcp-client-http 作为 HTTP 传输的桥接工具。

Kiro

Kiro 主要支持基于 stdio 的 MCP 服务。对于 HTTP 服务,请使用 HTTP 到 stdio 的桥接工具:

  1. 在工作区中创建或编辑 .kiro/settings/mcp.json:
    {
      "mcpServers": {
        "qt-docs": {
          "command": "npx",
          "args": [
            "-y",
            "mcp-client-http",
            "http://127.0.0.1:8000/mcp"
          ],
          "disabled": false
        }
      }
    }
    
  2. 保存文件并重启 Kiro。活动 Qt 文档工具将显示在 MCP 面板中。

**注意:**Kiro 对直接 HTTP 传输的支持有限。上述配置使用 mcp-client-http 作为桥接工具,以连接 HTTP MCP 服务。

通用 MCP 客户端

大多数 MCP 客户端使用标准配置格式。对于 HTTP 服务:

{
  "mcpServers": {
    "qt-docs": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

对于需要通过 HTTP 桥接工具使用命令方式的客户端:

{
  "mcpServers": {
    "qt-docs": {
      "command": "npx",
      "args": ["-y", "mcp-client-http", "http://127.0.0.1:8000/mcp"]
    }
  }
}

🛠️ 可用工具

此服务提供 2 个 MCP 工具,用于处理当前本地 Qt 文档集:

  1. read_documentation - 将当前 Qt 文档集中的页面读取并转换为 Markdown

    • 提取片段(#details、#public-functions)
    • 使用 start_index 和 max_length 分页
    • 仅章节模式,用于获取指定内容
    • 返回包含规范化链接和 GFDL 署名信息的 Markdown
  2. search_documentation - 在当前 Qt 文档集中进行全文搜索

    • 使用 SQLite FTS5 和 BM25 相关性排序
    • 提供带有高亮匹配项的上下文摘要
    • 可配置结果数量限制(默认值:10,最大值:50)

有关参数、返回值、示例和错误处理的详细 API 文档,请参阅 工具参考。

📚 相关资源

📄 许可证

  • **代码:**MIT 许可证(参见 LICENSE)。
  • Qt 文档:© The Qt Company Ltd. 及贡献者,采用 GFDL 1.3 许可。此服务会转换本地获取的文档,并在输出中注明出处。如果重新分发本地镜像,请附上 LICENSE.FDL 并保留声明。
  • 更多详情请参阅 THIRD_PARTY_NOTICES.md。

评论

支持 Markdown

第一次接触 MCP?

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

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