关于 qt4-doc-mcp-server
qt4-doc-mcp-server 将本地安装的 Qt 4.8、Qt 5 或 Qt 6 文档提供给编码助手,离线也可使用。它结合全文搜索与页面、章节提取,每次选择一个文档集。
主要功能
- 01离线访问本地 Qt 文档
- 02支持相关性排序的全文搜索
- 03读取页面并提取片段
- 04转换为 Markdown 并分页
- 05缓存结果和文档索引
适用场景
- 01查找离线 Qt 文档中的 API
- 02阅读文档的指定章节
- 03搜索本地安装的 Qt 版本
MCP 相关
提供搜索所选本地 Qt 文档及以 Markdown 读取页面的工具,并支持片段提取和分页。支持流式 HTTP 与 stdio 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx qt4-doc-mcp-serverQT_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Qt Documentation MCP Server
mcp-name: io.github.jztan/qt4-doc-mcp-server
将本地安装的 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_DOCS | true | 如果搜索索引不存在,则在启动时自动构建。 |
PRECONVERT_MD | false | 在 MCP 启动时自动预热 Markdown 缓存。 |
SERVER_HOST | 127.0.0.1 | FastMCP 服务的绑定地址(容器中为 0.0.0.0)。 |
SERVER_PORT | 8000 | 可流式传输的 HTTP 传输所用的 TCP 端口。 |
MCP_LOG_LEVEL | WARNING | 日志详细程度(DEBUG/INFO/WARNING/ERROR)。 |
MD_CACHE_SIZE | 512 | 内存中 CachedDoc LRU 容量(按页面计数)。 |
DEFAULT_MAX_MARKDOWN_LENGTH | 20000 | 每次请求返回的默认最大字符数(用于避免令牌限制问题)。 |
工具使用相对于根目录的精确 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"}'
使用命令面板:
- 打开命令面板(
Cmd/Ctrl+Shift+P) - 运行
MCP: Open User Configuration(全局配置)或MCP: Open Workspace Folder Configuration(项目专属配置) - 添加配置:
{ "servers": { "qt-docs": { "type": "http", "url": "http://127.0.0.1:8000/mcp" } } } - 保存文件。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 的桥接工具:
- 在工作区中创建或编辑
.kiro/settings/mcp.json:{ "mcpServers": { "qt-docs": { "command": "npx", "args": [ "-y", "mcp-client-http", "http://127.0.0.1:8000/mcp" ], "disabled": false } } } - 保存文件并重启 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 文档集:
-
read_documentation- 将当前 Qt 文档集中的页面读取并转换为 Markdown- 提取片段(
#details、#public-functions) - 使用
start_index和max_length分页 - 仅章节模式,用于获取指定内容
- 返回包含规范化链接和 GFDL 署名信息的 Markdown
- 提取片段(
-
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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。