# PDFGate MCP Server [Health: Active]

**Category:** ⚖️ Legal  
**Repository:** https://github.com/pdfgate/pdfgate-mcp-server  
**GitHub Stars:** 0  
**npm Downloads (last month):** 1056  
**Views:** 5  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-server-37

## Description
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.

## Tools
Capabilities this server exposes over MCP:

- **generate_pdf** — Generate a PDF from a URL or raw HTML. Provide either 'url' or 'html', not both.
- **upload_file** — Upload a PDF to PDFGate so it can be referenced by other operations. Provide either 'filePath' (local path) or 'url'.
- **get_document** — Retrieve metadata for a stored PDFGate document by its ID.
- **delete_document** — Delete a PDFGate document.
- **flatten_pdf** — Flatten an interactive PDF into a static, non-editable PDF. Creates a new document; does not overwrite the original.
- **extract_form_data** — Extract form field values from a fillable PDF. Returns a JSON object mapping field names to their values.
- **add_form_fields** — Add interactive form fields to a stored PDF — from placeholder tags (refined via fieldOverrides) and/or explicitly positioned fields.
- **compress_pdf** — Compress/optimise a PDF to reduce file size without changing visual content.
- **protect_pdf** — Encrypt a PDF with a password and optional permission restrictions. Produces a new document; the original is unchanged.
- **watermark_pdf** — Apply a text or image watermark to a PDF. For type='text' provide 'text'; for type='image' provide 'watermarkImagePath'.
- **download_file** — Download the raw PDF bytes of a stored document, returned as an embedded resource. For a shareable link instead, use get_document.
- **create_envelope** — Create a signing envelope from one or more existing PDFGate documents. Each recipient is given either as email and name or as the recipientId of a stored recipient. Recipients marked embedded sign inside your application via create_embed_link and receive no emails. Use signingOrder to make recipients sign in sequence. Returns an envelope in 'created' status; call send_envelope to dispatch signing emails.
- **send_envelope** — Send a created envelope to its recipients. PDFGate dispatches signing emails with secure, OTP-protected links that stay valid until the envelope expires. Embedded recipients receive no email; create their signing links with create_embed_link after sending. On documents with a signingOrder only the first recipients are emailed; later recipients are activated as earlier ones sign.
- **get_envelope** — Retrieve the current state of an envelope including its status, document progress, and per-recipient signing status. Each recipient carries an embedded boolean; embedded recipients have no signing link — mint one with create_embed_link instead. Recipients on ordered documents carry signingOrder and, once it is their turn, activatedAt.
- **void_envelope** — Void (cancel) an envelope in 'created' or 'in_progress' status. Recipients who have not signed are notified by email and their signing links stop working; documents already signed by all recipients are not affected. The optional reason is visible to recipients. Cannot be undone.
- **delete_envelope** — Permanently delete an envelope and the files it produced (signed documents and audit logs). Recipient data is anonymized and recipients lose access; source documents are not deleted. Only envelopes in 'draft', 'completed', 'expired', or 'voided' status can be deleted — void an active envelope first. Cannot be undone.
- **create_embed_link** — Create a short-lived signing URL for an embedded recipient, to be rendered in an iframe inside your application. The envelope must be in 'in_progress' status and the link expires after 10 minutes, so create it when the signer is ready (one link per signing session). On documents with a signingOrder the link can only be created once it is the recipient's turn; the envelope.recipient.activated webhook event signals that moment. When the session ends the iframe redirects to returnUrl with event (signing_complete, voided, expired or not_found), envelopeId, documentId and recipientId appended as query parameters; existing returnUrl query parameters are preserved.
- **create_recipient** — Store a recipient in your account so envelopes can reference them by recipientId. Emails are not unique; every call creates a new recipient, so use list_recipients first when reuse is intended.
- **list_recipients** — List stored recipients with the given email (case-insensitive), oldest first.
- **get_recipient** — Retrieve a stored recipient by ID.
- **update_recipient** — Update a stored recipient's name or metadata. The email cannot be changed. Existing envelopes are not affected; they keep the recipient name they were created with.
- **create_webhook** — Create a PDFGate webhook subscription. The response includes a signing secret — store it securely to verify incoming event signatures.
- **get_webhook** — Retrieve a PDFGate webhook subscription by its ID.
- **delete_webhook** — Delete a PDFGate webhook subscription. Future events will no longer be delivered to the associated endpoint.

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

```json
"mcpServers": {
  "pdfgate-mcp-server": {
    "command": "npx",
    "args": ["-y","@pdfgate/mcp-server"],
    "env": {
      "PDFGATE_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `PDFGATE_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 PDFGate MCP Server does

PDFGate MCP Server exposes PDFGate operations as MCP tools for AI assistants and other MCP clients. It covers the document lifecycle from generating a PDF from a URL or HTML through uploading, retrieving, downloading, transforming, protecting, watermarking, compressing, and deleting stored documents.

The server also provides e-signature workflows. Agents can assemble envelopes from existing documents, send them to recipients, inspect signing progress, cancel or delete envelopes, and create short-lived embedded signing links for use inside an application. Recipient records can be created and reused by ID, and webhook subscriptions can be managed through MCP.

## How it works

A local deployment runs through the npm package with `npx` and communicates with PDFGate using an API key. PDFGate keys beginning with `live_` target production, while keys beginning with `test_` select the sandbox. The hosted deployment is available at `https://mcp.pdfgate.com/server` and supports Streamable HTTP. Clients can authenticate there with OAuth or by sending the `X-API-KEY` header.

Most document-processing operations work with stored PDFGate document IDs. For example, an agent can upload a PDF, add fields or apply protection, and then use the resulting document in another operation. Transformations such as flattening and encryption create a new document instead of changing the original.

Envelope creation accepts one or more existing documents. Recipients may be supplied directly by name and email or referenced by stored recipient ID. Ordered signing can activate recipients in sequence. Embedded recipients do not receive email; after an envelope is sent, the client can request a signing URL that expires after 10 minutes.

## Setup and configuration

For local execution, add a server entry similar to this to the MCP client configuration:

```json
{
  "mcpServers": {
    "pdfgate": {
      "command": "npx",
      "args": ["-y", "@pdfgate/mcp-server"],
      "env": {
        "PDFGATE_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

The hosted endpoint can be configured as a remote HTTP MCP server. OAuth is suitable for clients that support remote MCP authentication; API-key clients can pass `X-API-KEY` in the request headers. The exact configuration property names vary by client.

Webhook delivery uses port `3599` by default. To receive events, expose the listener publicly and register the public URL with `create_webhook`. The port can be changed with `PDFGATE_WEBHOOK_PORT`.

## Tools and capabilities

- Generate PDFs from a URL or raw HTML, and upload local files or remote URLs.
- Retrieve document metadata, download PDF bytes, or delete stored documents.
- Flatten interactive PDFs, extract form values, and add fields using placeholders or explicit positions.
- Compress, password-protect, and watermark PDFs with text or images.
- Create, send, inspect, void, and delete signing envelopes.
- Create embedded signing links and manage stored recipients.
- Create, inspect, and delete webhook subscriptions.

Supported webhook events include envelope delivery, completion, expiration, voiding, deletion, document completion, recipient signing, and recipient signature changes. Incoming events are available through `pdfgate://events`.

## Limitations and notes

`generate_pdf` requires either `url` or `html`, not both. Likewise, `upload_file` accepts either a local `filePath` or a URL. Embedded signing links are short-lived and should be created when the signer is ready. For ordered envelopes, a recipient must be active before a link can be created.

Voiding an active envelope cannot be undone. Deleting an envelope permanently removes its produced signed documents and audit logs, while source documents remain available. Webhook signing secrets returned during creation should be stored securely so incoming event signatures can be verified.

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

