/ Каталог / Песочница / Kreuzberg
● Сообщество kreuzberg-dev ⚡ Сразу

Kreuzberg

автор kreuzberg-dev · kreuzberg-dev/kreuzberg

Извлекайте чистый текст, таблицы и метаданные из PDF, документов Office, изображений и ещё 97+ форматов — через MCP на ядре Rust.

Kreuzberg — полиглот-фреймворк для работы с документами. MCP-сервер оборачивает ядро на Rust: Claude вызывает его для извлечения структурированного содержимого из любого формата без обращения к Unstructured/Tika/pdfplumber. OCR для отсканированных PDF, распознавание таблиц и метаданные — всё за один вызов.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

kreuzberg.replay ▶ готово
0/0

Установка

Выберите клиент

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

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

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

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

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

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

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

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

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

Continue использует массив объектов серверов, а не map.

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

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add kreuzberg -- uvx kreuzberg-mcp

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: Kreuzberg

Извлечь таблицы из сложного PDF в чистый markdown

👤 Аналитики, работающие с отчётными PDF ⏱ ~10 min beginner

Когда использовать: У вас PDF с таблицами, которые pdftotext превращает в кашу, и вы не хотите перепечатывать вручную.

Предварительные требования
  • MCP установленuvx kreuzberg-mcp — или добавьте через claude mcp add
Поток
  1. Извлечь
    Use kreuzberg to extract /docs/2025-annual-report.pdf. Give me the tables as markdown and the body text separately.✓ Скопировано
    → Чистые markdown-таблицы с сохранёнными заголовками
  2. Проверить
    For the "Revenue by Segment" table, reconcile the column totals. Flag any OCR misreads.✓ Скопировано
    → Проверка арифметики с пометкой подозрительных ячеек

Итог: Markdown-таблицы, которые можно вставить в документ без доработки.

Подводные камни
  • Отсканированный PDF — OCR путает 6 и 8 — Используйте показатель уверенности OCR и перепроверяйте ячейки с низкой уверенностью вручную
Сочетать с: filesystem

Обработать папку смешанных форматов для последующей индексации

👤 Инженеры, строящие RAG-пайплайны ⏱ ~30 min intermediate

Когда использовать: Клиент скинул архив с PDF, Word-файлами и PowerPoint-презентациями, и вам нужен чистый текст для эмбеддингов.

Предварительные требования
  • Filesystem MCP с доступом к папке — Запустите fs MCP с папкой для обработки в качестве корня
Поток
  1. Инвентаризация
    List every file under /ingest/. For each, call kreuzberg.detect_format and report.✓ Скопировано
    → Таблица формат/файл
  2. Массовое извлечение
    For each file, extract text + metadata. Write cleaned .txt next to the original and a manifest.json with metadata.✓ Скопировано
    → Все файлы обработаны; manifest содержит каждую запись
  3. Проверка качества
    List every file where extraction returned <100 chars — those are likely scanned or corrupt. Re-run with OCR forced.✓ Скопировано
    → Файлы с низким содержимым выявлены и повторно обработаны

Итог: Папка с очищенными текстовыми файлами, готовыми к эмбеддингу, и манифест с метаданными.

Подводные камни
  • Зашифрованный PDF — Kreuzberg вернёт ошибку — расшифруйте через qpdf или попросите незащищённую копию
Сочетать с: filesystem · memory

Комбинации

Сочетайте с другими MCP — эффект x10

kreuzberg + filesystem

Обойти папку и обработать каждый документ на месте

For each PDF under /docs, extract text and save as .md next to it.✓ Скопировано
kreuzberg + memory

Загрузить извлечённое содержимое в граф знаний

Extract /contracts/*.pdf and store key terms in memory for cross-doc querying.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
extract_text path: str, ocr?: bool Основной вызов для извлечения содержимого free
extract_metadata path: str Когда нужны только метаданные без основного текста free
extract_tables path: str Извлечение с фокусом на таблицы free
detect_format path: str Уточнить формат перед извлечением free

Стоимость и лимиты

Во что обходится

Квота API
Без ограничений — локально
Токенов на вызов
Пропорционально размеру документа; 20-страничный PDF ≈ 8k токенов вывода
Деньги
Бесплатно (open source)
Совет
Сначала запускайте extract_metadata на больших файлах, чтобы не обрабатывать лишнее

Безопасность

Права, секреты, радиус поражения

Хранение учётных данных: Не требуется в локальном режиме
Исходящий трафик: Отсутствует — всё обрабатывается локально

Устранение неполадок

Частые ошибки и исправления

ModuleNotFoundError: tesseract

Установите системный бинарник Tesseract: brew install tesseract / apt install tesseract-ocr

Проверить: `tesseract --version`
Пустой вывод для PDF

Скорее всего, PDF состоит только из изображений — повторите с ocr=true

Проверить: Check output.metadata.has_text_layer
Таблицы XLSX извлекаются с перемешанными данными

Передайте имя листа явно: инструмент поддерживает аргумент sheet

Альтернативы

Kreuzberg в сравнении

АльтернативаКогда использоватьКомпромисс
markdownify-mcpНужен лёгкий конвертер на Node без OCRМеньше форматов, таблицы не сохраняются
Unstructured.ioНужен enterprise-парсинг PDF и готовы принять облачные расходыПлатный; облачный хостинг

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills