sifter-ai/sifter

sifter-ai/sifter

от sifter-ai
Sifter — open-source движок для извлечения структурированных данных из документов (счетов, контрактов). Вместо RAG выделяет точные поля (клиент, дата, сумма) и хранит их как записи — ответы получаю...

Sifter

CI codecov PyPI npm Python Node License: MIT

Your documents are a dark database.

Open-source document intelligence engine — schema-driven extraction, NL query, MCP server, Python and TypeScript SDKs. Self-hostable under MIT.

Sifter demo


Why not RAG?

RAG is built for retrieval — find me chunks similar to this query. It breaks on homogeneous collections like invoices, contracts, or receipts where every document looks alike and the question is an aggregation, not a search.

Documents to structured records

Sifter's approach: extract structured fields once (client, date, total), store them as typed records, query with real filters and aggregations. The answer is exact and reproducible — because it's a database query, not a similarity search.


Quickstart

git clone https://github.com/sifter-ai/sifter
cd sifter/code
cp server/.env.example server/.env.local    # set SIFTER_DEFAULT_API_KEY (required)
docker compose up -d

Open http://localhost:3000 — create a sift, upload documents, query results.


Python SDK

pip install sifter-ai
from sifter import Sifter

s = Sifter(api_key="sk-...")

sift = s.create_sift("Invoices", "client name, date, total amount")
sift.upload("./invoices/")
sift.wait()

for record in sift.records():
    print(record["extracted_data"])
# {"client": "Acme Corp", "date": "2024-01-15", "total_amount": 1500.0}

Часто задаваемые вопросы

Инструменты были проиндексированы:
aggregate_sift

Запускает конвейер агрегации MongoDB по записям sift'а. Аргументы: sift_id: Идентификатор sift'а pipeline: Этапы конвейера агрегации MongoDB например [{"$group": {"_id": "$client", "total": {"$sum": "$total"}}}] Возвращает: Массив агрегированных строк

Параметры
  • pipelineany[]обязательный
  • sift_idstringобязательный
create_sift

Создаёт новый sift с заданными инструкциями по извлечению. Args: name: Человекочитаемое имя sift instructions: Инструкции по извлечению на естественном языке (например "client, date, total") folder_path: Необязательный путь к папке для привязки (например '/invoices/2025'); создаётся, если её не существует

Параметры
  • folder_pathstring
  • instructionsstringобязательный
  • namestringобязательный
delete_sift

Удаляет sift и все его записи. Аргументы: sift_id: Идентификатор sift

Параметры
  • sift_idstringобязательный
find_records

Фильтрует записи по структурированным критериям (без обращения к LLM). Аргументы: sift_id: идентификатор sift filter: словарь фильтра в подмножестве MongoDB, например {"total": {"$gt": 1000}} sort: опциональная спецификация сортировки, например [["date", -1]] limit: максимальное количество записей для возврата (по умолчанию 50) cursor: непрозрачный курсор пагинации из предыдущего вызова Возвращает: {"records": [...], "next_cursor": "..." | null}

Параметры
  • cursorstring
  • filterobjectобязательный
  • limitinteger
  • sift_idstringобязательный
  • sortany[]
get_extraction_status

Проверить статус извлечения для документа на sift. Аргументы: document_id: Идентификатор документа sift_id: Идентификатор sift Возвращает: {"status": "queued|running|completed|failed", "error": "..." (при ошибке)}

Параметры
  • document_idstringобязательный
  • sift_idstringобязательный
get_folder

Получает метаданные папки, связанные sifts и список документов для указанной папки. Аргументы: folder_path: Путь к папке (например '/invoices/2025')

Параметры
  • folder_pathstringобязательный
get_record_citations

Получить карту цитирования по полям для записи (страница, bbox, исходный текст для каждого поля). Аргументы: sift_id: Идентификатор sift record_id: Идентификатор записи

Параметры
  • record_idstringобязательный
  • sift_idstringобязательный
get_sift

Получить метаданные sift и предполагаемую схему извлечения для конкретного sift.

Параметры
  • sift_idstringобязательный
list_folders

Выводит список папок с названиями и количеством документов. Аргументы: limit: максимальное количество папок для возврата (по умолчанию 100, максимум 200) offset: количество папок для пропуска при пагинации

Параметры
  • limitinteger
  • offsetinteger
list_records

Получить извлеченные записи из sift. Аргументы: sift_id: Идентификатор sift limit: Максимальное количество возвращаемых записей (по умолчанию 20, максимум 100) offset: Количество пропускаемых записей (игнорируется, если указан cursor) cursor: Непрозрачный курсор пагинации из поля next_cursor предыдущего вызова

Параметры
  • cursorstring
  • limitinteger
  • offsetinteger
  • sift_idstringобязательный
list_sifts

Выводит список sifts с их названиями, инструкциями и количеством документов/записей. Аргументы: limit: Максимальное количество sifts для возврата (по умолчанию 50, максимум 200) offset: Количество sifts, которое нужно пропустить для пагинации

Параметры
  • limitinteger
  • offsetinteger
query_sift

Выполнить запрос на естественном языке по извлеченным записям sift. Args: sift_id: Идентификатор sift natural_language: Вопрос, на который нужно ответить (например, «Какова общая сумма по клиенту?»)

Параметры
  • natural_languagestringобязательный
  • sift_idstringобязательный
run_extraction

Ставит в очередь извлечение данных для документа по определённому sift. Аргументы: document_id: Идентификатор документа sift_id: Sift, по которому выполняется извлечение

Параметры
  • document_idstringобязательный
  • sift_idstringобязательный
update_sift

Обновить название или инструкции существующего sift. Аргументы: sift_id: Идентификатор sift name: Новое название (оставьте пустым, чтобы сохранить текущее) instructions: Новые инструкции (оставьте пустыми, чтобы сохранить текущие)

Параметры
  • instructionsstring
  • namestring
  • sift_idstringобязательный
upload_document

Загружает документ в папку. Папка создаётся, если её нет. Документ обработают все сифты, привязанные к этой папке. Аргументы: folder_path: целевой путь к папке (например, '/invoices/2025'). Создаётся, если не существует. filename: исходное имя файла (используется для отображения) content_base64: файл в байтах, закодированный в Base64

Параметры
  • content_base64stringобязательный
  • filenamestringобязательный
  • folder_pathstringобязательный
1.0.1основная
1.0.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0

Выберите клиент, чтобы установить sifter-ai/sifter:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"sifter-ai-sifter-zh6kvn0rzj\",\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"sifter-mcp\",\"--base-url\",\"http://localhost:8000\"],\"env\":{\"SIFTER_API_KEY\":\"sk-dev\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add sifter-ai-sifter-zh6kvn0rzj --env SIFTER_API_KEY=sk-dev -- uvx sifter-mcp --base-url http://localhost:8000

Либо через JSON-конфиг:

claude mcp add-json sifter-ai-sifter-zh6kvn0rzj "{\"command\":\"uvx\",\"args\":[\"sifter-mcp\",\"--base-url\",\"http://localhost:8000\"],\"env\":{\"SIFTER_API_KEY\":\"sk-dev\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add sifter-ai-sifter-zh6kvn0rzj --env SIFTER_API_KEY=sk-dev -- uvx sifter-mcp --base-url http://localhost:8000

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.sifter-ai-sifter-zh6kvn0rzj]
command = "uvx"
args = ["sifter-mcp", "--base-url", "http://localhost:8000"]

[mcp_servers.sifter-ai-sifter-zh6kvn0rzj.env]
SIFTER_API_KEY = "sk-dev"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите sifter-ai/sifter, а в поле команды запуска — строку ниже:
uvx sifter-mcp --base-url http://localhost:8000

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например sifter-ai-sifter-zh6kvn0rzj.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: sifter-ai-sifter-zh6kvn0rzj
    command: uvx
    args:
      - "sifter-mcp"
      - "--base-url"
      - "http://localhost:8000"
    env:
      SIFTER_API_KEY: sk-dev
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "sifter-ai-sifter-zh6kvn0rzj": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "http://localhost:8000"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-dev"
      }
    }
  }
}

Похожие MCP-сервера

Chroma MCP

Chroma MCP

официальный

от chroma-core

MCP-сервер для интеграции Chroma (open-source базы эмбеддингов) с LLM. Позволяет создавать коллекции, добавлять документы и выполнять семантический поиск с фильтрацией. Подходит разработчикам, стро...

Python⭐ 600
dmayboroda/minima

dmayboroda/minima

от dmayboroda

Minima — open-source MCP сервер для локального RAG в контейнерах. Поддерживает изолированный Ollama, кастомные LLM и интеграцию с ChatGPT и Claude. Индексирует документы и отвечает на вопросы, обеспечивая полный контроль над данными. Полезен для конфиденциальных проектов и офлайн-сред.

Python⭐ 1054
izzzzzi/codewiki-mcp

izzzzzi/codewiki-mcp

от izzzzzi

Сервер MCP для codewiki.google — поиск репозиториев, получение подробной документации и ответы на вопросы на естественном языке. Подключает AI к вики-страницам любых open-source проектов.

TypeScript⭐ 18
LightSpeedPlusOne/invovate-mcp-server

LightSpeedPlusOne/invovate-mcp-server

от lightspeedplusone

Бесплатный MCP-сервер для генерации счетов без регистрации: создаёт PDF, JSON и UBL 2.1 счета на 11 языках. Работает с Claude, Cursor, Windsurf. Расчёт сумм без ключа, для PDF - бесплатный ключ.

JavaScript⭐ 1
HubLensOfficial/mcp-server

HubLensOfficial/mcp-server

от hublensofficial

MCP сервер HubLens даёт AI-агентам доступ к трендовым open-source проектам с GitHub и Hacker News. Ищите по категориям, получайте AI-суммаризации и рейтинг без API ключа. Полезен разработчикам для разведки трендов.

JavaScript⭐ 1
agent-hanju/char-index-mcp

agent-hanju/char-index-mcp

от agent-hanju

MCP сервер для манипуляции строками по символьным индексам. Помогает LLM точно выделять, вставлять или удалять текст на заданных позициях. Идеален для генерации тестового кода и разбора ответов. Включает 12 инструментов - поиск, замена, извлечение подстрок.

Python⭐ 3
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин