Easy PDF Server home

Easy PDF Server A Simple API to Convert HTML to PDF

An MCP server for PDFs

By the Easy PDF Server Team · October 2026

Every AI agent that produces a document hits the same wall. The model can write the HTML. It cannot turn that HTML into a file you can open, attach, or print. So a person copies the output into a browser, or a developer builds a headless Chromium service and finds out why everyone else stops at wkhtmltopdf.

The Model Context Protocol closes that gap by giving the model a tool it is allowed to call. We shipped an MCP server for Easy PDF Server, so an agent can render the document itself and hand you the path.

What MCP actually adds

MCP is how a client such as Claude Desktop, Cursor, or Claude Code discovers tools a model can use. The server describes its tools and their arguments. The model chooses one, calls it, and gets a result back. For PDFs that means the model writes the markup and calls html_to_pdf, and a real file exists when it finishes. No copy and paste, no second window, no "download this and rename it".

Install it

The server is one file with no dependencies. It needs Node 18 or newer.

curl -fsSL https://www.easypdfserver.com/mcp/easypdfserver-mcp.mjs -o /easypdfserver-mcp.mjs

Add it to your client configuration, using the absolute path to the file and an API key:

{
  "mcpServers": {
    "easypdfserver": {
      "command": "node",
      "args": ["/Users/you/easypdfserver-mcp.mjs"],
      "env": {
        "EASYPDF_API_KEY": "eps_your_key_here"
      }
    }
  }
}

The same block works in Claude Desktop's claude_desktop_config.json, Cursor's mcp.json, and Claude Code. Restart the client and the two tools appear.

The two tools

Both write the PDF to /.easypdfserver and return the absolute path, so the model can tell you where the file is or pass it to another tool. If you need the bytes instead, ask for return_base64 and the result carries an embedded application/pdf resource.

What it looks like in practice

You ask: "Turn this quarter's numbers into a one page PDF and put it on my desktop." The model writes the HTML, including the table and whatever CSS it wants, calls html_to_pdf with filename: "q3-summary.pdf", and replies with the path. The document is already there.

Or: "Save the pricing page as a PDF before it changes." The model calls url_to_pdf and the renderer fetches the page, runs its JavaScript, and prints it the way a browser would.

One honest note: the model still writes the HTML. The server only renders it. When the output looks wrong, the fix is usually in the CSS, and the model can make that change on the next call.

Requirements and limits

Try it

The full reference, including the config block for each client, is in the API documentation. New subscriptions start with a 7-day free trial, card required, and the demo key renders without an account if you just want to see it work.

Related Articles