# pdfops-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/pdfops/pdfops-mcp  
**GitHub Stars:** 0  
**npm Downloads (last month):** 1319  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/pdfops-mcp

## Description
Deterministic PDF tools for AI agents: inspect fields, fill forms, merge PDFs, invoices.

## Tools
Capabilities this server exposes over MCP:

- **pdf_inspect** — List a PDF's AcroForm form fields — names, types, options, current values, per-field maxLength where declared — plus a paste-ready fillTemplate object for pdf_fill and a hasXFA flag (hybrid AcroForm/XFA inputs lose their XFA layer when filled). A PDF with no fillable form returns count 0. Read-only: the PDF is fetched or read but never modified. Call this FIRST when filling an unfamiliar PDF, since pdf_fill rejects unknown field names and over-length values.
- **pdf_fill** — Fill AcroForm form fields in a PDF and save or return the result. Field names must exist in the PDF (use pdf_inspect first). All values are strings; checkboxes take "true"/"false"; dropdown/radio/optionlist values must be one of the field's options; text values must respect the field's maxLength from pdf_inspect. The source PDF is never modified. Returns the filled PDF written to output_path, or inline as an application/pdf resource when output_path is omitted; an existing file at output_path is overwritten. Encrypted PDFs are rejected with decrypt advice (common for government blanks with an empty user password), and a rejected fill writes no file at all.
- **pdf_merge** — Merge two or more PDFs into one, in the order given, and save or return the result. Source files are read only and never modified; an existing file at output_path is overwritten. Returns the merged PDF written to output_path, or inline as an application/pdf resource when output_path is omitted. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error and writes no file, so a partial merge is never left behind.
- **pdf_invoice** — Generate a complete, professionally laid-out invoice PDF from structured data — no template needed. Deterministic: the same input produces byte-identical output (safe to re-run). Note: without a paid PDFops key the output carries a small "Generated with pdfops.dev" footer line. Returns the invoice written to output_path, or inline as an application/pdf resource when output_path is omitted; an existing file at output_path is overwritten. Use this when you have invoice DATA and no document; if you already have an invoice PDF or a fillable template to populate, use pdf_fill instead.
- **pdfops_usage** — Check the current PDFops API quota for the configured key: tier, limit, used, remaining, the billing period, and the reset timestamp. Read-only and safe to call before a batch to confirm there is headroom. Requires PDFOPS_API_KEY.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "pdfops-mcp": {
    "command": "npx",
    "args": ["-y","pdfops-mcp"],
    "env": {
      "PDFOPS_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `PDFOPS_API_KEY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What pdfops-mcp does

pdfops-mcp exposes a focused set of PDF operations through the Model Context Protocol. Agents can discover AcroForm field names, types, available options, and existing values; populate those fields; combine multiple PDFs in a specified order; and produce invoice PDFs from structured data. A usage tool reports the remaining request quota for the configured account.

The service is backed by the PDFops API at `https://pdfops.dev`. It is intended for workflows such as preparing completed forms, assembling document packets, and creating invoices from agent-collected details. Invoice generation is deterministic: identical input produces byte-identical output.

## How it works

The local server communicates with an MCP client over stdio and invokes the PDFops API for each operation. PDF tools can work with local paths, HTTPS sources, or `data:application/pdf;base64,...` URIs. For local workflows, outputs may be written to paths selected in the tool call, so the document content does not need to pass through the model context.

A typical form workflow starts with `pdf_inspect` on an unfamiliar PDF. The returned field information and fill template can then guide a `pdf_fill` call. The fill operation can optionally flatten the result, baking values into the document and removing the editable form. `pdf_merge` accepts at least two PDFs and preserves the requested order.

The same server is available as a hosted Streamable HTTP endpoint at `https://pdfops.dev/api/mcp`. In hosted environments where the server cannot access the agent's filesystem, inputs should be reachable HTTPS URLs or data URIs, and output paths should be omitted so results are returned inline as PDF resources.

## Setup and configuration

Run the local package with `npx -y pdfops-mcp` and add it to an MCP client's stdio configuration. Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Cline, and Zed are shown as supported configuration targets. The VS Code configuration uses a `servers` key and sets the server type to `stdio`.

`PDFOPS_API_KEY` is optional. Without it, requests use a keyless trial limited to 100 requests per IP per month. A free key raises the allowance to 250 requests per month. For remote use, provide the key as an authorization bearer header when configuring the hosted endpoint.

## Tools and capabilities

- `pdf_inspect` lists AcroForm fields, including names, types, options, and current values, and returns a fill template.
- `pdf_fill` writes values into AcroForm fields. Its optional `flatten` setting removes the form after embedding the values.
- `pdf_merge` combines two or more PDFs in the supplied order.
- `pdf_invoice` creates a complete invoice PDF from structured data.
- `pdfops_usage` checks quota for the configured key.

For remote requests, each PDF fetched from an HTTPS URL is limited to 4 MB, with a 4.5 MB total request limit. Inline outputs are returned as embedded `application/pdf` resources when no output path is supplied.

## Limitations and notes

The server operates on AcroForm fields for inspection and filling; inspecting first is useful when field names are unknown. Local absolute paths work only where the MCP process can access them. In a hosted runtime, an agent's local filesystem is not available to the server, so sources must be remotely reachable or embedded as data URIs.

PDF content and supplied field values are sent to the PDFops API for processing. The service processes requests in memory and does not store documents, while API requests are logged with usage metadata for quota operation. The project is licensed under MIT.

_Full upstream README: https://allmcps.com/mcp/pdfops-mcp/readme_

