Sifter - Turn a folder of documents into typed records you can query
ローカルSifter - Turn a folder of documents into typed records you can query について
Sifter は、自然言語のフィールド定義をもとに PDF、スキャン、契約書、請求書などから型付きレコードを抽出する、オープンソースのドキュメントインテリジェンスエンジンです。類似度検索に基づく RAG とは異なり、同種の文書群に対する正確な件数や集計を必要とするチーム向けです。
主な機能
- 01自然言語の説明から抽出スキーマを推論
- 02結果を型付きの構造化レコードとして保存
- 03フィルターや件数、合計による正確な照会
- 04stdio 経由で読み取りと書き込みツールを提供する MCP サーバー
- 05Python と TypeScript の SDK および CLI
活用シーン
- 01四半期分の請求書の未払い合計を算出する
- 0290 日以内に期限を迎える契約書を探す
- 03スキルと経験年数で候補者の履歴書を絞り込む
MCP 対応
本プロジェクトは MCP サーバーであり、stdio 経由の読み取り・書き込みツールを MCP クライアントに提供して、抽出済みのドキュメントレコードを照会できるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | |
| offset | integer | いいえ |
詳細
Sifter
あなたのドキュメントは、暗黒のデータベースです。
オープンソースのドキュメントインテリジェンスエンジン — スキーマ駆動の抽出、自然言語クエリ、MCP サーバー、Python および TypeScript SDK を提供します。MIT ライセンスの下でセルフホスト可能です。

なぜ RAG ではないのか?
RAG は検索のために作られています。つまり、「このクエリに似たチャンクを見つける」ためのものです。請求書、契約書、領収書のように、どのドキュメントも似ていて、質問が検索ではなく集計を求める均質なコレクションでは、うまく機能しません。

Sifter のアプローチでは、構造化フィールド(クライアント、日付、合計金額)を一度だけ抽出し、型付きレコードとして保存して、実際のフィルターや集計を使ってクエリします。類似検索ではなくデータベースクエリであるため、正確で再現可能な回答が得られます。
クイックスタート
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
http://localhost:3000 を開き、sift を作成して、ドキュメントをアップロードし、結果をクエリします。
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}
TypeScript SDK
npm install @sifter-ai/sdk
import { Sifter } from "@sifter-ai/sdk";
const client = new Sifter({ apiKey: "sk-..." });
const sift = await client.createSift("Invoices", "client, date, total amount");
await sift.upload("./invoices/");
await sift.wait();
const records = await sift.records();
console.log(records);
MCP サーバー(Claude Desktop / Cursor / AI エージェント)
{
"mcpServers": {
"sifter": {
"command": "uvx",
"args": ["sifter-mcp", "--base-url", "http://localhost:8000"],
"env": { "SIFTER_API_KEY": "sk-dev" }
}
}
}
次のように質問できます。
「前四半期のすべての請求書の未払い合計はいくらですか?」 「今後90日以内に期限を迎える契約をすべて表示してください。」 「Python のスキルがあり、経験年数が5年を超える候補者は誰ですか?」
Sifter は、正確な件数や合計、フィルター済みの行など、構造化データで回答します。テキストの塊ではありません。
ローカルサーバーを実行せずにリモート MCP URL を使いたい場合 → Sifter Cloud
ダッシュボード
Sifter にはダッシュボードが組み込まれているため、Metabase、Grafana、SQL は不要です。
見たい内容を自然な言葉で説明します。
sift = client.sifts.get("invoices")
sift.create_dashboard("Show total invoiced and unpaid by vendor, monthly trend")
KPI タイル、内訳、時系列を生成し、抽出のたびに自動更新します。
含まれる機能
- スキーマ駆動の抽出 — 抽出する内容を自然な言葉で説明すると、スキーマが自動的に推測され、Pydantic / TypeScript の型としてエクスポートされます
- 自然言語クエリ — 自然な言葉で質問すると、Sifter が内容を確認できる MongoDB 集計パイプラインを生成します
- MCP サーバー — stdio トランスポート、読み取り・書き込みツール、カスタム統合コード不要
- REST API + SDK — 完全な OpenAPI 仕様、Python および TypeScript 向けの型付きクライアント
- Webhook — 抽出イベントごとに HMAC 署名付き HTTP コールバックを送信します
- 仕様駆動のダッシュボード — 短い自然言語の仕様から、KPI、内訳、テーブル、時系列を含むボードを自動生成します
- CLI — ターミナルのワークフローや CI で使える
sifter extract、sifter records、sifter sifts - セルフホスト可能 — Docker Compose に対応。MongoDB と LLM API キーはご自身で用意してください
インフラを実行したくない場合は?
Sifter Cloud はマネージド版です。MongoDB や運用作業は不要で、リモート MCP エンドポイント、Google Drive、メールからのデータ取り込みを利用できます。無料プランもあります。
ドキュメント
完全なドキュメントは docs.sifter.run にあります。クイックスタート、SDK リファレンス、MCP ガイド、クックブック、セルフホストの手順をご覧ください。
ライセンス
MIT — LICENSE をご覧ください。
Bruno Fortunato が作成しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。