MCP MD2PDF Server
About
Convert Markdown documents to PDF with support for Mermaid diagrams.
Details
- Author
- valyc0
- Categories
- Productivity
Jump to
Setup
Install MCP MD2PDF Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/valyc0/mcp-md2pdf
Follow the installation instructions in the repository README, then restart your MCP client.
Convert Markdown documents to PDF with support for Mermaid diagrams.
Un sistema completo per convertire documenti Markdown in PDF con supporto per diagrammi Mermaid, utilizzabile sia comescript standaloneche comeserver MCP(Model Context Protocol).
Questo progetto offredue modalitΓ d'uso:
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
- mcp_md2pdf_server.py: Server MCP con API completa
- convert.sh: Script bash per conversioni dirette
- install.sh: Setup automatico di tutto il sistema
- test_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
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
- 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
- Python 3.7+con pip
- Docker(per l'ambiente di conversione)
- Sistema operativo: Linux, macOS, Windows (con WSL)
Esegui lo script di installazione che configura tutto automaticamente:
- β
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
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.pdf
- β‘ Veloce e immediato
- π Nessuna configurazione server
- π Perfetto per script automatizzati
- π Ideale per CI/CD pipeline
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/" } } }
- π Integrazione con client MCP
- π API strutturata con response JSON
- π― Controllo granulare dei parametri
- π¦ Gestione avanzata di contenuti e metadati
- β‘ 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
# Nel tuo script di build ./convert.sh documentation.md docs/manual.pdf
- π 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
# Nel tuo client MCP result = await mcp_client.call_tool("convert_md_to_pdf", { "markdown_content": dynamic_content, "title": "Report Generato", "author": "Sistema Automatico" })
Il server MCP espone i seguenti strumenti:
- 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")
{ "success": true, "filename": "output.pdf", "size_bytes": 123456, "size_human": "120.6 KB", "pdf_base64": "JVBERi0xLjQK...", "message": "β PDF generato con successo" }
Converte un file Markdown esistente in PDF.
- input_path(required): Percorso del file Markdown di inputoutput_path
- (optional): Percorso del file PDF di outputtitle
- ,author,papersize,toc,highlight_style: Come sopra
{ "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" }
Elenca gli stili di syntax highlighting disponibili.
{ "success": true, "styles": ["pygments", "kate", "monochrome", "breezeDark", ...], "count": 25 }
Ottiene informazioni sulla versione di Pandoc e funzionalitΓ disponibili.
{ "success": true, "pandoc_version": "pandoc 3.1.11", "pdf_engines": ["pdflatex", "xelatex", "lualatex"], "mermaid_filter_available": true }
# 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
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 result
{ "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 } }
Il server supporta completamente i diagrammi Mermaid. Esempi di diagrammi supportati:
graph TD A[Start] --> B{Decision} B -->|Yes| C[Action 1] B -->|No| D[Action 2] C --> E[End] D --> E
sequenceDiagram participant A as Alice participant B as Bob A->>B: Hello Bob, how are you? B-->>A: Great!
gantt title A Gantt Diagram dateFormat YYYY-MM-DD section Section A task :a1, 2014-01-01, 30d Another task :after a1 , 20d
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
- Ubuntu 22.04come base
- Pandoc 3.1.11per la conversione
- Node.js 18.xper mermaid-filter
- TeX Liveper la generazione PDF
- Google Chromeper il rendering Mermaid
- mermaid-filtere@mermaid-js/mermaid-cli
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=truePUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
- PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu"
-
- 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
Errore: Docker daemon non in esecuzione Soluzione: Avvia Docker Desktop o il daemon Docker
Errore: Unable to find image 'pandoc-mermaid:latest' Soluzione: Ricostruisci l'immagine con: docker build -t pandoc-mermaid .
Errore: mermaid-filter non trovato Soluzione: Ricostruisci l'immagine Docker per installare mermaid-filter
Errore: Permission denied Soluzione: Verifica i permessi dei file e directory
Per debug dettagliato, modificaconvert.shaggiungendo:
Il server MCP scrive su stdout/stderr. Per salvare i log:
python3 mcp_md2pdf_server.py 2>&1 | tee server.log
# 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.pdf
cat > mermaid_test.md << 'EOF' # Test Mermaid mermaid graph TD A[Start] --> B[End]
./convert.sh mermaid_test.md mermaid_test.pdf
python3 -c " from mcp_md2pdf_server import convert_md_to_pdf import asyncio result = asyncio.run(convert_md_to_pdf('# Test MCP')) print(result) "
# Avvia server in background per test python3 mcp_md2pdf_server.py & SERVER_PID=$! # Attendi avvio e poi chiudi sleep 2 kill $SERVER_PID
# Verifica che l'immagine sia stata costruita docker images | grep pandoc-mermaid # Test dell'immagine docker run --rm pandoc-mermaid pandoc --version
# Crea documento di test complesso cat > full_test.md << 'EOF' # Test Completo ## Sezione Code ``python print("Hello World")
sequenceDiagram Alice->>Bob: Hello Bob-->>Alice: Hi!
./convert.sh full_test.md full_test_script.pdf
Test automatico completo (Entrambe le modalitΓ ):
# Esegue test completo di entrambe le modalitΓ ./test_both_modes.sh``
- β
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 intest_results/
- 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
Questo progetto Γ¨ distribuito sotto licenza MIT. Vedi il file
LICENSEper i dettagli.
- Controlla la sezioneTroubleshooting
- Verifica che tutti i prerequisiti siano installati
- Esegui il test di installazione con./install.sh
- Apri un issue su GitHub con i dettagli dell'errore
- 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)
The 1Password MCP server creates a bridge that allows MCP clients such as Codex and Kiro to manage your 1Password Environments with secure authorization prompts.
This is the 1st, easiest, and cheapest PPT, slides, presentation AI generation MCP Server in the world.
Persistent memory for any AI assistant. Zero token cost until recall. Stores memories in local SQLite, ranks by 6-factor scoring, returns results 79% smaller than JSON. Works with Claude, ChatGPT, Grok, Cursor, Windsurf, and any MCP client.
A MCP server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.
Enables LLM clients to interact with macOS applications through AppleScript. Built using the @beyondbetter/bb-mcp-server library, this server provides safe, controlled execution of predefined scripts with optional support for arbitrary script execution.
An MCP server for WordPress plugin audits
Turn your AI assistant into a digital marketing hub that creates, organizes, and analyzes links and QR Codes on demand.
Connect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.
Sync Calendars, Scheduling Links, AI Executive Scheduling Assistant, Unified Calendar
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



