Local MCP server for PDF manipulation — merge, split, rotate, extract, watermark, metadata. Zero API keys, fully offline. Works with Claude, Cursor, ChatGPT.
Server has 6 well-named tools with complete input schemas and descriptions. All tools follow verb_noun naming (pdf_info, pdf_extract_text, pdf_merge, pdf_split, pdf_rotate, pdf_add_watermark). Descriptions are present and adequate (60-120 chars), exceeding the 10-char minimum. All parameters have type definitions and descriptions. However, output schemas are not formally documented, responses are JSON-stringified text blocks rather than structured objects with declared fields. Error handling is minimal; no recovery guidance or actionable error messages. Parameter constraints (e.g., angle enum for pdf_rotate, opacity 0-1 range) are described but not enforced via schema validation. No pagination, no per-item success/failure tracking for batch operations. Risk annotations (READ_ONLY, WRITE) are present but not exposed as tool annotations in the MCP schema.
Add a text watermark to all or specific pages of a PDF.
Extract text content from a PDF file. Optionally specify page range.
Get PDF metadata: page count, title, author, creator, creation date, file size.
Merge multiple PDF files into a single PDF.
Rotate pages of a PDF by 90, 180, or 270 degrees.
Split a PDF into separate files. Extract specific pages or split into individual page files.
Output schemas not formally documented. Tools return JSON-stringified text blocks instead of structured objects with declared field types. LLMs cannot reliably extract or chain results.
No error handling or recovery guidance. Tools do not validate inputs (e.g., angle must be 90/180/270, opacity 0-1, pages within bounds). Invalid inputs fail silently or with stack traces instead of actionable error messages.
Parameter constraints described in text but not enforced in schema. pdf_rotate angle should be an enum (90|180|270); pdf_add_watermark opacity should have min/max bounds. LLMs cannot parse text constraints reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Risk annotations (READ_ONLY, WRITE) present in metadata but not exposed as MCP tool annotations (readOnlyHint, destructiveHint). Agents cannot determine which tools are safe to retry or have side effects.
pdf_extract_text does not actually support page ranges despite parameters. Implementation ignores startPage/endPage and returns full text. Misleading description and non-functional feature.