Submit

Pdf Generator Api

@pdfgeneratorapi

3 months ago
Model Context Protocol (MCP) server for the PDF Generator API, generated from the OpenAPI v4 specification.
Overview

PDF Generator API — MCP Server

Model Context Protocol (MCP) server for the PDF Generator API, generated from the OpenAPI v4 specification.

Overview

This server supports both stdio and HTTP transports:

  • Stdio mode (default): For local MCP client integration (Claude Desktop, Claude Code, Cline, etc.)
  • HTTP mode: For production deployment, marketplaces, and multiple clients

Quick Start

Local Development (Stdio Mode)

Install and build:

npm install
npm run build

MCP Client Configuration Example:

{
  "mcpServers": {
    "pdf-generator-api": {
      "command": "node",
      "args": ["/path/to/mcp-server/build/index.js"],
      "env": {
        "API_BASE_URL": "https://us1.pdfgeneratorapi.com/api/v4",
        "BEARER_TOKEN_JWT": "your-jwt-token-here"
      }
    }
  }
}

Note: Replace /path/to/mcp-server with your actual path and your-jwt-token-here with your PDF Generator API JWT token (see JWT Token Generation below).

Common config locations:

  • Claude Desktop: Settings > Developer > Edit Config
  • Claude Code (CLI): ~/.claude/mcp_config.json
  • Cline/Roo-Codeium: .vscode/mcp_config.json
  • Continue: ~/.continue/config.json

Production Deployment (HTTP Mode)

Run locally:

npm install
npm run start:http
# Server runs on http://localhost:3000
# MCP endpoint: http://localhost:3000/mcp
# Health check: http://localhost:3000/health

Docker:

docker compose -f deploy/docker-compose.yml up -d
# MCP endpoint: http://localhost:3001/mcp

Authentication

Stdio Mode: Pass the JWT token via the BEARER_TOKEN_JWT environment variable in your MCP client config.

HTTP Mode: Pass the JWT token in the Authorization header with each request:

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer your-jwt-token-here" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",...}'

JWT Token Generation

You need a JWT token to authenticate with the PDF Generator API. Get your credentials from the PDF Generator API dashboard under Account Settings > API Integration.

You'll need three values:

  • Workspace ID (iss claim) — your numeric workspace identifier
  • Workspace Identifier (sub claim) — your workspace email or unique key
  • Secret Key — the signing key for your JWT (keep this secret)

See: https://docs.pdfgeneratorapi.com/v4#section/Authentication/Creating-a-JWT

Node.js

const jwt = require('jsonwebtoken');

const token = jwt.sign(
  {
    iss: 'YOUR_WORKSPACE_ID',       // e.g. "12345"
    sub: 'YOUR_WORKSPACE_IDENTIFIER' // e.g. "user@example.com"
  },
  'YOUR_SECRET_KEY',
  {
    algorithm: 'HS256',
    expiresIn: '24h'  // Token lifetime — see notes below
  }
);

console.log(token);

Quick one-liner (npx)

npx jsonwebtoken-cli -- sign \
  '{"iss":"YOUR_WORKSPACE_ID","sub":"YOUR_WORKSPACE_IDENTIFIER"}' \
  'YOUR_SECRET_KEY' \
  --algorithm HS256 \
  --expiresIn 24h

Token Expiration (TTL)

Choose a TTL that matches your use case:

Use caseRecommended TTLWhy
Local MCP (stdio)24h or longerMCP sessions can be long-lived; avoids mid-session expiration
Production (HTTP)1hShorter-lived tokens reduce risk if leaked
CI/CD or scripts5m15mMinimal exposure window for automated tasks

The PDF Generator API validates the token on every request. If the token expires mid-session, subsequent API calls will return 401 Unauthorized — generate a new token and restart the MCP client.

Security Best Practices

  • Never commit tokens or secret keys to version control
  • Use environment variables or a secrets manager to store your BEARER_TOKEN_JWT
  • Rotate secret keys periodically in the PDF Generator API dashboard
  • For HTTP mode, use HTTPS in production to protect tokens in transit

See: PDF Generator API Authentication Docs

Environment Variables

VariableModeDefaultDescription
API_BASE_URLBothhttps://us1.pdfgeneratorapi.com/api/v4PDF Generator API base URL
BEARER_TOKEN_JWTStdioJWT token for authentication
PORTHTTP3000Server port
LOG_LEVELBothinfoLogging level (debug, info, warn, error)
SESSION_TTL_MINUTESHTTP30Session idle timeout in minutes
CORS_ORIGINHTTP* (all origins)Comma-separated allowed origins

Create a .env file in the repo root:

cp .env.example .env

Regenerating

To regenerate after OpenAPI spec changes:

# Place the updated spec at docs/apiv4.json, then:
./scripts/generate-mcp.sh

# Or specify a custom input:
./scripts/generate-mcp.sh --input /path/to/apiv4.json

Note: After regeneration, custom patches may need to be re-applied.

Testing

npm run build
npm test

Test stdio mode manually:

BEARER_TOKEN_JWT="your-token" echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npm run start:stdio

Test HTTP mode:

npm run start:http
curl http://localhost:3000/health

Resources

Server Config

{
  "mcpServers": {
    "pdf-generator-api": {
      "command": "node",
      "args": [
        "/path/to/mcp-server/build/index.js"
      ],
      "env": {
        "API_BASE_URL": "https://us1.pdfgeneratorapi.com/api/v4",
        "BEARER_TOKEN_JWT": "your-jwt-token-here"
      }
    }
  }
}
© 2025 MCP.so. All rights reserved.

Build with ShipAny.