mcpField
P
PaperSprocket

PaperSprocket

Local
github.com/inde-xProductivity0Updated 4w ago

About PaperSprocket

PaperSprocket MCP server gives clients access to PaperSprocket’s hosted HTML-to-PDF API. It focuses on two operations: rendering HTML and checking the configured account’s prepaid balance.

Key features

  1. 01Render HTML as a PDF
  2. 02Return PDF as an MCP resource
  3. 03Optionally write PDFs to a local path
  4. 04Check prepaid balance and page price
  5. 05Retry transient failures with idempotency

Use cases

  1. 01Convert HTML and CSS layouts into PDFs
  2. 02Provide generated PDFs to an MCP client
  3. 03Save rendered PDFs for local use
  4. 04Check account funds before rendering

MCP support

Exposes `render_html_to_pdf` and `check_balance` to MCP clients over stdio. The API key is held in server-side environment or `.env` configuration, not supplied as a tool argument.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"inde-x-papersprocket": {
"command": "npx",
"args": [
"-y",
"papersprocket-mcp"
],
"env": {
"PAPERSPROCKET_API_KEY": "<PAPERSPROCKET_API_KEY>"
}
}
}
}
Run commandnpx -y papersprocket-mcp
Environment variables to set
PAPERSPROCKET_API_KEYSecretPaperSprocket API key (server-side secret/config state). Obtained from your PaperSprocket account; never passed as a tool argument.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmpapersprocket-mcp1.0.0

Tools

2

Saved tool list · updated 3w ago

ParameterTypeRequiredDescription
htmlstringYesHTML to render (non-empty).
pageobjectNo
page.sizeenumNoPaper size. Default A4.A4 | Letter
page.margin_mmobjectNoPage margins in millimetres (0–50). Default 10 on all sides.
page.margin_mm.topnumberNo
page.margin_mm.leftnumberNo
page.margin_mm.rightnumberNo
page.margin_mm.bottomnumberNo
page.orientationenumNoPortrait or landscape. Default portrait.portrait | landscape
page.print_backgroundbooleanNoPrint CSS background colors. Default true.

Details

From the project README

PaperSprocket MCP server

A Model Context Protocol (MCP) server that gives MCP clients direct access to the PaperSprocket API. It exposes exactly two tools:

ToolDescription
render_html_to_pdf(html, page?)Render HTML to a PDF through the PaperSprocket API. Returns the PDF as an application/pdf MCP resource (base64 blob), a local file path when the server can write one, and render metadata (render_id, page_count, charged_cents, balance_cents). Billed to the configured account.
check_balance(account_id)Read the prepaid balance of the configured PaperSprocket account. Returns account_id, balance_cents, currency, and page_price_cents.

This is a minimal native MCP server built directly on @modelcontextprotocol/sdk. No top-up tools, no API-key-management tools — just render and balance-check.

What is PaperSprocket?

PaperSprocket is a hosted API that turns HTML into PDFs. You send it HTML, it returns a well-formed PDF. There is no business-field schema to learn: you control the layout with your own HTML and CSS, PaperSprocket handles the PDF processing. See the official documentation.

Requirements

  • Node.js >= 20
  • A PaperSprocket API key. The server reads it from server-side config only (environment or .env) — it is never a caller-supplied tool argument, and is never embedded in source, examples, or this document.

Install

Run via npx (primary)
npx -y papersprocket-mcp

The package papersprocket-mcp is published to npm and registered in the official MCP Registry under identity io.github.inde-x/papersprocket (active, version 1.0.0). Point your MCP client at npx -y papersprocket-mcp and provide PAPERSPROCKET_API_KEY in the client's environment (the server reads it server-side only).

From source (optional / development)
git clone https://github.com/inde-x/papersprocket-mcp.git
cd papersprocket-mcp
npm ci
cp .env.example .env   # then set PAPERSPROCKET_API_KEY (see Configuration)

Configuration

The server loads <serverdir>/.env at startup (it does not override already-set environment variables). .env is gitignored.

VariableRequiredDefaultPurpose
PAPERSPROCKET_API_KEYyes—Your PaperSprocket API key. Secret/config state — never a tool argument.
PAPERSPROCKET_BASE_URLnohttps://papersprocket.com/apiAPI base URL. Fixed/config state.
PAPERSPROCKET_MCP_OUTPUT_DIRno./outputDirectory where rendered PDFs are also written (best-effort) for filesystem-local clients.

Example .env (replace the placeholder — never commit a real key):

PAPERSPROCKET_API_KEY=psk_your_api_key_here
# PAPERSPROCKET_BASE_URL=https://papersprocket.com/api
# PAPERSPROCKET_MCP_OUTPUT_DIR=./output

Run (stdio)

node server.js                 # MCP over stdio
node server.js --list-tools    # print tool schemas, then exit
Connect an MCP client

Point your MCP client at a stdio server:

# primary — published npm distribution:
Command:   npx
Arguments: -y papersprocket-mcp

# or a local source checkout:
Command:   node
Arguments: /path/to/papersprocket-mcp/server.js

PAPERSPROCKET_API_KEY is provided via the server .env or environment — never in the client configuration.

MCP Inspector
npx @modelcontextprotocol/inspector node /path/to/papersprocket-mcp/server.js

List tools → confirm exactly two: render_html_to_pdf and check_balance.

Tool schemas

render_html_to_pdf
{
  "html": { "type": "string", "description": "HTML to render (non-empty)." },
  "page": {
    "properties": {
      "size":            { "enum": ["A4", "Letter"] },
      "orientation":     { "enum": ["portrait", "landscape"] },
      "margin_mm":       { "top|right|bottom|left": { "type": "number", "minimum": 0, "maximum": 50 } },
      "print_background": { "type": "boolean" }
    }
  }
}
  • html — required, non-empty string.
  • page — optional. Defaults mirror the service's closed v1 schema: size A4, orientation portrait, margin_mm 10 on all sides, print_background true. Unknown fields are rejected.

Result (two MCP content blocks):

  1. text — metadata JSON: tool, format, render_id, page_count, charged_cents, balance_cents, bytes, file_path, idempotency_key.
  2. resource — application/pdf blob (base64) with a file:// (or urn:) URI.
check_balance
{ "account_id": { "type": "string" } }
  • account_id — required, non-empty string.

Result: { account_id, balance_cents, currency, page_price_cents } (text block).

Idempotency

  • A fresh random idempotency key is generated for each logical render.
  • On a transient network failure the server retries up to 2× reusing the same key, so a retry of one logical render cannot double-charge.
  • Server-side, PaperSprocket dedupes on (Idempotency-Key, request hash), so a true replay returns the original result without a second debit.

Security / secret boundary

  • PAPERSPROCKET_API_KEY is read from .env / environment — it is not a field in any tool input schema.
  • PAPERSPROCKET_BASE_URL is fixed/config state, not an agent-controlled argument.
  • The key is sent only as the Authorization HTTP header. No other credentials exist.
  • Rendered PDFs written to output/ are your own content; the directory is gitignored.

Pricing

  • $10 initial prepaid credit
  • $10 top-ups
  • $0.02 / page

Getting a key

Create a PaperSprocket account to get your API key and prepaid credit:

License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.