Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Word To Pdf

FreeNot checked

word-to-pdf-mcp is a secure, production-ready remote MCP server that converts .docx files to PDF using LibreOffice as a persistent unoserver daemon.

GitHubEmbed

About

word-to-pdf-mcp is a secure, production-ready remote MCP server that converts .docx files to PDF using LibreOffice as a persistent unoserver daemon.

README

Remote MCP server that converts .docx to PDF. Works with any MCP client — Claude (web & CLI), Cursor, Windsurf, or anything that speaks the Model Context Protocol.

Runs as a Docker container with LibreOffice as a persistent daemon (unoserver). First conversion triggers a warmup; subsequent conversions take ~0.3s.

Setup

cp .env.example .env
touch credentials.json
docker compose up -d --build
docker compose exec mcp-pdf python manage_keys.py add yourname

Requires an external Docker network (docker network create caddy_net) and a reverse proxy for TLS (see Reverse proxy).

Manage credentials

docker compose exec mcp-pdf python manage_keys.py add <name>
docker compose exec mcp-pdf python manage_keys.py list
docker compose exec mcp-pdf python manage_keys.py revoke <client_id>

No restart needed — changes take effect immediately.

Connect your MCP client

Claude web (claude.ai)

Add a remote MCP server in Claude's settings with your server URL:

https://your-domain.com/

Claude will handle OAuth automatically. When the authorize page opens, paste your API key (sk_... from manage_keys.py add).

Claude Code (CLI)

Add to ~/.claude/claude_code_config.json:

{
  "mcpServers": {
    "pdf-tools": {
      "type": "sse",
      "url": "https://your-domain.com/sse",
      "headers": {
        "Authorization": "Bearer <your_sk_key>"
      }
    }
  }
}

Cursor / Windsurf / other MCP clients

Use the SSE transport config:

{
  "mcpServers": {
    "pdf-tools": {
      "type": "sse",
      "url": "https://your-domain.com/sse",
      "headers": {
        "Authorization": "Bearer <your_sk_key>"
      }
    }
  }
}

If your client supports Streamable HTTP, use the root URL (https://your-domain.com/) instead.

Tool: convert_docx_to_pdf

Input: base64-encoded .docx file

Output:

{
  "success": true,
  "download_url": "/download/<id>",
  "pdf_size_bytes": 53248,
  "expires_in_seconds": 300
}

The download link is single-use and expires after 5 minutes.

Reverse proxy

The server needs TLS termination. Example Caddyfile:

your-domain.com {
    reverse_proxy mcp-pdf:8080 {
        flush_interval -1
    }
}

flush_interval -1 disables buffering so SSE events stream through.

How it works

  • unoserver keeps LibreOffice running as a daemon — no cold start per conversion
  • Warmup on boot preloads fonts, renderer, and filter plugins so the first real conversion is fast
  • OAuth 2.0 + PKCE for browser-based clients (claude.ai), Bearer tokens for CLI clients
  • Hardened container: read-only filesystem, all capabilities dropped, no-new-privileges, pid limits

from github.com/chfle/word-to-pdf-mcp

Installing Word To Pdf

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/chfle/word-to-pdf-mcp

FAQ

Is Word To Pdf MCP free?

Yes, Word To Pdf MCP is free — one-click install via Unyly at no cost.

Does Word To Pdf need an API key?

No, Word To Pdf runs without API keys or environment variables.

Is Word To Pdf hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Word To Pdf in Claude Desktop, Claude Code or Cursor?

Open Word To Pdf on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Word To Pdf with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs