Skip to main content
Glama

📄 MCP PDF

Un servidor FastMCP para el procesamiento de PDF

47 herramientas para extracción de texto, OCR, tablas, formularios, anotaciones, markdown↔PDF y más

Python 3.11+ FastMCP License: MIT PyPI

Funciona muy bien con MCP Office Tools


Qué hace

MCP PDF extrae contenido de archivos PDF utilizando múltiples bibliotecas con mecanismos de respaldo automáticos. Si un método falla, intenta con otro.

Capacidades principales:

  • Extracción de texto mediante PyMuPDF, pdfplumber o pypdf (respaldo automático)

  • Extracción de tablas mediante Camelot, pdfplumber o Tabula (respaldo automático)

  • OCR para documentos escaneados mediante Tesseract

  • Gestión de formularios - extraer, rellenar y crear formularios PDF

  • Ensamblaje de documentos - combinar, dividir, reordenar páginas

  • Anotaciones - notas adhesivas, resaltados, sellos

  • Gráficos vectoriales - extraer a SVG para esquemas y dibujos técnicos

  • Conversión de formato - PDF ↔ Markdown (PDF→MD mediante PyMuPDF, MD→PDF mediante pandoc)


Related MCP server: PDF MCP Flow

Inicio rápido

# Run from PyPI (one-shot, no permanent install)
uvx mcp-pdf

# Add to Claude Code — note the `--` separator before uvx
claude mcp add pdf-tools -- uvx mcp-pdf

# Include the markdown_to_pdf tool (requires pandoc on host)
claude mcp add pdf-tools -- uvx --from "mcp-pdf[markdown]" mcp-pdf

uvx almacena en caché las instalaciones de herramientas de forma agresiva. Después de actualizar a una nueva versión, fuerce una actualización con uvx --refresh mcp-pdf (o uvx --refresh --from "mcp-pdf[markdown]" mcp-pdf si está utilizando extras).

git clone https://github.com/rsp2k/mcp-pdf
cd mcp-pdf
uv sync

# System dependencies (Ubuntu/Debian)
sudo apt-get install tesseract-ocr tesseract-ocr-eng poppler-utils ghostscript

# For markdown_to_pdf — pick one PDF-engine route:
sudo apt-get install pandoc tectonic                                          # recommended (small)
# or:  sudo apt-get install pandoc texlive-xetex texlive-latex-extra          # full TeX
# or:  sudo apt-get install pandoc && pip install weasyprint                  # skip TeX

# Verify
uv run python examples/verify_installation.py

Herramientas

Extracción de contenido

Herramienta

Qué hace

extract_text

Extrae texto de páginas PDF con fragmentación automática para archivos grandes

extract_tables

Extrae tablas a JSON, CSV o Markdown

extract_images

Extrae imágenes incrustadas

extract_links

Obtiene todos los hipervínculos con filtrado por página

ocr_pdf

Realiza OCR en documentos escaneados usando Tesseract

extract_vector_graphics

Exporta gráficos vectoriales a SVG (esquemas, gráficos, dibujos)

Conversión de formato

Herramienta

Qué hace

pdf_to_markdown

Convierte PDF a markdown preservando la estructura; extrae imágenes y vectores SVG al disco

markdown_to_pdf

Convierte archivos .md (o texto en línea) a PDF mediante pandoc con motor de detección automática

markdown_to_pdf requiere: pip install mcp-pdf[markdown] además del binario pandoc y al menos un motor de PDF (xelatex, pdflatex, tectonic, weasyprint o wkhtmltopdf) en el PATH. La herramienta detecta automáticamente qué hay disponible y utiliza el de mayor calidad. Pase pdf_engine= para anular o extra_args= para opciones de pandoc sin procesar.

Análisis de documentos

Herramienta

Qué hace

extract_metadata

Obtiene título, autor, fecha de creación, número de páginas, etc.

get_document_structure

Extrae la tabla de contenido y los marcadores

analyze_layout

Detecta columnas, encabezados, pies de página

is_scanned_pdf

Comprueba si el PDF necesita OCR

compare_pdfs

Compara dos PDF por texto, estructura o metadatos

analyze_pdf_health

Comprueba si hay corrupción u oportunidades de optimización

analyze_pdf_security

Informa sobre cifrado, permisos y firmas

Formularios

Herramienta

Qué hace

extract_form_data

Obtiene nombres y valores de campos de formulario

fill_form_pdf

Rellena campos de formulario desde JSON

create_form_pdf

Crea nuevos formularios con campos de texto, casillas de verificación, menús desplegables

add_form_fields

Añade campos a PDF existentes

Formularios de permiso (basados en coordenadas)

Para PDF escaneados o formularios sin campos interactivos. Dibuja texto en coordenadas (x, y).

Herramienta

Qué hace

fill_permit_form

Rellena cualquier PDF dibujando en coordenadas (funciona con formularios escaneados)

get_field_schema

Obtiene definiciones de campo para validación o generación de interfaz

validate_permit_form_data

Comprueba los datos contra el esquema de campo antes de rellenar

preview_field_positions

Genera un PDF que muestra los límites de los campos (depuración)

insert_attachment_pages

Inserta páginas de imagen/texto con referencias "Ver página X"

Requiere: pip install mcp-pdf[forms] (añade la dependencia reportlab)

Ensamblaje de documentos

Herramienta

Qué hace

merge_pdfs

Combina múltiples PDF con preservación de marcadores

split_pdf_by_pages

Divide por rangos de páginas

split_pdf_by_bookmarks

Divide en límites de capítulo/sección

reorder_pdf_pages

Reorganiza páginas en un orden personalizado

Anotaciones

Herramienta

Qué hace

add_sticky_notes

Añade anotaciones de comentarios

add_highlights

Resalta regiones de texto

add_stamps

Añade sellos de Aprobado/Borrador/Confidencial

extract_all_annotations

Exporta anotaciones a JSON


Cómo funcionan los respaldos

El servidor intenta utilizar múltiples bibliotecas para cada operación:

Extracción de texto:

  1. PyMuPDF (más rápido)

  2. pdfplumber (mejor para diseños complejos)

  3. pypdf (más compatible)

Extracción de tablas:

  1. Camelot (mejor precisión, requiere Ghostscript)

  2. pdfplumber (sin dependencias)

  3. Tabula (requiere Java)

Si un PDF falla con una biblioteca, se intenta automáticamente con la siguiente.


Gestión de tokens

Los PDF grandes pueden exceder los límites de respuesta de MCP. El servidor maneja esto:

  • Fragmentación automática divide documentos grandes en grupos de páginas

  • Límites de filas de tabla evitan que tablas enormes saturen las respuestas

  • Modo resumen devuelve la estructura sin el contenido completo

# Get first 10 pages
result = await extract_text("huge.pdf", pages="1-10")

# Limit table rows
tables = await extract_tables("data.pdf", max_rows_per_table=50)

# Structure only
tables = await extract_tables("data.pdf", summary_only=True)

Procesamiento de URL

Los PDF se pueden obtener directamente desde URL HTTPS:

result = await extract_text("https://example.com/report.pdf")

Los archivos se almacenan en caché localmente para operaciones posteriores.


Dependencias del sistema

Algunas funciones requieren paquetes del sistema:

Característica

Dependencia

OCR

tesseract-ocr

Tablas Camelot

ghostscript

Tablas Tabula

default-jre-headless

PDF a imágenes

poppler-utils

markdown_to_pdf

pandoc + uno de: tectonic, texlive-xetex (+ texlive-latex-extra), weasyprint, wkhtmltopdf

Elección de un motor PDF para markdown_to_pdf

Pandoc convierte markdown → HTML o LaTeX → PDF. La ruta LaTeX produce la salida más pulida pero necesita una instalación de TeX. Compensaciones:

Motor

Tamaño en disco

Notas

tectonic

~30 MB

Recomendado para instalaciones nuevas. Binario estático único. Descarga paquetes LaTeX bajo demanda — sin instalación masiva inicial.

xelatex + texlive-latex-extra

~500 MB

Mejor salida una vez instalado. Úselo si ya ejecuta TeX. El paquete -extra es importante: la plantilla predeterminada de pandoc necesita lastpage, xcolor, framed, fancyhdr, etc. — todos los cuales viven allí, no en texlive-xetex.

xelatex solo (solo texlive-xetex)

~200 MB

A menudo falla. Espere ! LaTeX Error: File 'X.sty' not found en documentos reales.

weasyprint

~40 MB

Python puro (pip install weasyprint) + bibliotecas del sistema cairo/pango. Ruta HTML/CSS — sin LaTeX. Bueno para documentos simples; más débil en matemáticas, notas al pie, citas.

wkhtmltopdf

~40 MB

Herramienta antigua de HTML a PDF. Adecuada pero menos mantenida activamente.

Ubuntu/Debian:

sudo apt-get install tesseract-ocr tesseract-ocr-eng poppler-utils ghostscript default-jre-headless

# For markdown_to_pdf — pick one engine route:

# Option A — tectonic (smallest, downloads packages on demand)
sudo apt-get install pandoc
# tectonic isn't in apt — install via cargo or download static binary:
#   https://tectonic-typesetting.github.io/en-US/install.html

# Option B — full TeX (best quality, large download)
sudo apt-get install pandoc texlive-xetex texlive-latex-extra texlive-fonts-extra

# Option C — weasyprint (skip TeX entirely)
sudo apt-get install pandoc
pip install weasyprint

Arch Linux:

sudo pacman -S tesseract tesseract-data-eng poppler ghostscript jre-openjdk-headless

# For markdown_to_pdf — pick one engine route:

# Option A — tectonic (recommended for new installs, in official repo)
sudo pacman -S pandoc tectonic

# Option B — full TeX (best output, ~500 MB)
sudo pacman -S pandoc texlive-xetex texlive-latexextra texlive-fontsextra

# Option C — weasyprint (skip TeX)
sudo pacman -S pandoc
pip install weasyprint   # or: uv pip install weasyprint

# Option D — wkhtmltopdf (from AUR)
yay -S wkhtmltopdf-static

macOS (Homebrew):

brew install tesseract poppler ghostscript

# For markdown_to_pdf — pick one engine route:

# Option A — tectonic (recommended)
brew install pandoc tectonic

# Option B — full TeX (mactex-no-gui includes the latex-extra equivalent)
brew install pandoc
brew install --cask mactex-no-gui

# Option C — weasyprint
brew install pandoc weasyprint

Extras opcionales

La instalación base se mantiene ligera. Las dependencias pesadas o de nicho están bloqueadas detrás de extras:

Extra

Añade

Cuándo instalar

mcp-pdf[forms]

reportlab

Herramientas de creación de formularios (create_form_pdf, formularios de permiso)

mcp-pdf[tables]

camelot-py, tabula-py

Extracción de tablas de mayor precisión (también necesita Java + Ghostscript)

mcp-pdf[markdown]

pypandoc

Herramienta markdown_to_pdf (también necesita binario pandoc)

mcp-pdf[all]

Todo lo anterior

Quiere todo


Configuración

Variables de entorno opcionales:

Variable

Propósito

MCP_PDF_ALLOWED_PATHS

Directorios separados por dos puntos para la salida de archivos

PDF_TEMP_DIR

Directorio temporal para procesamiento (predeterminado: /tmp/mcp-pdf-processing)

TESSDATA_PREFIX

Ubicación de los datos de idioma de Tesseract


Desarrollo

# Run tests
uv run pytest

# With coverage
uv run pytest --cov=mcp_pdf

# Format
uv run black src/ tests/

# Lint
uv run ruff check src/ tests/

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-driven PDF document processing including PDF to Markdown conversion, intelligent text and table extraction, image extraction, format conversion between PDF/Word/Markdown, batch processing, and fuzzy search - optimized for LLM context and RAG workflows.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides intelligent OCR and PDF processing capabilities that automatically detect whether PDFs contain digital text or scanned images and apply appropriate extraction methods. Supports text extraction, OCR processing, structure analysis, and batch operations.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI applications to read and process PDF files with intelligent file search, text extraction, image processing, and optional OCR support for scanned documents.
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rsp2k/mcp-pdf'

If you have feedback or need assistance with the MCP directory API, please join our Discord server