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

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:
- Te advertirá sobre el tiempo de procesamiento extendido
- Aumentará automáticamente los tiempos de espera
- Mostrará el tamaño del contenido en la respuesta
- 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 anodey apunta"args"a la ruta compilada debuild/index.jsen lugar de usarnpx, por ejemplo:"args": ["/path/to/markdown2pdf-mcp/build/index.js"].
Dependencias
- @modelcontextprotocol/sdk - SDK de MCP para la implementación del servidor
- remarkable - Analizador de Markdown
- highlight.js - Resaltado de sintaxis
- puppeteer - Generación moderna de PDF usando Chrome for Testing (v131.0.6778.204)
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
- Haz un fork del repositorio
- Crea tu rama de características (
git checkout -b feature/amazing-feature) - Haz commit de tus cambios (
git commit -m 'Add some amazing feature') - Haz push a la rama (
git push origin feature/amazing-feature) - Abre una Solicitud de Extracción (Pull Request)
