MD-PDF MCP Server
# MD-PDF MCP Server
A Model Context Protocol (MCP) server for converting between Markdown and PDF formats.
## System Requirements
**Tested on:**
- macOS 14.3.0 (Darwin 23.3.0, ARM64)
- Python 3.13.0
- uv 0.7.13
- pandoc 3.6.2
## Features
- Convert Markdown content/files to PDF with size options (small, medium, large)
- Convert PDF files to Markdown format
- Extract text from specific PDF pages
- Retrieve PDF metadata
## MCP Tools
1. `convert_markdown_to_pdf(markdown_content, output_filename, size, pdf_engine)`
2. `convert_markdown_file_to_pdf(markdown_file_path, output_filename, size, pdf_engine)`
3. `convert_pdf_to_markdown(pdf_file_path, output_filename)`
4. `extract_text_from_pdf(pdf_file_path, page_numbers)`
5. `get_pdf_info(pdf_file_path)`
## Installation
```bash
# Install dependencies
curl -LsSf https://astral.sh/uv/install.sh | sh
brew install pandoc weasyprint
# Setup project
uv sync
```
## Running the Server
```bash
uv run python main.py
```
## MCP Integration
### Claude Desktop
```json
{
"mcpServers": {
"md-pdf": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/md-pdf",
"run",
"main.py"
]
}
}
}
```
### Cursor
Configure MCP in Cursor settings
```json
{
"servers": {
"md-pdf": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/md-pdf"
}
}
}
```
## Size Options
- `s`: 8pt font, 0.35in margins (compact)
- `m`: 9pt font, 0.5in margins (standard)
- `l`: 11pt font, 1in margins (detailed)
## Project Structure
```
md-pdf/
├── data/ # Test files
├── tools/ # MCP tool definitions
├── utils/ # Conversion utilities
├── main.py # Server entry point
└── server.py # MCP server instance
```
TDQS
Scored across 5 tools
There is significant overlap between convert_markdown_file_to_pdf and convert_markdown_to_pdf, which differ only in input type (file vs. content) and could easily be confused. The other three tools have distinct purposes (PDF to Markdown conversion, text extraction, and metadata retrieval), but the two Markdown-to-PDF tools create ambiguity.
All tool names follow a consistent verb_noun pattern with clear, descriptive actions (convert, extract, get) and objects (markdown_file_to_pdf, pdf_to_markdown, text_from_pdf, pdf_info). The naming is uniform and predictable throughout the set.
With 5 tools, this server is well-scoped for its PDF/Markdown conversion domain. The count is appropriate, covering key operations without being overly sparse or bloated, and each tool appears to serve a distinct functional role in the workflow.
The toolset provides solid coverage for PDF and Markdown interactions, including conversion in both directions, text extraction, and metadata retrieval. A minor gap exists in lacking tools for editing or manipulating PDFs/Markdown files beyond conversion, but core workflows are well-supported.