MCP MD2PDF Server
Utilizes LaTeX engines to ensure high-quality typesetting and professional typography for all generated PDF documents.
Enables the conversion of Markdown content and files into professional PDF documents with support for custom metadata, table of contents, and syntax highlighting.
Provides full support for rendering Mermaid diagrams, including flowcharts, sequence diagrams, and Gantt charts, directly within Markdown-to-PDF conversions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP MD2PDF Serverconvert report.md to a professional PDF with a table of contents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP MD2PDF Server
Un sistema completo per convertire documenti Markdown in PDF con supporto per diagrammi Mermaid, utilizzabile sia come script standalone che come server MCP (Model Context Protocol).
๐ Panoramica
Questo progetto offre due modalitร d'uso:
๐ง Modalitร Script Standalone
Utilizza direttamente lo scri## ๐๏ธ Struttura del Progetto
md2pdf/
โโโ mcp_md2pdf_server.py # ๐ Server MCP principale
โโโ convert.sh # ๐ง Script conversione standalone
โโโ pandoc-wrapper.sh # ๐ Wrapper per Pandoc
โโโ requirements.txt # ๐ฆ Dipendenze Python
โโโ Dockerfile # ๐ณ Immagine Docker per conversione
โโโ install.sh # โ๏ธ Script di installazione automatica
โโโ test_both_modes.sh # ๐งช Test completo entrambe modalitร
โโโ start_server.sh # ๐ Script di avvio MCP (generato)
โโโ test_document.md # ๐ Documento di test (generato)
โโโ README.md # ๐ Questa documentazione
# Directory generate durante test/uso:
test_results/ # ๐ Risultati test automatici
โโโ test_document.md # ๐ Documento test complesso
โโโ script_output.pdf # ๐ Output modalitร script
โโโ mcp_content_output.pdf # ๐ Output modalitร MCP (contenuto)
โโโ mcp_file_output.pdf # ๐ Output modalitร MCP (file)
โโโ test_mcp.py # ๐ Script test MCP generato๐ Descrizione File Principali
mcp_md2pdf_server.py: Server MCP con API completaconvert.sh: Script bash per conversioni diretteinstall.sh: Setup automatico di tutto il sistematest_both_modes.sh: Test completo che verifica entrambe le modalitรDockerfile: Ambiente Docker con Pandoc + Mermaid + LaTeX` per conversioni rapide:Conversione diretta da command line
Nessuna configurazione MCP richiesta
Perfetto per script automatizzati e CI/CD
Utilizzo immediato senza server
๐ Modalitร Server MCP
Espone un server MCP con strumenti avanzati per:
Integrazione con client MCP
API programmatica per conversioni
Gestione avanzata di contenuti e metadati
Controllo granulare delle opzioni di conversione
โจ Funzionalitร Comuni
Entrambe le modalitร supportano:
Conversione Markdown โ PDF di alta qualitร
Supporto completo per diagrammi Mermaid
Personalizzazione dell'output (formato carta, stili, indice)
Gestione degli stili di syntax highlighting
Rendering professionale con LaTeX
๐ Prerequisiti
Python 3.7+ con pip
Docker (per l'ambiente di conversione)
Sistema operativo: Linux, macOS, Windows (con WSL)
๐ง Installazione
Installazione Automatica
Esegui lo script di installazione che configura tutto automaticamente:
./install.shLo script:
โ Verifica Python e pip
๐ฆ Installa le dipendenze Python
๏ฟฝ Verifica Docker
๐๏ธ Costruisce l'immagine Docker per Pandoc/Mermaid
๐งช Esegue test di funzionalitร
๐ Crea script di avvio
๐ Crea file di test
Installazione Manuale
Se preferisci installare manualmente:
Installa dipendenze Python:
pip3 install -r requirements.txtCostruisci l'immagine Docker:
docker build -t pandoc-mermaid .Rendi eseguibili gli script:
chmod +x convert.sh start_server.sh
๐ Utilizzo
๐ง Modalitร Script Standalone
Utilizzare direttamente lo script di conversione:
# Conversione semplice
./convert.sh input.md output.pdf
# Conversione con file di esempio
./convert.sh test_document.md test_document.pdfVantaggi:
โก Veloce e immediato
๐ Nessuna configurazione server
๐ Perfetto per script automatizzati
๐ Ideale per CI/CD pipeline
๐ Modalitร Server MCP
Avvio del Server MCP
./start_server.shOppure direttamente:
python3 mcp_md2pdf_server.pyConfigurazione Client MCP
Il server si connette tramite stdio. Esempio di configurazione:
{
"mcpServers": {
"md2pdf": {
"command": "python3",
"args": ["/path/to/mcp_md2pdf_server.py"],
"cwd": "/workspace/db-ready/md2pdf/"
}
}
}Vantaggi:
๐ Integrazione con client MCP
๐ API strutturata con response JSON
๐ฏ Controllo granulare dei parametri
๐ฆ Gestione avanzata di contenuti e metadati
๐ฏ Quando Usare Quale Modalitร
๐ง Usa la Modalitร Script quando:
โก Hai bisogno di conversioni rapide e immediate
๐ Stai automatizzando processi in script bash/shell
๐๏ธ Integri in pipeline CI/CD
๏ฟฝ Converti documenti occasionalmente
๐ฅ๏ธ Lavori principalmente da command line
โ๏ธ Vuoi il minimo overhead di setup
Esempio tipico:
# Nel tuo script di build
./convert.sh documentation.md docs/manual.pdf๐ Usa la Modalitร MCP quando:
๐ Ti integri con client MCP esistenti
๐ Hai bisogno di response strutturate JSON
๐๏ธ Vuoi controllo granulare sui parametri
๐ฆ Gestisci metadati complessi (title, author, etc.)
๐ Converti contenuti dinamici da applicazioni
๐ฅ๏ธ Sviluppi applicazioni che richiedono API
Esempio tipico:
# Nel tuo client MCP
result = await mcp_client.call_tool("convert_md_to_pdf", {
"markdown_content": dynamic_content,
"title": "Report Generato",
"author": "Sistema Automatico"
})๐ Confronto Modalitร
Aspetto | ๐ง Script | ๐ MCP |
Setup | Immediato | Configurazione client |
Velocitร | โก Velocissimo | ๐ง Configurabile |
Output | File PDF | JSON + PDF base64 |
Integrazione | Shell/Bash | Programmatica |
Metadati | Limitati | Completi |
Error Handling | Exit codes | JSON structured |
Uso Tipico | Batch/Automation | Applications/Services |
๐ ๏ธ Strumenti Disponibili (Modalitร MCP)
Il server MCP espone i seguenti strumenti:
1. convert_md_to_pdf
Converte contenuto Markdown in PDF.
Parametri:
markdown_content(required): Il contenuto Markdown da convertireoutput_filename(optional): Nome del file PDF di output (default: "output.pdf")title(optional): Titolo del documentoauthor(optional): Autore del documentopapersize(optional): Formato carta (a4, letter, a3, legal, etc.) (default: "a4")toc(optional): Includere l'indice (default: true)highlight_style(optional): Stile di syntax highlighting (default: "pygments")
Esempio risposta:
{
"success": true,
"filename": "output.pdf",
"size_bytes": 123456,
"size_human": "120.6 KB",
"pdf_base64": "JVBERi0xLjQK...",
"message": "โ
PDF generato con successo"
}2. convert_md_file_to_pdf
Converte un file Markdown esistente in PDF.
Parametri:
input_path(required): Percorso del file Markdown di inputoutput_path(optional): Percorso del file PDF di outputtitle,author,papersize,toc,highlight_style: Come sopra
Esempio risposta:
{
"success": true,
"output_path": "/path/to/output.pdf",
"filename": "output.pdf",
"size_bytes": 123456,
"size_human": "120.6 KB",
"message": "โ
PDF salvato in: /path/to/output.pdf"
}3. list_highlight_styles
Elenca gli stili di syntax highlighting disponibili.
Esempio risposta:
{
"success": true,
"styles": ["pygments", "kate", "monochrome", "breezeDark", ...],
"count": 25
}4. get_pandoc_info
Ottiene informazioni sulla versione di Pandoc e funzionalitร disponibili.
Esempio risposta:
{
"success": true,
"pandoc_version": "pandoc 3.1.11",
"pdf_engines": ["pdflatex", "xelatex", "lualatex"],
"mermaid_filter_available": true
}๏ฟฝ Esempi Pratici
๐ง Script Mode - Esempi Command Line
# Conversione base
./convert.sh document.md document.pdf
# Conversione con file di documentazione
./convert.sh README.md manual.pdf
# Batch conversion (esempio script)
for file in *.md; do
./convert.sh "$file" "${file%.md}.pdf"
done
# Integrazione in Makefile
docs:
./convert.sh docs/api.md dist/api-manual.pdf
./convert.sh docs/guide.md dist/user-guide.pdf๐ MCP Mode - Esempi Programmatici
Conversione contenuto dinamico:
import asyncio
from mcp_md2pdf_server import convert_md_to_pdf
async def generate_report():
content = f"""
# Report Giornaliero
Data: {datetime.now().strftime('%Y-%m-%d')}
## Statistiche
- Utenti attivi: {get_active_users()}
- Vendite: {get_sales_data()}
"""
result = await convert_md_to_pdf(
markdown_content=content,
output_filename="daily_report.pdf",
title="Report Giornaliero",
author="Sistema Automatico"
)
return resultIntegrazione con client MCP:
{
"tool": "convert_md_file_to_pdf",
"arguments": {
"input_path": "/docs/specification.md",
"output_path": "/output/spec_v2.pdf",
"title": "API Specification v2.0",
"author": "Development Team",
"papersize": "a4",
"toc": true
}
}๐ Supporto Mermaid
Il server supporta completamente i diagrammi Mermaid. Esempi di diagrammi supportati:
Flowchart
graph TD
A[Start] --> B{Decision}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
C --> E[End]
D --> ESequence Diagram
sequenceDiagram
participant A as Alice
participant B as Bob
A->>B: Hello Bob, how are you?
B-->>A: Great!Gantt Chart
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d๏ฟฝ๏ธ Struttura del Progetto
md2pdf/
โโโ mcp_md2pdf_server.py # Server MCP principale
โโโ requirements.txt # Dipendenze Python
โโโ Dockerfile # Immagine Docker per conversione
โโโ convert.sh # Script di conversione
โโโ pandoc-wrapper.sh # Wrapper per Pandoc
โโโ install.sh # Script di installazione
โโโ start_server.sh # Script di avvio (generato)
โโโ test_document.md # Documento di test (generato)
โโโ README.md # Questa documentazione๐ณ Ambiente Docker
L'ambiente Docker include:
Ubuntu 22.04 come base
Pandoc 3.1.11 per la conversione
Node.js 18.x per mermaid-filter
TeX Live per la generazione PDF
Google Chrome per il rendering Mermaid
mermaid-filter e @mermaid-js/mermaid-cli
โ๏ธ Configurazione
Variabili d'Ambiente Docker
Il container utilizza:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=truePUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stablePUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu"
Opzioni di Conversione
Il sistema supporta:
Formati carta: a4, letter, a3, legal, etc.
Stili highlighting: pygments, kate, monochrome, breezeDark, etc.
Engines PDF: pdflatex, xelatex, lualatex
Opzioni layout: margini personalizzabili, indice, numerazione pagine
๐ Troubleshooting
Errori Comuni
Docker non in esecuzione
Errore: Docker daemon non in esecuzione Soluzione: Avvia Docker Desktop o il daemon DockerImmagine Docker non trovata
Errore: Unable to find image 'pandoc-mermaid:latest' Soluzione: Ricostruisci l'immagine con: docker build -t pandoc-mermaid .Errori di conversione Mermaid
Errore: mermaid-filter non trovato Soluzione: Ricostruisci l'immagine Docker per installare mermaid-filterProblemi di permessi
Errore: Permission denied Soluzione: Verifica i permessi dei file e directory
Debug
Per debug dettagliato, modifica convert.sh aggiungendo:
set -x # Abilita debug verboseLog
Il server MCP scrive su stdout/stderr. Per salvare i log:
python3 mcp_md2pdf_server.py 2>&1 | tee server.log๐งช Testing
Test Script Standalone
Test conversione diretta con script:
# Test con documento di esempio ./convert.sh test_document.md test_output.pdf # Test con contenuto personalizzato echo "# Test Document" > my_test.md ./convert.sh my_test.md my_test.pdfTest con diagrammi Mermaid:
cat > mermaid_test.md << 'EOF' # Test Mermaid ```mermaid graph TD A[Start] --> B[End]EOF
./convert.sh mermaid_test.md mermaid_test.pdf
Test Server MCP
Test server MCP programmatico:
python3 -c " from mcp_md2pdf_server import convert_md_to_pdf import asyncio result = asyncio.run(convert_md_to_pdf('# Test MCP')) print(result) "Test avvio server:
# Avvia server in background per test python3 mcp_md2pdf_server.py & SERVER_PID=$! # Attendi avvio e poi chiudi sleep 2 kill $SERVER_PID
Test Completo Sistema
Verifica Docker:
# Verifica che l'immagine sia stata costruita docker images | grep pandoc-mermaid # Test dell'immagine docker run --rm pandoc-mermaid pandoc --versionTest integrazione completa:
# Crea documento di test complesso cat > full_test.md << 'EOF' # Test Completo ## Sezione Code ```python print("Hello World")Sezione Mermaid
sequenceDiagram Alice->>Bob: Hello Bob-->>Alice: Hi!EOF
Test script
./convert.sh full_test.md full_test_script.pdf
Test MCP (se server รจ in esecuzione)
Confronta i risultati
Test automatico completo (Entrambe le modalitร ):
# Esegue test completo di entrambe le modalitร ./test_both_modes.shQuesto script:
โ Testa conversione con script
convert.shโ Testa conversione con server MCP
๐ Confronta i risultati di entrambe le modalitร
๐ Verifica l'integrazione Docker
๐ Genera report dettagliato dei test
๐ Salva tutti i file di test in
test_results/
๐ค Contribuire
Fork del repository
Crea un branch per la feature (
git checkout -b feature/AmazingFeature)Commit delle modifiche (
git commit -m 'Add some AmazingFeature')Push al branch (
git push origin feature/AmazingFeature)Apri una Pull Request
๐ Licenza
Questo progetto รจ distribuito sotto licenza MIT. Vedi il file LICENSE per i dettagli.
๐ Supporto
Per problemi o domande:
Controlla la sezione Troubleshooting
Verifica che tutti i prerequisiti siano installati
Esegui il test di installazione con
./install.shApri un issue su GitHub con i dettagli dell'errore
๐ Aggiornamenti
Per aggiornare il sistema:
Ferma il server MCP
Fai il pull delle modifiche
Ricostruisci l'immagine Docker:
docker build -t pandoc-mermaid .Riavvia il server
Versione: 1.0.0
Ultimo aggiornamento: $(date +%Y-%m-%d)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/valyc0/mcp-md2pdf'
If you have feedback or need assistance with the MCP directory API, please join our Discord server