{"_id":"pdfmonkey-mcp-server","name":"pdfmonkey-mcp-server","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"pdfmonkey-mcp-server","version":"1.0.0","mcpName":"io.github.pdfmonkey/pdfmonkey-mcp","description":"Model Context Protocol (MCP) server for PDFMonkey API - Generate PDFs from templates using AI assistants like Claude","type":"module","main":"dist/index.js","bin":{"pdfmonkey-mcp-server":"dist/index.js"},"scripts":{"build":"tsc","watch":"tsc --watch","prepare":"npm run build","start":"node dist/index.js","test":"NODE_OPTIONS=--experimental-vm-modules jest","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage","prepublishOnly":"npm run build && npm test"},"keywords":["mcp","model-context-protocol","pdfmonkey","pdf","pdf-generation","document-generation","templates","ai","llm","claude","anthropic","automation","api-client"],"author":{"name":"PDFMonkey","email":"tinymonkey@pdfmonkey.io","url":"https://pdfmonkey.io"},"repository":{"type":"git","url":"git+https://github.com/pdfmonkey/pdfmonkey-mcp.git"},"bugs":{"url":"https://github.com/pdfmonkey/pdfmonkey-mcp/issues"},"homepage":"https://github.com/pdfmonkey/pdfmonkey-mcp#readme","license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"devDependencies":{"@jest/globals":"^30.2.0","@types/jest":"^30.0.0","@types/node":"^22.10.2","jest":"^30.2.0","ts-jest":"^29.4.5","typescript":"^5.7.2"},"engines":{"node":">=18.0.0"},"gitHead":"8ca8e1e1f145816ff6813297fc414479c22c3bf3","types":"./dist/index.d.ts","_id":"pdfmonkey-mcp-server@1.0.0","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-4TlPucv/tB1aXGCaAwLOvUNQy9K7yFMUn8jcSqbtgfkt5xXAgk70ZAPEBo64LK25fsjmDNES6TnMjyxZGOfA4Q==","shasum":"f91fed81840b1f3439b80fe33de18bb64c23a822","tarball":"https://registry.npmjs.org/pdfmonkey-mcp-server/-/pdfmonkey-mcp-server-1.0.0.tgz","fileCount":19,"unpackedSize":87299,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICJIwNBIwJezxeTrVBqXfE/1b97IHzo0g1QiUitWK593AiEA6u2L8ByY/HEjxzuhGiMkcDZ3AbBdhQHaGB622cJNRvM="}]},"_npmUser":{"name":"tiny-monkey","email":"accounts@pdfmonkey.io"},"directories":{},"maintainers":[{"name":"tiny-monkey","email":"accounts@pdfmonkey.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdfmonkey-mcp-server_1.0.0_1787040375378_0.25813328757140797"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T08:06:15.232Z","1.0.0":"2026-08-18T08:06:15.532Z","modified":"2026-08-18T08:06:15.881Z"},"maintainers":[{"name":"tiny-monkey","email":"accounts@pdfmonkey.io"}],"description":"Model Context Protocol (MCP) server for PDFMonkey API - Generate PDFs from templates using AI assistants like Claude","homepage":"https://github.com/pdfmonkey/pdfmonkey-mcp#readme","keywords":["mcp","model-context-protocol","pdfmonkey","pdf","pdf-generation","document-generation","templates","ai","llm","claude","anthropic","automation","api-client"],"repository":{"type":"git","url":"git+https://github.com/pdfmonkey/pdfmonkey-mcp.git"},"author":{"name":"PDFMonkey","email":"tinymonkey@pdfmonkey.io","url":"https://pdfmonkey.io"},"bugs":{"url":"https://github.com/pdfmonkey/pdfmonkey-mcp/issues"},"license":"MIT","readme":"# PDFMonkey MCP Server\n\nA Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with the [PDFMonkey API](https://pdfmonkey.io) for generating PDFs from templates.\n\n[![Docker](https://img.shields.io/badge/docker-available-blue)](https://hub.docker.com)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://img.shields.io/badge/tests-80%2F80%20passing-success)](package.json)\n\n## Features\n\n- **Template Management**: List and inspect PDF templates with detailed information (HTML, CSS, properties)\n- **Document Generation**: Create PDFs with async generation and automatic polling\n- **Document Management**: List, check status, and delete generated documents\n- **Snippet Support**: Access reusable Liquid code snippets\n- **Workspace Info**: View workspace details\n- **User & Quota Management**: Check account quota, plan information, and user details\n\n## Quick Start\n\n### Option 1: Docker (Recommended)\n\n```bash\n# Build locally (a published Docker Hub image is not available yet)\ndocker build -t pdfmonkey-mcp-server:latest .\n```\n\n**Configure in Claude Desktop:**\n\nmacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n\nWindows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"pdfmonkey\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"-e\",\n        \"PDFMONKEY_API_KEY=your-api-key-here\",\n        \"pdfmonkey-mcp-server:latest\"\n      ]\n    }\n  }\n}\n```\n\nSee [DOCKER-MCP-TOOLKIT.md](DOCKER-MCP-TOOLKIT.md) for Docker MCP Toolkit integration.\n\n### Option 2: From npm\n\n```bash\nnpm install -g pdfmonkey-mcp-server\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"pdfmonkey\": {\n      \"command\": \"pdfmonkey-mcp-server\",\n      \"env\": {\n        \"PDFMONKEY_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n### Option 3: From Source\n\n```bash\ngit clone https://github.com/pdfmonkey/pdfmonkey-mcp\ncd pdfmonkey-mcp\nnpm install\nnpm run build\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"pdfmonkey\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/pdfmonkey-mcp-server/dist/index.js\"],\n      \"env\": {\n        \"PDFMONKEY_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n## Get Your API Key\n\n1. Sign up at [dashboard.pdfmonkey.io/register](https://dashboard.pdfmonkey.io/register)\n2. Get your API key from the dashboard\n\n## Available Tools (11 total)\n\n### Workspace Operations\n\n- **`list_workspaces`** - List all accessible workspaces\n\n### Template Operations\n\n- **`list_templates`** - List all PDF templates\n- **`get_template`** - Get template details with full HTML, CSS, and properties\n\n### Document Operations\n\n- **`generate_document`** - Generate PDF with async polling (1.5s intervals, 3min timeout)\n- **`get_document_status`** - Check document status and get download URL\n- **`list_documents`** - List documents with filters (status, template_id, page, updated_since)\n- **`delete_document`** - Delete document permanently\n\n### Snippet Operations\n\n- **`list_snippets`** - List all Liquid code snippets\n- **`get_snippet`** - Get snippet code\n\n### User & Quota Operations\n\n- **`get_quota`** - Get quota and plan information\n- **`get_user_info`** - Get complete account details\n\n## Usage Examples\n\n### Generate an Invoice\n\n```\nUser: Generate a PDF invoice using my invoice template\n\nClaude: I'll help you generate an invoice. First, let me list your templates.\n[Uses list_templates tool]\nI found your invoice template (ID: abc-123). Now I'll generate the PDF.\n[Uses generate_document tool with data]\nYour invoice has been generated! Download: https://...\n```\n\n### View Template Code\n\n```\nUser: Show me the HTML and CSS for template abc-123\n\nClaude: [Uses get_template tool]\nHere's the complete template:\n\n### 📝 HTML Template\n[Shows full HTML code]\n\n### 🎨 CSS Styles\n[Shows full CSS code]\n\n### 📊 Sample Data\n[Shows JSON properties]\n```\n\n### Check Account Status\n\n```\nUser: What's my current quota?\n\nClaude: [Uses get_quota tool]\nYou have 450 documents available on your Professional plan (monthly).\nShare links are enabled.\n```\n\n## Development\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Test\n\n```bash\nnpm test                  # Run all tests\nnpm run test:watch        # Watch mode\nnpm run test:coverage     # Coverage report\n```\n\nCurrent test coverage: **80/80 tests passing** (~89% overall statements/lines; `tools.ts` dispatch 100%)\n\n### Watch Mode\n\n```bash\nnpm run watch\n```\n\n### Test Locally\n\n```bash\nexport PDFMONKEY_API_KEY=\"your-api-key\"\nnpm start\n```\n\n### Test Docker Image\n\n```bash\n# Build\ndocker build -t pdfmonkey-mcp-server:latest .\n\n# Test with real API\ndocker run -it --rm \\\n  -e PDFMONKEY_API_KEY=\"your-key\" \\\n  pdfmonkey-mcp-server:latest\n\n# In another terminal, send test JSON-RPC\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}' | \\\n  docker run -i --rm -e PDFMONKEY_API_KEY=\"your-key\" pdfmonkey-mcp-server:latest\n```\n\n## Publishing to Docker Hub\n\n### Prerequisites\n\n- Docker Hub account\n- Image tested and validated\n- All tests passing\n\n### Steps\n\n```bash\n# 1. Tag image\ndocker tag pdfmonkey-mcp-server:latest yourusername/pdfmonkey-mcp-server:1.0.0\ndocker tag pdfmonkey-mcp-server:latest yourusername/pdfmonkey-mcp-server:latest\n\n# 2. Login to Docker Hub\ndocker login\n\n# 3. Push images\ndocker push yourusername/pdfmonkey-mcp-server:1.0.0\ndocker push yourusername/pdfmonkey-mcp-server:latest\n```\n\n### Multi-Architecture Build\n\nSupport Mac M1/M2 (ARM64) and Intel (AMD64):\n\n```bash\n# Create builder\ndocker buildx create --use --name mcp-builder\n\n# Build and push multi-arch\ndocker buildx build \\\n  --platform linux/amd64,linux/arm64 \\\n  -t yourusername/pdfmonkey-mcp-server:1.0.0 \\\n  -t yourusername/pdfmonkey-mcp-server:latest \\\n  --push \\\n  .\n```\n\n### GitHub Actions CI/CD\n\nCreate `.github/workflows/docker-publish.yml`:\n\n```yaml\nname: Docker Build and Publish\n\non:\n  release:\n    types: [created]\n  push:\n    branches: [main]\n\njobs:\n  build-and-push:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '18'\n\n      - name: Install and test\n        run: |\n          npm ci\n          npm test\n          npm run build\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_TOKEN }}\n\n      - name: Build and push\n        uses: docker/build-push-action@v5\n        with:\n          context: .\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: |\n            yourusername/pdfmonkey-mcp-server:latest\n            yourusername/pdfmonkey-mcp-server:${{ github.ref_name }}\n```\n\n## Docker Image Details\n\n- **Base**: Node 18 Alpine\n- **Size**: ~236MB\n- **User**: Non-root (nodejs:1001)\n- **Security**: Read-only filesystem, no hardcoded secrets\n- **Architecture**: Multi-arch (AMD64, ARM64)\n\n## API Reference\n\n### Important Notes\n\n- **Async Generation**: `generate_document` polls every 1.5 seconds for up to 3 minutes\n- **Download URLs**: Expire after 1 hour\n- **Share Links**: Permanent URLs for premium users\n- **Rate Limiting**: 60 requests/minute\n\nFull API documentation: [docs.pdfmonkey.io](https://docs.pdfmonkey.io)\n\n## Troubleshooting\n\n### \"PDFMONKEY_API_KEY environment variable is required\"\n\nVerify your configuration file includes the API key.\n\n### \"Invalid API key\" or 401 errors\n\nGet a new key from [dashboard.pdfmonkey.io](https://dashboard.pdfmonkey.io).\n\n### Document generation timeout\n\nGeneration took >3 minutes. Use `get_document_status` with the document ID to check later.\n\n### Docker container exits immediately\n\nEnsure you're using `-i` (interactive) flag:\n\n```bash\ndocker run -i --rm -e PDFMONKEY_API_KEY=\"key\" pdfmonkey-mcp-server:latest\n```\n\n### View Docker logs\n\n```bash\ndocker logs <container-id>\n```\n\n## Contributing\n\nContributions welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new functionality\n4. Ensure all tests pass (`npm test`)\n5. Submit a pull request\n\n## Testing\n\nThe project has comprehensive test coverage:\n\n- **Unit tests**: 80 tests covering the formatters, API client, and tool/prompt dispatch\n- **Coverage**: ~89% overall statements/lines (`tools.ts` dispatch at 100%)\n- **Mock testing**: Full fetch API mocking\n- **Async testing**: Polling and timeout scenarios\n\nRun tests:\n\n```bash\nnpm test              # All tests\nnpm run test:watch    # Watch mode\nnpm run test:coverage # Coverage report\n```\n\n## Project Structure\n\n```\npdfmonkey-mcp-server/\n├── src/\n│   ├── index.ts              # MCP server bootstrap (env, client, stdio)\n│   ├── tools.ts              # Tool/prompt definitions + dispatch\n│   ├── pdfmonkey-client.ts   # PDFMonkey API client\n│   └── formatters.ts         # Output formatters\n├── tests/\n│   └── unit/\n│       ├── formatters.test.ts        # Formatter tests (21)\n│       ├── pdfmonkey-client.test.ts  # Client tests (25)\n│       └── tools.test.ts             # Tool dispatch tests (34)\n├── server.json               # MCP registry manifest\n├── Dockerfile                # Multi-stage build\n├── package.json\n├── tsconfig.json\n└── jest.config.js\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file\n\n## Resources\n\n- [PDFMonkey Website](https://pdfmonkey.io)\n- [PDFMonkey Documentation](https://docs.pdfmonkey.io)\n- [PDFMonkey Dashboard](https://dashboard.pdfmonkey.io)\n- [Model Context Protocol](https://modelcontextprotocol.io)\n- [Docker MCP Toolkit](https://docs.docker.com/ai/mcp-catalog-and-toolkit/)\n\n## Support\n\n- **MCP Server Issues**: Open an issue on GitHub\n- **PDFMonkey API Issues**: [PDFMonkey Support](https://pdfmonkey.io/support)\n- **Docker MCP Toolkit**: [Docker Forums](https://forums.docker.com/)\n","readmeFilename":"README.md","_rev":"1-1ca508ee21d061df844fb38e1f8abc2a"}