Markdown2PDF

Converta documentos Markdown para arquivos PDF com destaque de sintaxe, estilo personalizado e marca d'água opcional.

Documentação

MseeP.ai Security Assessment Badge

Servidor MCP Markdown2PDF (markdown2pdf-mcp)

Um servidor MCP para converter documentos Markdown em arquivos PDF. Este servidor fornece uma maneira simples e eficiente de gerar PDFs a partir de conteúdo Markdown, com suporte para realce de sintaxe, estilos personalizados, números de página opcionais e posicionamento flexível de marcas d'água (somente na primeira página ou em todas as páginas).

Inspirado no markdown-pdf de Alan Shaw.

Recursos

  • Converter Markdown para PDF com um único comando
  • Realce de sintaxe para blocos de código
  • Estilo CSS personalizado para saída em PDF
  • Suporte para formatação Markdown padrão
  • Renderização de diagramas Mermaid
  • Geração de PDF moderna usando o mecanismo de renderização do Chrome
  • Excelente suporte para recursos e fontes web modernas
  • Carregamento e renderização confiáveis de recursos
  • Números de página opcionais renderizados via rodapé do PDF
  • Marcas d'água com escopo configurável (primeira página ou todas as páginas)

Limitações

Os seguintes elementos Markdown não são suportados:

  • Equações matemáticas LaTeX (por exemplo, $x^2$ ou $$\sum_{i=1}^n x_i$$)
  • Fórmulas matemáticas complexas ou notação científica

Use apenas estes elementos Markdown suportados:

  • Cabeçalhos (todos os níveis)
  • Formatação de texto (negrito, itálico, tachado)
  • Listas (ordenadas e não ordenadas)
  • Blocos de código com realce de sintaxe
  • Tabelas
  • Citações em bloco
  • Links
  • Imagens (tanto arquivos locais quanto URLs externas)
  • Listas de tarefas
  • Diagramas Mermaid

Diagramas Mermaid

Para renderizar um diagrama Mermaid, use um bloco de código mermaid:

´´´markdown

graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

´´´

Se houver um erro de sintaxe no seu diagrama, a mensagem de erro será renderizada no PDF, ajudando você a depurá-lo.

Instalação (a partir do código-fonte)

# Clone the repository
git clone https://github.com/2b3pro/markdown2pdf-mcp.git

# Navigate to the project directory
cd markdown2pdf-mcp

# Install dependencies
npm install

# Build the project
npm run build

Instalação (via npm)

npm install markdown2pdf-mcp

Uso

Iniciando o Servidor

npm start

Usando a Ferramenta MCP

O servidor fornece uma única ferramenta create_pdf_from_markdown com os seguintes parâmetros:

{
  // Required parameters
  markdown: string;    // Markdown content to convert

  // Optional parameters with defaults
  outputFilename?: string;  // Filename for the PDF (e.g., "output.pdf")
  paperFormat?: string;     // 'letter' (default), 'a4', 'a3', 'a5', 'legal', 'tabloid'
  paperOrientation?: string; // 'portrait' (default), 'landscape'
  paperBorder?: string;     // '2cm' (default), accepts decimal values with CSS units (e.g., '1.5cm', '2.5mm', '0.5in', '10.5px')
  watermark?: string;       // Optional watermark text (max 15 characters, uppercase)
  watermarkScope?: 'all-pages' | 'first-page'; // Defaults to 'all-pages'
  showPageNumbers?: boolean; // Defaults to false
}

Exemplo com opções:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\nThis is a test document.",
    outputFilename: "output.pdf",
    paperFormat: "a4",
    paperOrientation: "landscape",
    paperBorder: "1.5cm",
    watermark: "DRAFT",
    watermarkScope: "first-page",
    showPageNumbers: true,
  },
});

Exemplo de uso mínimo:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\nThis is a test document.",
    outputFilename: "output.pdf",
  },
});

Executando sob demanda com npx

Você pode executar o servidor sem uma instalação local permanente pedindo ao npx para obter o pacote mais recente e executar seu ponto de entrada:

npx -y markdown2pdf-mcp@latest

Este comando instala o pacote em um espaço de trabalho temporário e então inicia o servidor MCP via sua CLI integrada. Aponte seu cliente compatível com MCP (por exemplo, Cline ou Claude Desktop) para este comando para iniciar o servidor sob demanda.

Configuração

Diretório de Saída

Você pode configurar o diretório de saída no arquivo de configurações do MCP para aplicativos que usam MCP, como Cline ou Claude. Se não configurado, ele salvará os arquivos em $HOME:

{
  "mcpServers": {
    "markdown2pdf": {
      "args": ["/path/to/markdown2pdf-mcp/build/index.js"],
      "env": {
        "M2P_OUTPUT_DIR": "/path/to/output/directory"
      }
    }
  }
}

A ferramenta lida automaticamente com conflitos de nomes de arquivo anexando números incrementais (por exemplo, output.pdf, output-1.pdf, output-2.pdf).

Suporte a Arquivos Grandes

A ferramenta lida automaticamente com arquivos Markdown grandes com:

  • Tempos limite dinâmicos: Escala automaticamente com base no tamanho do conteúdo (até 5 minutos para arquivos muito grandes)
  • Limites de memória: Alocação de 4GB de memória para o Chrome lidar com documentos complexos
  • Validação de tamanho: Tamanho máximo de arquivo de 10MB com mensagens de erro claras
  • Acompanhamento de progresso: Mostra o tamanho do conteúdo e o tempo de processamento estimado

Para arquivos muito grandes (mais de 1300 linhas), a ferramenta irá:

  1. Avisar sobre o tempo de processamento estendido
  2. Aumentar automaticamente os tempos limite
  3. Exibir o tamanho do conteúdo na resposta
  4. Fornecer mensagens de erro detalhadas se o processamento falhar

Registro Detalhado

Ative o registro detalhado para depuração:

{
  "mcpServers": {
    "markdown2pdf": {
      "command": "node",
      "args": ["/path/to/markdown2pdf-mcp/build/index.js"],
      "env": {
        "M2P_OUTPUT_DIR": "/path/to/output/directory",
        "M2P_VERBOSE": "true"
      }
    }
  }
}

Isso registrará as etapas de processamento no stderr sem interferir na comunicação MCP.

Prefere uma versão compilada localmente? Troque "command" de volta para node e aponte "args" para o caminho compilado de build/index.js em vez de usar npx, por exemplo: "args": ["/path/to/markdown2pdf-mcp/build/index.js"].

Dependências

Versão do Chrome

Este pacote usa Chrome v131.0.6778.204 para geração consistente de PDF em todas as instalações. Esta versão é instalada automaticamente quando você executa npm install.

  • tmp - Manipulação de arquivos temporários

Desenvolvimento

# Build the project
npm run build

# Start the server
npm start

Licença

MIT

Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request