MCP.so
ログイン

Sifter - Turn a folder of documents into typed records you can query

@sifter-ai

Sifter - Turn a folder of documents into typed records you can query について

Sifter extracts structured, typed records from your documents (PDFs, scans, contracts, invoices) using a natural-language field spec, then lets an agent query and aggregate them — exact counts, sums, filters, with citations back to the source page. Unlike RAG, it answers collecti

基本情報

カテゴリ

ファイルとストレージ

トランスポート

stdio

公開者

sifter-ai

投稿者

bruno fortunato

設定

以下の設定を使って、このサーバーを MCP 対応クライアントに追加してください。

{
  "mcpServers": {
    "sifter": {
      "command": "uvx",
      "args": [
        "sifter-mcp",
        "--base-url",
        "https://api.sifter.run/api"
      ],
      "env": {
        "SIFTER_API_KEY": "sk-..."
      }
    }
  }
}

ツール

15

List sifts with their name, instructions, and document/record counts. Args: limit: Maximum number of sifts to return (default 50, max 200) offset: Number of sifts to skip for pagination

Get sift metadata and inferred extraction schema for a specific sift.

Get extracted records from a sift. Args: sift_id: The sift identifier limit: Maximum number of records to return (default 20, max 100) offset: Number of records to skip (ignored when cursor is provided) cursor: Opaque pagination cursor from a previous call's next_cursor field

Run a natural language query over a sift's extracted records. Args: sift_id: The sift identifier natural_language: The question to answer (e.g. "What is the total by client?")

List folders with their name and document count. Args: limit: Maximum number of folders to return (default 100, max 200) offset: Number of folders to skip for pagination

Get folder metadata, linked sifts, and document list for a specific folder. Args: folder_path: Folder path (e.g. '/invoices/2025')

Get per-field citation map for a record (page, bbox, source text for each field). Args: sift_id: The sift identifier record_id: The record identifier

Create a new sift with the given extraction instructions. Args: name: Human-readable sift name instructions: Natural language extraction instructions (e.g. "client, date, total") folder_path: Optional folder path to link (e.g. '/invoices/2025'); created if it doesn't exist

Update an existing sift's name or instructions. Args: sift_id: The sift identifier name: New name (leave empty to keep current) instructions: New instructions (leave empty to keep current)

Delete a sift and all its records. Args: sift_id: The sift identifier

Upload a document to a folder. The folder is created if it doesn't exist. The document will be processed by all sifts linked to the folder. Args: folder_path: Target folder path (e.g. '/invoices/2025'). Created if it doesn't exist. filename: Original filename (used for display) content_base64: Base64-encoded file bytes

Enqueue extraction for a document on a specific sift. Args: document_id: The document identifier sift_id: The sift to extract with

Check extraction status for a document on a sift. Args: document_id: The document identifier sift_id: The sift identifier Returns: {"status": "queued|running|completed|failed", "error": "..." (on failure)}

Filter records with structured criteria (no LLM roundtrip). Args: sift_id: The sift identifier filter: Mongo-subset filter dict e.g. {"total": {"$gt": 1000}} sort: Optional sort spec e.g. [["date", -1]] limit: Max records to return (default 50) cursor: Opaque pagination cursor from a previous call Returns: {"records": [...], "next_cursor": "..." | null}

Run a MongoDB aggregation pipeline against a sift's records. Args: sift_id: The sift identifier pipeline: MongoDB aggregation pipeline stages e.g. [{"$group": {"_id": "$client", "total": {"$sum": "$total"}}}] Returns: Array of aggregated rows

概要

What is Sifter?

Sifter is an MCP server that converts a folder of documents into a queryable database of typed records. It extracts structured data (e.g., from invoices, contracts, receipts) using natural language schema definitions, then enables agents to query and aggregate over the entire collection with every value cited back to its source document, page, and bounding box.

How to use Sifter?

Connect via an MCP client configuration: remote (hosted endpoint with Bearer API key) or local (self-hosted using uvx sifter-mcp and docker compose up -d). Once connected, use the server’s tools to create a sift (define extraction fields in plain language), upload documents (PDFs, scans, images, etc.), and then list, filter, or aggregate records with full citations.

Key features of Sifter

  • Extract typed records from any document using natural language
  • Query and aggregate over all records with exact answers
  • Every value cited back to source page and bounding box
  • Supports PDFs, scans, images, contracts, receipts, invoices
  • Self-host locally for free with your own model (MIT license)
  • Connect via hosted endpoint or local Docker deployment

Use cases of Sifter

  • Aggregate invoice totals per client for financial reporting
  • Identify unpaid invoices and amounts across all documents
  • Find contracts expiring within a specific timeframe
  • Query all documents for exact counts and filtered lists
  • Extract structured data from scanned receipts or contracts

FAQ from Sifter

How is Sifter different from RAG?

RAG excels at finding passages but cannot answer aggregations like counts, sums, or group-bys across a document collection. Sifter extracts every document into typed records so you can query the whole set and get exact, traceable answers.

What do I need to run Sifter locally?

You need Docker (to run

コメント

「ファイルとストレージ」の他のコンテンツ