pdf-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pdf_doA | Chain the PDF tools autonomously to complete a natural-language task. Requires a local LLM (Ollama or LM Studio) or a client that supports MCP sampling. The LLM plans up to 6 tool calls from the pdf_* surface, the server answer. pdf_do cannot call itself or pdf_shutdown. Return FormatA dict with keys:
Examples
|
| pdf_annotateA | Add annotations and markup to PDFs. Watermark, stamp, highlight, underline, header/footer, and page numbers. Return FormatA dict with keys:
Examples
|
| pdf_convertB | Convert between PDF and other formats. PDF to/from Markdown, HTML, and images. Return FormatA dict with keys:
Examples
|
| pdf_extractB | Extract content and metadata from a PDF. Supports text, images, tables, metadata, fonts, links, and outline extraction through a single portmanteau tool. Args are validated and documented via Annotated fields on the signature. Return FormatA dict with keys:
Examples
|
| pdf_formsC | Handle interactive form fields. List, fill, flatten, export, and auto-fill (LLM-guided) PDF form fields. Return FormatA dict with keys:
Examples
|
| pdf_analyzeB | Detect whether a PDF has a text layer (digital) or is scanned, with layout stats. Return FormatA dict with keys:
Examples
|
| pdf_redactA | Blacken sensitive content in a PDF by terms and/or PII patterns. Return FormatA dict with keys:
Examples
|
| pdf_classifyB | Guess the document type (invoice, report, contract, ...) and extract candidate fields. Return FormatA dict with keys:
Examples
|
| pdf_dedupeB | Detect exact and near-duplicate PDFs by content fingerprint. Return FormatA dict with keys:
Examples
|
| pdf_exportB | Build a reusable document brief (markdown or JSON) with headings, key terms, and optional summary. Return FormatA dict with keys:
Examples
|
| pdf_manipulateA | Modify PDF structure and properties. Merge, split, rotate, reorder, delete pages, compress, encrypt/decrypt, and optimize PDFs. Return FormatA dict with keys:
Examples
|
| pdf_helpA | List available tools and get usage help for pdf-mcp. Return FormatA dict with keys:
Examples
|
| pdf_statusA | Report server status, version, uptime, and registered tool count. Return FormatA dict with keys:
Examples
|
| pdf_shutdownB | Gracefully shut down the pdf-mcp server. Return FormatA dict with keys:
Examples
|
| pdf_ragC | Build and query a RAG index over PDF content. Chunks, indexes, and semantically searches PDF text via LanceDB. Tables are indexed as structured chunks (section='table'). Supports query-by-example and cross-document synthesis. Return FormatA dict with keys:
Examples
|
| pdf_validateA | Audit PDF quality and compliance. PDF/A, structure, accessibility, integrity, and comparison checks. Return FormatA dict with keys:
Examples
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_document | Analyze a PDF: type, OCR readiness, and a summary. |
| summarize_document | Summarize a PDF into a reusable brief. |
| extract_tables | Extract all tables from a PDF. |
| rag_question | Ask a question across the indexed PDFs. |
| redact_review | Check a PDF for PII and redact it. |
| compare_documents | Compare two PDFs and summarize the differences. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| server_config | Server configuration snapshot. |
| server_status | Live server status (tool count, uptime). |
| pdf-expert/SKILL.md | pdf-mcp Skill |
| pdf-expert/_manifest | File listing for pdf-expert |
| Prefab Renderer (pdf_analyze) | |
| Prefab Renderer (pdf_classify) | |
| Prefab Renderer (pdf_dedupe) | |
| Prefab Renderer (pdf_help) | |
| Prefab Renderer (pdf_status) |
TDQS
Scored across 16 tools
Most tools target clearly distinct operations (extract, convert, annotate, forms, redact, classify, dedupe, validate). A few boundaries blur: pdf_analyze vs pdf_validate both perform structural audits, and pdf_export's markdown brief overlaps with pdf_convert's to_markdown and pdf_extract's text output.
All 16 tools use a consistent pdf_ snake_case prefix with verb-style names (pdf_extract, pdf_convert, pdf_annotate, pdf_validate). Minor deviations: pdf_rag uses a noun/acronym and pdf_do is a vague verb, but the overall pattern is predictable.
16 tools for a full PDF processing suite is reasonable; each operation (extract, convert, manipulate, annotate, forms, RAG, redact, classify, dedupe, validate, analyze, export) earns its place alongside help/status/shutdown infrastructure. Slightly heavy but well within scope.
Broad lifecycle coverage: read, transform, annotate, secure, validate, and even semantic indexing. Notable gap: pdf_analyze detects scanned PDFs but no OCR tool exists to make them usable, a common follow-on for a PDF domain. Otherwise the surface is robust with no major dead ends.