Skip to main content
Glama
kareemaly

MD-PDF MCP Server

by kareemaly
README.md
# 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

A3.6/5.0

Scored across 5 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues