MCP MD2PDF Server

by valyc0

Not rated
GitHub

About

Convert Markdown documents to PDF with support for Mermaid diagrams.

Details

Author
valyc0
Categories
Productivity

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 convertire
-
output_filename(optional): Nome del file PDF di output (default: "output.pdf")
-
title(optional): Titolo del documento
-
author(optional): Autore del documento
-
papersize(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 input
-
output_path(optional): Percorso del file PDF di output
-
title,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=true
-
PUPPETEER_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 scriptconvert.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/
- 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 fileLICENSEper 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

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.