Skip to main content
Glama

Quarkdown MCP Server

by Lillard01
MIT License

Quarkdown MCP 服务器 (v1.1)

一个模型上下文协议 (MCP) 服务器,提供全面的 Quarkdown 文档处理功能。该服务器使 AI 助手能够通过标准化接口编译、验证、预览和批量处理 Quarkdown 文档。

最新版本 v1.1 - 包含重要的命令行兼容性修正、增强语法验证和改进的错误处理机制。

关于 Quarkdown

Quarkdown 是一个现代化、可扩展的 Markdown 处理器,它扩展了 CommonMark 和 GitHub Flavored Markdown,具有强大的功能:

  • 高级语法:函数、变量、条件语句、循环等
  • 多种输出格式:HTML、PDF、LaTeX、Markdown、DOCX
  • 模板系统:可自定义的主题和文档类型
  • 标准库:用于布局、数学、数据处理和可视化的内置模块
  • 交互元素:幻灯片、可折叠部分和动态内容

功能特性

🚀 核心 MCP 工具

  • 文档编译 (compile_document):将 Quarkdown 源码转换为 HTML、PDF、LaTeX、Markdown 格式
  • 项目创建 (create_project):使用模板生成新的 Quarkdown 项目(基础、演示、书籍、文章)
  • 语法验证 (validate_markdown):检查文档语法,支持严格模式和全面的错误报告
  • 预览服务器 (preview_server):启动本地开发服务器,支持实时重载和主题
  • 批量处理 (convert_batch):高效并行处理多个文档

🎯 核心能力

  • 多格式输出:支持 HTML、PDF、LaTeX、Markdown、DOCX
  • 模板系统:应用自定义模板和主题(基础、演示、书籍、文章)
  • 实时预览:实时文档预览,支持自动重载
  • 批量操作:并行处理多个文档,可配置工作线程数
  • 错误处理:全面验证和详细错误报告
  • 项目管理:完整的项目脚手架,支持 Git 初始化

安装

前置要求

  • Python 3.8 或更高版本(推荐 Python 3.11+)
  • Java 11 或更高版本(用于 Quarkdown JAR 执行)
  • Quarkdown JAR 文件(包含在 quarkdown/build/libs/ 目录中)

快速安装

# 克隆仓库 git clone <repository-url> cd quarkdown-mcp # 创建虚拟环境(推荐) python -m venv venv source venv/bin/activate # macOS/Linux # 或 Windows: venv\Scripts\activate # 安装核心依赖 pip install -r requirements.txt # 以开发模式安装 pip install -e .

开发环境设置

# 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows 系统: venv\Scripts\activate # 安装开发依赖 pip install -e ".[dev]" # 或者单独安装开发依赖 pip install -r requirements.txt pip install pytest>=7.0.0 pytest-asyncio>=0.21.0 pytest-cov>=4.0.0 pip install black>=23.0.0 isort>=5.12.0 flake8>=6.0.0 mypy>=1.0.0 # 安装 pre-commit 钩子(如果使用) pre-commit install

配置

环境变量

# 必需:Quarkdown JAR 文件路径(使用实际的绝对路径) export QUARKDOWN_JAR_PATH="/path/to/quarkdown-mcp/quarkdown/build/libs/quarkdown.jar" # 可选:处理临时目录 export QUARKDOWN_TEMP_DIR="/tmp/quarkdown" # 可选:日志级别 export QUARKDOWN_LOG_LEVEL="INFO"

MCP 客户端配置

添加到您的 MCP 客户端配置:

{ "mcpServers": { "quarkdown": { "command": "python", "args": ["-m", "quarkdown_mcp.server"], "cwd": "/path/to/quarkdown-mcp/src", "env": { "QUARKDOWN_JAR_PATH": "/path/to/quarkdown-mcp/quarkdown/build/libs/quarkdown.jar" } } } }

Quarkdown JAR 位置

Quarkdown JAR 文件包含在此仓库中,实际位置为:

quarkdown-mcp/quarkdown/build/libs/quarkdown.jar

确保在配置中使用此 JAR 文件的绝对路径。

运行服务器

启动 MCP 服务器

# 进入源代码目录 cd /path/to/quarkdown-mcp/src # 以模块方式运行服务器 python -m quarkdown_mcp.server

验证配置

# 运行配置测试脚本 python test_server_config.py

文档编译

# 将 Quarkdown 编译为 HTML result = await mcp_client.call_tool("compile_document", { "source_content": "# Hello Quarkdown\n\nThis is a **sample** document.", "output_format": "html", "template": "academic" })

项目创建

# 创建新的 Quarkdown 项目 result = await mcp_client.call_tool("create_project", { "project_name": "my-document", "project_path": "/path/to/projects", "template": "book", "include_examples": True })

语法验证

# 基础语法验证 result = await mcp_client.call_tool("validate_markdown", { "source_content": "# Document\n\n{{ invalid_function() }}", "strict_mode": False, "check_functions": True }) # 严格模式验证(推荐) result = await mcp_client.call_tool("validate_markdown", { "source_content": "# Document\n\n.callout\n\n![](image.png)\n\n{{ func(", "strict_mode": True, "check_functions": True, "check_variables": True }) # 返回详细的错误和警告信息,包括: # - Callout 缺少 type 参数 # - 图片缺少 alt 文本 # - 函数调用语法错误

预览服务器

# 启动预览服务器 result = await mcp_client.call_tool("preview_server", { "source_content": "# Live Preview\n\nEdit and see changes!", "port": 8080, "auto_reload": True, "theme": "dark" })

批量处理

# 处理多个文档 result = await mcp_client.call_tool("convert_batch", { "documents": [ {"name": "doc1", "content": "# Document 1"}, {"name": "doc2", "content": "# Document 2"} ], "output_format": "pdf", "parallel_processing": True, "generate_index": True })

工具参考

compile_document

将 Quarkdown 源内容编译为各种输出格式。

参数:

  • source_content (string, 可选):Quarkdown 源内容(input_file 的替代选项)
  • input_file (string, 可选):输入 Quarkdown 文件路径
  • output_format (string):输出格式(html、pdf、tex、md)
  • output_file (string, 可选):输出文件路径
  • pretty_output (boolean):启用美化格式
  • wrap_output (boolean):启用输出包装
  • working_directory (string, 可选):编译工作目录

create_project

创建具有目录结构和模板的新 Quarkdown 项目。

参数:

  • project_path (string, 必需):创建项目的目录路径
  • project_name (string, 可选):项目名称
  • template (string):项目模板(basic、presentation、book、article)
  • include_examples (boolean):包含示例文件
  • include_docs (boolean):包含文档
  • git_init (boolean):初始化 Git 仓库

validate_markdown

验证 Quarkdown 文档语法并报告错误。

参数:

  • source_content (string, 必需):要验证的内容
  • strict_mode (boolean):启用严格验证模式
  • check_functions (boolean):验证函数语法
  • check_variables (boolean):验证变量引用
  • check_links (boolean):验证外部链接

preview_server

启动具有实时重载功能的本地预览服务器。

参数:

  • source_content (string, 必需):要预览的内容
  • port (integer):服务器端口(默认:8080)
  • auto_reload (boolean):启用自动重载
  • theme (string):预览主题
  • watch_files (array):要监视变化的其他文件
  • open_browser (boolean):启动时自动打开浏览器

convert_batch

在批处理模式下并行处理多个文档。

参数:

  • documents (array, 必需):包含名称、内容和可选 output_file 的文档列表
  • output_format (string):输出格式(html、pdf、latex、markdown、docx)
  • output_directory (string, 可选):输出文件目录
  • template (string, 可选):应用于所有文档的模板
  • parallel_processing (boolean):启用并行处理
  • max_workers (integer):最大并行工作线程数(默认:4)

架构

项目结构

quarkdown-mcp/ ├── src/quarkdown_mcp/ │ ├── __init__.py │ ├── server.py # 主 MCP 服务器 │ ├── core/ │ │ ├── __init__.py │ │ ├── config.py # 配置管理 │ │ └── wrapper.py # Quarkdown JAR 包装器 │ └── tools/ │ ├── __init__.py │ ├── base.py # 基础工具类 │ ├── compile.py # 文档编译 │ ├── create_project.py # 项目创建 │ ├── validate.py # 语法验证 │ ├── preview.py # 预览服务器 │ └── batch.py # 批量处理 ├── tests/ # 测试套件 ├── quarkdown/ # Quarkdown JAR 分发 ├── pyproject.toml # 项目配置 └── README.md # 本文件

核心组件

  • Server:主 MCP 服务器实现,包含工具注册
  • Config:配置管理和验证
  • Wrapper:用于 Quarkdown 执行的 Java 子进程包装器
  • Tools:遵循 MCP 协议的各个工具实现

开发

运行测试

# 运行所有测试 pytest # 运行覆盖率测试 pytest --cov=quarkdown_mcp # 运行特定测试类别 pytest -m unit pytest -m integration

代码质量

# 格式化代码 black src/ tests/ isort src/ tests/ # 代码检查 flake8 src/ tests/ mypy src/ # 运行所有质量检查 pre-commit run --all-files

构建分发包

# 构建包 python -m build # 本地安装 pip install dist/quarkdown_mcp-*.whl

最新改进 (v1.1)

🎯 核心改进

  • 命令行兼容性修正: 修正了与 Quarkdown CLI 的参数映射问题,确保编译功能正常工作
  • 增强语法验证: 新增 strict_mode 支持和 Quarkdown 特定语法检查
  • 改进错误处理: 更准确的编译状态判断和详细的错误报告
  • 配置类扩展: 添加 create_temp_dir 方法,支持临时目录管理
  • 代码质量提升: 清理重复代码,增强代码健壮性

📋 改进详情

  1. 命令行参数修正
    • 修正 --output-format-r (render target)
    • 修正 --output-path-o (output directory)
    • 添加 --pretty--nowrap 选项支持
  2. 语法验证增强
    • 支持 strict_mode 参数
    • 检查 .callout 缺少 type 参数
    • 检查函数调用语法错误
    • 检查未知容器类型
    • 检查图片缺少 alt 文本
  3. 错误处理改进
    • 检查返回码和输出内容中的错误模式
    • 详细的错误和警告分类
    • 更友好的错误消息

故障排除

常见问题

  1. MCP 服务器启动错误
    • 问题: TypeError: Server.get_capabilities() missing 2 required positional arguments
    • 解决方案: 确保使用 MCP SDK 1.0+ 版本,服务器代码已更新以支持新的 API
  2. 模块导入错误
    • 问题: ModuleNotFoundError: No module named 'quarkdown_mcp.tools.xxx'
    • 解决方案: 确保在 src 目录下运行服务器:cd src && python -m quarkdown_mcp.server
  3. 找不到 Java
    • 问题: Java 未安装或不在 PATH 中
    • 解决方案: 确保安装了 Java 11+ 并在 PATH 中
  4. 找不到 JAR 文件
    • 问题: QUARKDOWN_JAR_PATH 环境变量未设置或路径错误
    • 解决方案: 设置正确的绝对路径:/path/to/quarkdown-mcp/quarkdown/build/libs/quarkdown.jar
  5. 权限错误
    • 问题: 临时目录权限不足
    • 解决方案: 检查临时目录的文件权限,或设置 QUARKDOWN_TEMP_DIR 到可写目录
  6. 端口冲突
    • 问题: 预览服务器端口被占用
    • 解决方案: 为预览服务器使用不同端口
  7. 编译失败问题 (新增)
    • 问题: 编译返回成功但实际失败
    • 解决方案: 检查输出日志中的错误信息,确保 Quarkdown 语法正确
  8. 语法验证问题 (新增)
    • 问题: 语法检查报告不准确
    • 解决方案: 使用 strict_mode: true 获得更详细的检查结果

调试模式

# 启用调试日志 export QUARKDOWN_LOG_LEVEL="DEBUG" cd src python -m quarkdown_mcp.server

版本兼容性

  • MCP SDK: 需要 1.0.0 或更高版本
  • Python: 支持 3.8+,推荐 3.11+
  • Java: 需要 11 或更高版本

性能调优

  • 根据系统资源调整批处理的 max_workers
  • 使用 SSD 存储临时文件以提高 I/O 性能
  • 为大文档处理增加 JVM 堆大小

贡献

我们欢迎贡献!详情请参阅我们的贡献指南

开发工作流程

  1. Fork 仓库
  2. 创建功能分支
  3. 进行更改并添加测试
  4. 运行质量检查
  5. 提交 pull request

代码标准

  • 遵循 PEP 8 风格指南
  • 为所有函数添加类型提示
  • 编写全面的测试
  • 更新文档

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

致谢

更新日志

v1.1 (2024-12)

🔧 重要修复

  • 修正了与 Quarkdown CLI 的命令行参数映射问题
  • 修正 --output-format-r--output-path-o
  • 添加 --pretty--nowrap 选项支持

✨ 新功能

  • 增强语法验证:支持 strict_mode 参数
  • 新增 Quarkdown 特定语法检查(callout、函数、容器、图片)
  • 配置类新增 create_temp_dir 方法

🛠️ 改进

  • 更准确的编译状态判断和错误检测
  • 详细的错误和警告分类
  • 清理重复代码,提升代码质量
  • 更友好的错误消息和建议

📋 测试

  • 添加改进功能的验证测试
  • 确保向后兼容性

v1.0 (2024-11)

  • 初始版本发布
  • 基础 MCP 工具实现
  • 支持文档编译、项目创建、语法验证、预览服务器、批量处理

支持

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    Provides comprehensive document processing, including reading, converting, and manipulating various document formats with advanced text and HTML processing capabilities.
    Last updated -
    16
    231
    11
    TypeScript
    MIT License
  • A
    security
    A
    license
    A
    quality
    A document conversion server that transforms various file formats (PDFs, documents, images, audio, web content) to Markdown with improved multilingual and UTF-8 support.
    Last updated -
    10
    4
    TypeScript
    MIT License
    • Linux
    • Apple
  • A
    security
    F
    license
    A
    quality
    A server that converts various file formats (PDF, images, Office documents, etc.) to Markdown descriptions using Cloudflare AI services.
    Last updated -
    1
    2
    33
    JavaScript
    • Linux
    • Apple
  • -
    security
    A
    license
    -
    quality
    Provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.
    Last updated -
    62
    TypeScript
    MIT License
    • Apple

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Lillard01/quarkdown-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server