版本: 1.0.0 用途: 与原版 QMD (TypeScript) 的兼容性分析
本文档分析原始 QMD (TypeScript/Bun) 的 MCP Server 实现,说明 qmd-python 如何保持兼容。
- MCP Tools 规范: 详见 mcp-tools.md
- HTTP 端点规范: 详见 http-endpoints.md
- 实现指南: 详见 implementation-guide.md
- 实现:
D:\MoneyProjects\qmd\src\mcp.ts - 测试:
D:\MoneyProjects\qmd\src\mcp.test.ts - 文档:
D:\MoneyProjects\qmd\skills\qmd\references\mcp-setup.md
qmd mcpTransport: Stdio (通过 @modelcontextprotocol/sdk/server/stdio.js)
MCP SDK: @modelcontextprotocol/sdk/server/mcp.js
版本: MCP spec 2025-06-18
| 功能 | 原版 QMD (TypeScript) | qmd-python (Python) | 兼容性 |
|---|---|---|---|
| MCP Protocol | MCP 2025-06-18 | MCP 2025-06-18 | ✅ 100% |
| Transport | Stdio only | Stdio + HTTP | ✅ 扩展 |
| Tools 数量 | 6 个 | 6 个 | ✅ 完全相同 |
| Resources | 1 个 | 1 个 | ✅ 完全相同 |
| Prompts | 1 个 | 1 个 | ✅ 完全相同 |
| Tool 名称 | search, vsearch, query, get, multi_get, status | 完全相同 | ✅ 完全相同 |
| 参数 Schema | Zod (TypeScript) | JSON Schema | ✅ 等效 |
| 输出结构 | content + structuredContent | 完全相同 | ✅ 完全相同 |
完整的 MCP Tools 接口定义请参考:mcp-tools.md
| Tool | 参数 | 默认值 | 兼容性 |
|---|---|---|---|
| search | query, limit, minScore, collection | limit=10, minScore=0 | ✅ |
| vsearch | query, limit, minScore, collection | limit=10, minScore=0.3 | ✅ |
| query | query, limit, minScore, collection | limit=10, minScore=0 | ✅ |
| get | file, fromLine, maxLines, lineNumbers | lineNumbers=false | ✅ |
| multi_get | pattern, maxLines, maxBytes, lineNumbers | maxBytes=10240 | ✅ |
| status | (无参数) | - | ✅ |
完整的 Resource 定义请参考:mcp-tools.md
| 属性 | 原版 QMD | qmd-python | 兼容性 |
|---|---|---|---|
| URI 模板 | qmd://{+path} |
qmd://{+path} |
✅ |
| MIME 类型 | text/markdown |
text/markdown |
✅ |
| list | undefined |
undefined |
✅ |
| 路径解析 | {collection}/{path} |
{collection}/{path} |
✅ |
| URI 编码 | 每段编码,保留斜杠 | 每段编码,保留斜杠 | ✅ |
原版 QMD: 仅支持 Stdio Transport
qmd-python: 同时支持 Stdio 和 HTTP Transport
影响:
- ✅ 正向兼容:AI Agent 可以正常使用
- ✅ 功能扩展:HTTP API 提供更多使用场景
原版 QMD: TypeScript + Bun + node-llama-cpp
qmd-python: Python + PyTorch + fastembed
影响:
- ✅ 接口完全兼容
- ✅ 行为保持一致
⚠️ 底层模型实现不同(对用户透明)
原版 QMD:
- Embedding: llama-cpp-python (GGUF)
- 存在问题:Windows 稳定性
qmd-python:
- Embedding: fastembed-gpu (ONNX + PyTorch)
- 优势:Windows 稳定性好,GPU 加速
影响:
- ✅ 更稳定
- ✅ 更快(GPU 加速)
- ✅ 接口兼容
必须完全兼容:
-
Tool:
search- 参数名称和类型
- 输出结构(content + structuredContent)
- 结果字段(docid, file, title, score, context, snippet)
- 默认值(limit=10, minScore=0)
-
Tool:
vsearch- 参数名称和类型
- 向量索引检查(不存在时返回 isError)
- 默认值(limit=10, minScore=0.3)
-
Tool:
query- 参数名称和类型
- RRF 融合
- 降级策略(无向量索引时仅 FTS)
-
Tool:
get- 参数(file, fromLine, maxLines, lineNumbers)
- 支持
file.md:120语法 - 输出 Resource 格式
- 相似文件建议(可选)
-
Tool:
multi_get- 参数(pattern, maxLines, maxBytes, lineNumbers)
- Glob 模式支持
- 超大文件跳过机制
-
Tool:
status- 无参数
- 输出结构(totalDocuments, needsEmbedding, hasVectorIndex, collections)
- Resource:
qmd://{+path}-
list: undefined - MIME type:
text/markdown - URI 编码规则
- 路径解析逻辑
-
- Prompt:
query- Markdown 格式指南
- 6 个工具说明
- 搜索策略建议
-
参数验证
- 必需参数缺失
- 参数类型错误
- 默认值正确
-
输出格式验证
- JSON Schema 匹配
structuredContent存在- 字段完整性
-
边界情况
- 空结果
- 文档不存在
- 向量索引缺失
-
与原版 QMD 对比
- 相同输入 → 相似输出
- 差异容忍度:分数精度、排序微调
-
Claude Desktop 集成
- 手动配置 MCP Server
- 测试所有 Tools
- 验证 Resource 访问
配置变更:
原版(Claude Desktop 配置):
{
"mcpServers": {
"qmd": {
"command": "qmd",
"args": ["mcp"]
}
}
}qmd-python(完全相同):
{
"mcpServers": {
"qmd": {
"command": "qmd",
"args": ["server", "--transport", "mcp"]
}
}
}注意: 命令从 mcp 变为 server --transport mcp,但功能完全兼容。
数据库: 完全兼容,无需迁移
- 位置:
~/.qmd/qmd.db - 结构:100% 兼容
配置文件: 完全兼容
- 位置:
~/.qmd/index.yml - 格式:YAML(保持一致)
| 原版 QMD | qmd-python |
|---|---|
qmd mcp |
qmd server --transport mcp |
原因: qmd-python 支持多种 Transport,需要明确指定。
影响: 仅影响启动方式,运行时行为完全相同。
原版 QMD: 使用 GGUF 格式模型 qmd-python: 使用 ONNX + PyTorch 格式模型
影响:
- ✅ 接口完全兼容
- ✅ 行为保持一致
⚠️ 模型格式不同(用户无感知)
原版 QMD: 不支持 qmd-python: 支持(扩展功能)
影响:
- ✅ 正向兼容(不影响 MCP 使用)
- ✅ 提供额外功能(HTTP API)
- MCP 规范: Model Context Protocol
- 原版 QMD: qmd-ts
- MCP Tools 规范: mcp-tools.md
- HTTP 端点规范: http-endpoints.md
- 实现指南: implementation-guide.md
- MCP Server:
D:\MoneyProjects\qmd\src\mcp.ts(627 lines) - 测试文件:
D:\MoneyProjects\qmd\src\mcp.test.ts - 配置文档:
D:\MoneyProjects\qmd\skills\qmd\references\mcp-setup.md
qmd-python 与原版 QMD (TypeScript) 保持 100% 接口兼容:
- ✅ 所有 MCP Tools 参数和输出格式完全一致
- ✅ MCP Resource 和 Prompt 行为一致
- ✅ 数据库和配置文件完全兼容
- ✅ 迁移成本:零(直接替换即可)
扩展功能:
- ✅ HTTP Transport(额外功能,不影响兼容性)
- ✅ 更稳定的 Windows 支持
- ✅ GPU 加速
最后更新: 2026-02-17 维护者: QMD-Python Team