/ Directorio / Playground / Kreuzberg
● Comunidad kreuzberg-dev ⚡ Instantáneo

Kreuzberg

por kreuzberg-dev · kreuzberg-dev/kreuzberg

Extrae texto limpio, tablas y metadatos de PDFs, documentos de Office, imágenes y más de 97 formatos — mediante un MCP con núcleo en Rust.

Kreuzberg es un framework de inteligencia documental multilenguaje. El servidor MCP envuelve el pipeline central en Rust: Claude lo llama para extraer contenido estructurado de cualquier formato sin necesidad de Unstructured, Tika ni pdfplumber. Gestiona OCR para PDFs escaneados, detección de tablas y metadatos en una sola llamada.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

kreuzberg.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kreuzberg": {
      "command": "uvx",
      "args": [
        "kreuzberg-mcp"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kreuzberg": {
      "command": "uvx",
      "args": [
        "kreuzberg-mcp"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kreuzberg": {
      "command": "uvx",
      "args": [
        "kreuzberg-mcp"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kreuzberg": {
      "command": "uvx",
      "args": [
        "kreuzberg-mcp"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kreuzberg",
      "command": "uvx",
      "args": [
        "kreuzberg-mcp"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "kreuzberg": {
      "command": {
        "path": "uvx",
        "args": [
          "kreuzberg-mcp"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add kreuzberg -- uvx kreuzberg-mcp

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: Kreuzberg

Extraer tablas de un PDF desordenado y convertirlas a markdown limpio

👤 Analistas que trabajan con PDFs de informes ⏱ ~10 min beginner

Cuándo usarlo: Tienes un PDF con tablas que pdftotext estropea y no quieres volver a teclearlas.

Requisitos previos
  • MCP instaladouvx kreuzberg-mcp — o añade mediante claude mcp add
Flujo
  1. Extraer
    Utiliza kreuzberg para extraer /docs/2025-annual-report.pdf. Dame las tablas en markdown y el texto del cuerpo por separado.✓ Copiado
    → Tablas markdown limpias con encabezados conservados
  2. Verificar
    For the "Revenue by Segment" table, reconcile the column totals. Flag any OCR misreads.✓ Copiado
    → Verificación aritmética con celdas marcadas

Resultado: Tablas en markdown listas para pegar en un documento sin retrabajo.

Errores comunes
  • PDF escaneado — el OCR confunde el 6 con el 8 — Usa la salida de confianza del OCR y revisa manualmente las celdas de baja confianza
Combinar con: filesystem

Ingestar una carpeta de documentos en formatos mixtos para indexación posterior

👤 Ingenieros que construyen pipelines RAG ⏱ ~30 min intermediate

Cuándo usarlo: Un cliente te entrega un zip con PDFs, documentos Word, PowerPoints y necesitas texto limpio para generar embeddings.

Requisitos previos
  • MCP de filesystem apuntando a la carpeta — Lanza el MCP de fs con el directorio de ingesta como raíz
Flujo
  1. Inventario
    List every file under /ingest/. For each, call kreuzberg.detect_format and report.✓ Copiado
    → Tabla de formato por archivo
  2. Extracción masiva
    For each file, extract text + metadata. Write cleaned .txt next to the original and a manifest.json with metadata.✓ Copiado
    → Todos los archivos procesados; el manifiesto contiene cada entrada
  3. Control de calidad
    List every file where extraction returned <100 chars — those are likely scanned or corrupt. Re-run with OCR forced.✓ Copiado
    → Archivos con poco contenido identificados y reintentados

Resultado: Una carpeta de archivos de texto limpios listos para embedding, con un manifiesto de metadatos.

Errores comunes
  • PDF cifrado — Kreuzberg devuelve un error — descífralo con qpdf o pide la copia desbloqueada
Combinar con: filesystem · memory

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

kreuzberg + filesystem

Recorrer una carpeta y extraer todos los documentos en su lugar

For each PDF under /docs, extract text and save as .md next to it.✓ Copiado
kreuzberg + memory

Ingestar el contenido extraído en un grafo de conocimiento

Extract /contracts/*.pdf and store key terms in memory for cross-doc querying.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
extract_text path: str, ocr?: bool Llamada principal de extracción free
extract_metadata path: str Cuando solo necesitas metadatos sin el texto del cuerpo free
extract_tables path: str Extracción enfocada en tablas free
detect_format path: str Confirmar el formato antes de extraer free

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ilimitado — local
Tokens por llamada
Proporcional al tamaño del documento; un PDF de 20 páginas genera ~8k tokens de salida
Monetario
Gratuito (open source)
Consejo
Usa extract_metadata primero en archivos grandes para evitar procesar los irrelevantes

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Ninguno en modo local
Salida de datos: Ninguno — todo el procesamiento es local

Resolución de problemas

Errores comunes y soluciones

ModuleNotFoundError: tesseract

Instala el binario de Tesseract: brew install tesseract / apt install tesseract-ocr

Verificar: `tesseract --version`
Salida vacía en un PDF

Probablemente sea un PDF solo con imágenes — vuelve a ejecutar con ocr=true

Verificar: Check output.metadata.has_text_layer
Las tablas XLSX salen desordenadas

Pasa el nombre de la hoja explícitamente: la herramienta acepta el argumento sheet

Alternativas

Kreuzberg vs otros

AlternativaCuándo usarlaContrapartida
markdownify-mcpPrefieres un conversor más ligero basado en Node sin OCRMenos formatos, sin conservación de tablas
Unstructured.ioNecesitas análisis de PDF empresarial y aceptas el coste en la nubeDe pago; hospedado en la nube

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills