Full-stack PDF intelligence MCP server — extract, manipulate, annotate, convert, validate, and RAG-search PDFs
pdf-mcp provides 18 tools with consistent naming (verb_noun pattern: extract_*, to_*, from_*, chunk_*) and reasonable descriptions (avg ~80 chars). However, parameter descriptions are sparse or missing entirely. Most tools lack documented output schemas. Input schemas are present but incomplete, many parameters lack type constraints (e.g., page_nums is 'array' with no item type; fmt in to_images has no enum). Error handling is absent from visible code. Security considerations (path traversal, file access validation) are not evident. Composition is good: tools are single-responsibility and chainable. Naming is clear and action-oriented, but parameter documentation falls short of production baseline (94% of A+ tools have full param descriptions; this server ~40%).
Chunk PDF text by page with maximum character limit
Chunk PDF text by markdown sections
Recursively chunk text with configurable separators and overlap
Chunk text by semantic paragraphs
Chunk text while preserving tables as separate structured chunks
Extract fonts used in PDF
Extract images from PDF pages
Parameter descriptions missing or incomplete. 'page_nums' appears in 6+ tools with only 'Optional list of page numbers', no guidance on 0-indexing, valid ranges, or what happens if invalid. 'fmt' in to_images has no enum constraint or description of valid formats.
Output schemas not documented. No visible return type definitions for any tool. LLMs cannot plan downstream calls or extract structured data without knowing what fields to expect (e.g., does extract_metadata return {title, author, pages} or a flat dict?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Extract links from PDF
Extract metadata from PDF
Extract table of contents/outline from PDF
Extract tables from PDF pages
Extract text from PDF pages
Create PDF from HTML content
Create PDF from image files
Create PDF from Markdown content
Convert PDF to HTML format
Convert PDF pages to images
Convert PDF to Markdown format
No error handling or recovery guidance visible. No try-catch blocks, validation, or error messages in sampled code. If a PDF is corrupted, file not found, or output_dir is invalid, the LLM receives no actionable error, only a stack trace.
Path traversal and file access validation not evident. Tools accept 'path' and 'output_dir' as free-form strings with no visible sanitization. An LLM could be tricked into writing to /etc/passwd or reading /etc/shadow.
Array parameters lack item type definitions. 'page_nums' is typed as 'array' with no items schema. 'image_paths' in from_images is 'array' with no item type. JSON Schema requires items: {type: 'string'} or similar.