Markdown2PDF

Convierte documentos Markdown a archivos PDF con resaltado de sintaxis, estilo personalizado y marca de agua opcional.

Documentación

MseeP.ai Security Assessment Badge

Servidor MCP Markdown2PDF (markdown2pdf-mcp)

Un servidor MCP para convertir documentos Markdown a archivos PDF. Este servidor proporciona una forma simple y eficiente de generar PDFs a partir de contenido Markdown con soporte para resaltado de sintaxis, estilos personalizados, números de página opcionales y colocación flexible de marcas de agua (solo en la primera página o en todas las páginas).

Inspirado en markdown-pdf de Alan Shaw.

Características

  • Convierte Markdown a PDF con un solo comando
  • Resaltado de sintaxis para bloques de código
  • Estilos CSS personalizados para la salida PDF
  • Soporte para formato Markdown estándar
  • Renderizado de diagramas Mermaid
  • Generación moderna de PDF usando el motor de renderizado de Chrome
  • Excelente soporte para características web modernas y fuentes
  • Carga y renderizado confiable de recursos
  • Números de página opcionales renderizados a través del pie de página del PDF
  • Marcas de agua con alcance configurable (primera página o todas las páginas)

Limitaciones

Los siguientes elementos de markdown no son compatibles:

  • Ecuaciones matemáticas LaTeX (por ejemplo, $x^2$ o $$\sum_{i=1}^n x_i$$)
  • Fórmulas matemáticas complejas o notación científica

Cíñete a estos elementos de markdown compatibles:

  • Encabezados (todos los niveles)
  • Formato de texto (negrita, cursiva, tachado)
  • Listas (ordenadas y desordenadas)
  • Bloques de código con resaltado de sintaxis
  • Tablas
  • Citas en bloque
  • Enlaces
  • Imágenes (tanto archivos locales como URLs externas)
  • Listas de tareas
  • Diagramas Mermaid

Diagramas Mermaid

Para renderizar un diagrama Mermaid, usa un bloque de código mermaid:

´´´markdown

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

´´´

Si hay un error de sintaxis en tu diagrama, el mensaje de error se renderizará en el PDF, ayudándote a depurarlo.

Instalación (desde el código fuente)

# 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

Instalación (vía npm)

npm install markdown2pdf-mcp

Uso

Iniciando el Servidor

npm start

Usando la Herramienta MCP

El servidor proporciona una única herramienta create_pdf_from_markdown con los siguientes 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
}

Ejemplo con opciones:

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,
  },
});

Ejemplo 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",
  },
});

Ejecución Bajo Demanda con npx

Puedes ejecutar el servidor sin una instalación local permanente pidiendo a npx que obtenga el último paquete y ejecute su punto de entrada:

npx -y markdown2pdf-mcp@latest

Este comando instala el paquete en un espacio de trabajo temporal y luego inicia el servidor MCP a través de su CLI incluida. Apunta tu cliente compatible con MCP (por ejemplo, Cline o Claude Desktop) a este comando para iniciar el servidor bajo demanda.

Configuración

Directorio de Salida

Puedes configurar el directorio de salida en tu archivo de configuración de MCP para aplicaciones que usan MCP como Cline o Claude. Si no está configurado, guardará los archivos en $HOME:

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

La herramienta maneja automáticamente los conflictos de nombres de archivo agregando números incrementales (por ejemplo, output.pdf, output-1.pdf, output-2.pdf).

Soporte para Archivos Grandes

La herramienta maneja automáticamente archivos markdown grandes con:

  • Tiempos de espera dinámicos: Se escala automáticamente según el tamaño del contenido (hasta 5 minutos para archivos muy grandes)
  • Límites de memoria: Asignación de memoria de 4GB para Chrome para manejar documentos complejos
  • Validación de tamaño: Tamaño máximo de archivo de 10MB con mensajes de error claros
  • Seguimiento de progreso: Muestra el tamaño del contenido y el tiempo de procesamiento estimado

Para archivos muy grandes (más de 1300 líneas), la herramienta:

  1. Te advertirá sobre el tiempo de procesamiento extendido
  2. Aumentará automáticamente los tiempos de espera
  3. Mostrará el tamaño del contenido en la respuesta
  4. Proporcionará mensajes de error detallados si el procesamiento falla

Registro Detallado

Habilita el registro detallado para depuración:

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

Esto registrará los pasos de procesamiento en stderr sin interferir con la comunicación MCP.

¿Prefieres una versión compilada localmente? Cambia "command" de vuelta a node y apunta "args" a la ruta compilada de build/index.js en lugar de usar npx, por ejemplo: "args": ["/path/to/markdown2pdf-mcp/build/index.js"].

Dependencias

Versión de Chrome

Este paquete usa Chrome v131.0.6778.204 para una generación de PDF consistente en todas las instalaciones. Esta versión se instala automáticamente cuando ejecutas npm install.

  • tmp - Manejo de archivos temporales

Desarrollo

# Build the project
npm run build

# Start the server
npm start

Licencia

MIT

Contribuciones

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/amazing-feature)
  3. Haz commit de tus cambios (git commit -m 'Add some amazing feature')
  4. Haz push a la rama (git push origin feature/amazing-feature)
  5. Abre una Solicitud de Extracción (Pull Request)