Skip to main content
Glama

MCP PDF Server

by xblanc33
README.md3.44 kB
MCP PDF Server =============== An MCP (Model Context Protocol) server exposing tools to render Markdown into PDF. What’s included - MCP tools: `pdf_from_markdown` (primary) and `md_to_pdf` (alias). - Accepts inline Markdown or a file path. - Options for paper format and orientation; sensible `output/` defaults. Prerequisites - Node.js 18+ recommended. Install ```sh npm install # Download browsers for Playwright (Chromium only is enough): npx playwright install chromium ``` Build ```sh npm run build ``` Run (stdio) ```sh npm start ``` Configure in your MCP-compatible client by pointing to the compiled binary or `npm start` command. MCP Tools - Tool ids: `pdf_from_markdown` (primary) and `md_to_pdf` (alias for discoverability) - Purpose: Generate a PDF from Markdown. - Inputs: - `markdown` (string, optional): Inline Markdown content. If set, `path` is ignored. - `path` (string, optional): Absolute or relative path to a `.md` file. Ignored if `markdown` is provided. - `outputPath` (string, optional): Desired output PDF path. Defaults to `output/<timestamp>.pdf` and creates missing directories. - `paperFormat` (string, optional): `A4` | `Letter` | `Legal` (default: `A4`). - `paperOrientation` (string, optional): `portrait` | `landscape` (default: `portrait`). - Provide exactly one of `markdown` or `path`. If both are set, `markdown` takes precedence. - Output: - Returns a text message containing the absolute path to the created PDF. - Example (inline): ```json { "tool": "md_to_pdf", "arguments": { "markdown": "# Hello\nThis will render to PDF.", "paperFormat": "A4" } } ``` - Example (file path): ```json { "tool": "pdf_from_markdown", "arguments": { "path": "examples/sample.md", "outputPath": "output/sample.pdf", "paperOrientation": "landscape" } } ``` Tool Schema (compact) ``` tools: - id: pdf_from_markdown alias: md_to_pdf params: markdown?: string # Inline Markdown (preferred if both set) path?: string # Path to a .md file outputPath?: string # Output PDF path (default: output/<timestamp>.pdf) paperFormat?: 'A4'|'Letter'|'Legal' # default: 'A4' paperOrientation?: 'portrait'|'landscape' # default: 'portrait' constraints: - Provide exactly one of markdown or path (if both provided, markdown is used) result: - type: text text: "PDF created at: <absolute path>" ``` Client configuration (example) If your MCP client supports JSON configuration for a stdio server, a minimal entry might look like: ```json { "servers": { "mcp-pdf": { "command": "node", "args": ["dist/index.js"] } } } ``` Notes - Uses Playwright (Chromium) to render HTML from Markdown and print to PDF. - On first install, Playwright may download a browser. You can also point it to an existing Chrome/Chromium. One‑liner with npx - After this package is published to npm, you can run the server directly: - `npx -y md-2-pdf-mcp` (runs the `md-2-pdf-mcp` bin) - Or explicitly: `npx -y -p md-2-pdf-mcp mcp-pdf` - The package defines `bin` entries and a `postinstall` that installs Chromium. - From the local repo (without publishing): - `npx --yes .` - This uses the `bin` in package.json and the `prepare` script to build.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xblanc33/md-2-pdf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server