Quarto文档转换服务

将Quarto Markdown文档转换为多种格式(如PowerPoint、PDF等)的服务,支持自定义模板和Mermaid图表验证。

  • by notfolder
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 notfolder/quarto_mcp

使用说明

Quarto MCP服务器

支持MCP(Model Context Protocol)的服务器,接收Quarto Markdown(.qmd格式)作为字符串,转换为以PowerPoint(.pptx)格式为中心的Quarto CLI支持的各种输出格式。

主要机能

  • 以PowerPoint格式为主轴:将企业演示文稿设计为首选用例
  • 支持自定义模板:可为PowerPoint指定企业模板(.pptx)
    • 在配置文件中预注册多个模板
    • 在工具参数中指定模板ID或URL
    • 指定URL时自动下载使用(HTTP/HTTPS対応)
  • Mermaid验证:在渲染之前验证Mermaid语法
    • 多层验证方法(正则表达式+Mermaid CLI)
    • 非法标记法的检测(拼写错误、代码块外的关键字等)
    • 详细的错误报告
  • 基于字符串的输入:从LLM/MCP客户端接受Quarto Markdown作为纯字符串
  • 多形式出力対応:支持除PowerPoint以外的Quarto CLI支持的所有形式
  • 文件路径输出:直接在指定路径上生成输出文件
  • 仅静态转换:为了确保安全,不执行代码单元格(--no-execute固定)

必须环境

  • Python 3.10以上
  • Quarto CLI 1.3以上

使用Mermaid验证功能时(推荐)

  • Node.js 14以上
  • Mermaid CLI: npm install -g @mermaid-js/mermaid-cli

安装

使用uvx运行(推荐)

# ローカルディレクトリから実行
uvx --from . quarto-mcp

# Gitリポジトリから直接実行
uvx --from git+https://github.com/notfolder/quarto_mcp quarto-mcp

使用pip安装

# ローカルから
pip install .

# Gitから
pip install git+https://github.com/notfolder/quarto_mcp

使用方法

MCP客户端配置文件(例如: ~/.config/mcp/settings.json)中添加以下内容:

{
  "mcpServers": {
    "quarto": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/notfolder/quarto_mcp", "quarto-mcp"]
    }
  }
}

交付工具

石英渲染器

将快速标记转换为指定格式。

参数:

  • content (必须):Quarto Markdown形式の文字列
  • format (必须):出力形式ID(pptx,html,pdf,docx等)
  • output_filename (必需):输出文件的绝对路径
  • template (可选):指定PowerPoint模板
    • 模板ID(在template.yaml中定义)
    • HTTP/HTTPS URL(.pptx文件)-支持自动下载
  • format_options (可选):特定于输出格式的选项

使用例:

# テンプレートIDを使用
{
  "content": "# スライドタイトル\n\n内容",
  "format": "pptx",
  "output_filename": "/path/to/output.pptx",
  "template": "corporate_standard"
}

# HTTP URLからテンプレートをダウンロード
{
  "content": "# スライドタイトル\n\n内容",
  "format": "pptx",
  "output_filename": "/path/to/output.pptx",
  "template": "https://example.com/templates/custom.pptx"
}

quarto_list_格式

获取支持的输出格式列表。

quarto_validate美人鱼

验证Quarto Markdown中Mermaid图表的语法。建议用于渲染前的预验证。

参数:

  • content (必须):Quarto Markdown形式の文字列
  • strict_mode (可选)严格模式(将警告视为错误),默认为假

使用例:

{
  "content": "# スライド\n\n```{mermaid}\ngraph TD\n    A --> B\n```",
  "strict_mode": false
}

必须要件:

  • 必须使用“Mermid CLI(mmdc)”
  • 安装方法: npm install -g @mermaid-js/mermaid-cli
  • 需要大于等于Node.js14

建议工作流:

  1. quarto_validate_mermaid在中验证Mermaid语法
  2. 如果验证成功quarto_render执行渲染

模板功能

模板标识

config/templates.yaml可以在中预注册模板:

templates:
  corporate_standard:
    path: /path/to/corporate_standard.pptx
    description: "企業標準テンプレート"

HTTP/HTTPS下载

通过直接指定URL,可以自动下载模板:

  • 支持的协议:HTTP,HTTPS(推荐HTTPS)
  • 文件格式:仅限.pptx格式
  • 下载超时: 30秒
  • 最大文件大小:50 MB

支持格式

演示文稿格式

  • pptx:支持模板的Microsoft PowerPoint
  • revealjs:Revial.js HTML演示文稿
  • beamer:LaTeX Beamer

文档格式

  • html:HTML5
  • pdf:PDF
  • docx:微软Word
  • odt:OpenDocument文本
  • epub:EPUB电子书籍

Markdown形式

  • gfm:GitHub风格的Markdown
  • commonmark:CommonMark
  • hugo:雨果
  • docusaurus:博士

此外,支持多种形式。详情quarto_list_formats工具确认。

测试

测试环境设置

# 仮想環境を作成
uv venv
source .venv/bin/activate

# 依存関係をインストール
uv pip install -e ".[dev]"

运行测试

# すべてのテストを実行
pytest

# 統合テストのみ実行(Quarto CLIが必要)
pytest tests/test_integration.py -v

# PowerPoint出力テスト(手動確認用)
pytest tests/test_integration.py::test_render_pptx_for_manual_inspection -v -s

关于手动验证测试:

test_render_pptx_for_manual_inspection测试将实际的PowerPoint文件test_output/demo_presentation.pptx中所述修改相应参数的值。执行测试后,可以通过以下命令打开文件以查看其内容:

open test_output/demo_presentation.pptx  # macOS
# または
xdg-open test_output/demo_presentation.pptx  # Linux

许可证

CC-BY-4.0

详细仕样

有关详细设计规范,请参见docs/SPEC.md来修改标记元素的显示属性。