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
基本情報
設定
以下の設定を使って、このサーバーを MCP 対応クライアントに追加してください。
{
"mcpServers": {
"sifter": {
"command": "uvx",
"args": [
"sifter-mcp",
"--base-url",
"https://api.sifter.run/api"
],
"env": {
"SIFTER_API_KEY": "sk-..."
}
}
}
}ツール
15List 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
「ファイルとストレージ」の他のコンテンツ
MCP docx server
h4ck4lifeMCP server to manipulate DOCX file
Bulk Filesystem Operations MCP Server
strawgateMCP Server for reading many files at the same time
WORK IN PROGRESS - USE WITH CAUTION - Windows:
hanwegMCP server for working with PDF files
Rust MCP Filesystem
rust-mcp-stackBlazing-fast, asynchronous MCP server for seamless filesystem operations.
mcp-v8: V8 JavaScript MCP Server
r33drichardsMCP server that exposes a V8 JavaScript runtime as a tool for AI agents like Claude and Cursor. Supports persistent heap snapshots via S3 or local filesystem, and is ready for integration with modern AI development environments.
コメント