# 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
```