Multimedia processing MCP server: PDF merge/split/compress/convert, video conversion, image manipulation, audio processing, Office-to-Markdown, AI-powered document analysis.
31 tools with consistent naming (verb_noun pattern) and descriptions present. However, descriptions are often terse (10-50 chars), lacking context on WHEN to use tools or prerequisites. Parameter schemas are visible and typed, but descriptions for parameters are minimal, many just restate the parameter name. Output schemas are undocumented; LLMs cannot infer what fields to expect. Error handling is absent, no guidance on recovery, retryability, or actionable error messages. Security concerns: file paths are user-provided strings with no validation hints for path traversal. Composition is reasonable (each tool does one thing), but many tools lack idempotency guarantees or confirmation steps for destructive operations (pdf_delete_pages, pdf_unlock, video_compress).
Convert a local HTML file (.html/.htm) to PDF using LibreOffice. Local files only, never URLs.
Convert one or more images to a single PDF.
Convert Markdown (H1-H3, lists, code, tables, images) to a branded PDF, offline.
Compare two PDFs and report page count and text differences.
Compress a PDF to reduce file size.
Delete specific pages from a PDF. pages: list of 1-indexed page numbers to remove.
Render PDF pages as PNG images.
Output schemas undocumented. Tools return strings but LLMs cannot infer structure (JSON, plain text, file paths, error messages). Agents cannot chain tools or extract data reliably.
Descriptions are terse (10-50 chars) and lack context. Missing WHEN to use each tool, prerequisites (e.g., 'Requires Ghostscript'), and what the tool returns. LLMs cannot reliably select the right tool.
No error handling guidance. Tools accept file paths as strings with no validation hints for path traversal, missing files, or permission errors. No recovery suggestions for LLMs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Render PDF pages as PNG screenshots using LiteParse.
Extract structured text with bounding boxes using LiteParse. Outputs JSON with text_items (x, y, width, height, font, confidence). Requires: pip install liteparse
Dump raw PDF tables to CSV files (one file per table, no layout preserved).
Extract text content from a PDF. Saves to output path if provided.
Fill PDF form fields. fields: dict mapping field names to values.
Get PDF metadata: page count, title, author, encryption status.
Merge multiple PDF files into a single output file. cover=True also renders a page-1 thumbnail.
Add page numbers to all pages of a PDF.
Add password protection to a PDF.
Reorder PDF pages. pages: list of 1-indexed page numbers in desired order.
Rotate all pages in a PDF by a given angle in degrees.
Add a signature image to a specific page of a PDF.
Split a PDF. pages: page ranges like '1-3,5,7-9' (1-indexed). cover=True also renders thumbnails.
Combine all PDF tables into one CSV with page/table/row columns.
Convert PDF to PDF/A archival format (requires Ghostscript).
Convert a PDF (or DOCX, HTML, XLSX) to Markdown locally with anydoc. Local files only. Supports .pdf, .docx, .html, .xlsx, .odt, .rtf. No API key, no network — the file never leaves the machine.
Remove password protection from a PDF.
Add a text or image watermark to all pages of a PDF.
Compress a video. CRF: 18 is near-lossless, 23-28 is good quality, 51 is worst.
Convert a video between formats. Uses the file extension to determine output codec.
Extract the audio track from a video. Format: mp3, aac, wav, ogg, or flac.
Get detailed video metadata: codec, resolution, duration, bitrate.
Convert a video segment into an animated GIF.
Trim a video. Times in HH:MM:SS. Use duration OR end (not both).
Destructive operations lack confirmation or dry-run support. pdf_delete_pages, pdf_unlock, video_compress, and others modify files irreversibly without agent confirmation.
Parameter descriptions are minimal or missing. Many params (e.g., 'quality', 'dpi', 'angle') lack guidance on valid ranges, defaults, or side effects. LLMs guess at values.