Magpie Search
概要
作者による説明(英語の原文)
Federated local-first search across transcripts, files, KG, vectors and the web for AI agents.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 81/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 検索・AIの記憶
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- レジストリには、入力が必要なキーは載っていません。
必要なもの
- PyPIPythonのuvのインストール(uvxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"magpie-search": {
"command": "uvx",
"args": [
"magpie-search",
"magpie-search-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add magpie-search -- uvx magpie-search magpie-search-mcpまたは、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"magpie-search": {
"command": "uvx",
"args": [
"magpie-search",
"magpie-search-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"magpie-search": {
"type": "stdio",
"command": "uvx",
"args": [
"magpie-search",
"magpie-search-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月10日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント xfloukiex-lab で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5832件のうち0%よりスターが多い
- このカテゴリのほかの5832件のうち40%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5832件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Magpie Searchは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(1.3.1)がレジストリに届いたのは2 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Magpie Search
A federated search engine — the search engine an AI agent or LLM reaches for when it needs to find something true to reason over.
Ever had your computer reboot on you, or a power outage hit mid-session? Every thread your agent was holding — gone. Now you have the tool to get it back. Never forget what your agent lost again. Magpie indexes everything your AI has ever worked through, locally, so a crash is a hiccup instead of amnesia.
What Magpie is
A normal search engine looks in one place. Magpie takes one question and fans it across everything that matters at once — the AI's entire conversation history, the files on the machine, a structured knowledge graph, a vector store, and the live web — and pulls the answer back from wherever it actually lives. Five sources, one call.
And it searches each one the right way. It can grep for an exact string or regex when you know the precise token — a file path, an error, a line of code. It can search by keyword. It can search by meaning, so it finds the thing even when the words don't match. It can do all of that at once.
Then it does the part that makes it trustworthy: it fuses everything into a single ranked answer, and every result carries a trust tier — fact > reference > lead > stale. The solid sources rise, the loose ones are marked as leads to verify, duplicates collapse, and it's all trimmed to fit so it never floods the AI's context. Ask it to go deep and it expands one question into many, reads the pages, and tells you how many independent sources agree — a full research sweep without an army of agents.
It runs entirely on the machine. No server, no account, and no telemetry unless you turn it on. The AI's transcripts and files never leave. It plugs into whatever AI is running over MCP, so the agent can reach all six sources the instant it needs them.
It is a tool for an AI — an agent or an LLM.
What's inside
At its core is a local index of the AI's transcripts: a SQLite database with two structures built side by side —
- an FTS5 full-text index (BM25 keyword ranking), and
- a vector index (
sqlite-vec) of 384-dim embeddings produced locally by a smallall-MiniLM-L6-v2model.
Everything is redacted at ingest — a scrubber strips ~30 classes of secrets (keys, tokens, private keys, connection strings) before a single byte hits the index.
On top of that index sit the five search modes:
| Mode | What it does |
|---|---|
grep | literal / regex match (exact tokens: paths, errors, code) |
lexical | FTS5 / BM25 keyword |
semantic | embedding K-NN, cosine distance in the vector index |
hybrid | lexical + semantic fused by RRF |
rerank | hybrid, then a cross-encoder (jina-reranker) re-scores each candidate |
Around that sits the federation layer — the part that makes it federated:
- A provider plugin system. Five backends (transcripts, files, knowledge graph, vector, web), each returns
Hitobjects tagged with a trust tier. - A fan-out: one query goes to all providers concurrently (≤8 workers), each with a 5-second timeout that fails open — a slow source contributes nothing rather than blocking the call.
- Trust-weighted RRF fusion — Reciprocal Rank Fusion where each source's rank is multiplied by its trust weight (
fact ×3, reference ×2, lead ×1, stale ×0.3), damping constant 60. This is the math that merges six heterogeneous sources into one honest ranking. - Cross-source dedup by content hash — the same fact found in three places collapses to one hit, tagged with where else it appeared (corroboration).
- A token-budget trim, so the merged set never overflows the calling AI's context.
And it exposes all of this to an AI over an MCP server — the tools it hands an agent are exactly: search, recent, session, list_sessions, stats, reindex. Note what's *not* in that list: nothing that writes an answer.
Why that is not RAG
RAG = Retrieval-Augmented Generation. It's a two-stage pipeline, and the defining stage is the second one: a retriever finds chunks → they're stuffed into a prompt → a language model generates the prose answer. The "G" is the whole point of the name; without a generator writing the answer, it isn't RAG.
Magpie has no G:
- There is no generator anywhere in the search path. Nothing in Magpie composes a natural-language answer. The closest thing to a model — the cross-encoder reranker — outputs a relevance number per result and reorders the list. It scores; it never writes a sentence.
- It stops at "here are the ranked hits." A RAG owns the prompt assembly and the model call. Magpie returns the fused, trust-ranked results and hands them back through MCP. What the AI does next — whether it even generates anything — is the AI's job, outside Magpie.
- Its retriever is more than a RAG's retriever, not less. A textbook RAG retriever is one vector store: embed the query, top-k by cosine, done. Magpie's retrieval is six sources, five modes, trust-weighted fusion, cross-source dedup. It's a far more capable "R" — but it's still only the R.
Plug Magpie into an AI and the pair can form a RAG — Magpie is the R, the AI you bring is the G. But Magpie by itself ships only the R, and a stronger R than usual. It finds and ranks the truth; it never generates the answer.
Deep web search — research breadth without the token bill
The expensive part of "deep research" is reasoning, and the multi-agent approach pays for it N times over — one full LLM context per agent, often *millions* of tokens for a single question. But reasoning doesn't need to fan out; one capable model already in context can synthesize. Only the searching needs breadth — and searching the web is pure retrieval, zero LLM tokens.
magpie-search deepweb is built on that asymmetry. It fires several sub-queries at the web in parallel, fuses them by trust-weighted RRF + dedup-by-URL into one compact, token-budget-trimmed source set, optionally reads the top pages' text (still token-free), and reports how many independent domains corroborate the result — an agent-free version of the verification a research swarm pays agents to do.
So you get the breadth, page-reading, and corroboration of a multi-agent deep search, but your model only pays for a single synthesis pass over a trimmed result set.
Token cost, measured — one deep question:
| Approach | Tokens the model pays |
|---|---|
| Multi-agent deep-research swarm (N agents each read pages into their own context) | ~2,000,000 |
magpie-search deepweb --thorough (6 angles → 12 sources, 12 full pages read) | ~1,050 |
That's ~2,000× fewer tokens — about 1/2000th the cost — because the searching and page-reading are pure retrieval (zero model tokens); your model only does the final synthesis pass over the trimmed, corroborated set.
# one question, several angles, read the top pages — all token-free retrieval
magpie-search deepweb "the question" --q "another angle" --q "a third angle" --thorough
The model in your loop then does one synthesis pass over the merged, corroborated set. That's the whole saving: the breadth is free, you pay only for the answer.
Install
pip install magpie-search
Live web search and `deepweb` need the `web` extra:
pip install "magpie-search[web]"
Without it, --sources web and deepweb return no results — the web provider is designed to fail soft so it can never break a federated search, so a missing dependency looks exactly like a search that found nothing. As of 1.3.1 it also prints a one-line reason on stderr instead of failing silently.
Or install the latest straight from source:
pip install "git+https://github.com/xfloukiex-lab/magpie-search.git#egg=magpie-search[web]"
Optional — add the local-LLM features (the cross-encoder reranker runs on the base install; the session summarizer needs Ollama):
# 1. Install Ollama (free, runs entirely locally) — https://ollama.com/download
2. Pull the model magpie-search uses
ollama pull phi3.5
Python 3.10+ on Windows, macOS, and Linux.
Quickstart
magpie-search index # build the index (incremental)
magpie-search search "that retry backoff thing" # keyword search magpie-search search --mode hybrid "..." # keyword + semantic, fused magpie-search search --mode rerank "..." # + cross-encoder rerank magpie-search stats # sanity-check the index
Connect it to your AI (MCP)
Magpie speaks the Model Context Protocol, so any MCP-capable agent can call it. Point your client at the bundled server:
// e.g. an MCP client config
{ "mcpServers": { "magpie": { "command": "magpie-search-mcp" } } }
The agent then has search, recent, session, list_sessions, stats, and reindex available — federated, trust-ranked, context-budgeted.
CLI reference
| Command | What | ||||
|---|---|---|---|---|---|
magpie-search index | Incremental indexing pass over ~/.claude/projects/ | ||||
magpie-search search "q" | Search — `--mode grep\ | lexical\ | semantic\ | hybrid\ | rerank` |
magpie-search recent --n 30 | Latest 30 messages of the newest session | ||||
magpie-search session SESSION-ID | Full transcript of one session | ||||
magpie-search list | Recent sessions | ||||
magpie-search stats | Index size, last-indexed time, row counts | ||||
magpie-search backup | Back up ~/.claude/projects/ to a configurable destination |
Add --help to any command for full options.
Python API
import magpie_search
results = magpie_search.search("retry backoff", mode="hybrid", k=5) for h in results["hits"]: print(h["trust"], h["source"], h["snippet"])
LLM features (needs Ollama + phi3.5)
import magpie_search.llm ranked = magpie_search.llm.search_rerank(query="retry backoff", k=3, pool=10) summary = magpie_search.llm.summarize(session_id="abc-123", n_messages=80)
Backup
magpie-search backup copies your transcript tree to a destination of your choice — a local folder (default, zero config), a remote SSH target (NAS / home server), or a remote SSH target with VM boot/suspend. Configure it in ~/.magpie-search/backup.env:
MAGPIE_SEARCH_BACKUP_SSH_HOST=user@nas.local
MAGPIE_SEARCH_BACKUP_SSH_DEST=~/claude-transcripts/
Useful flags: --dry-run, --no-suspend, --show-config. Backup copies; it never deletes originals.
Configuration
Everything is environment-variable driven with sensible defaults.
| Var | Default | What |
|---|---|---|
MAGPIE_SEARCH_HOME | ~/.magpie-search | Data directory (DB, models, logs) |
MAGPIE_SEARCH_MODELS_DIR | $MAGPIE_SEARCH_HOME/models | fastembed model cache |
MAGPIE_SEARCH_OLLAMA_HOST | http://localhost:11434 | Ollama server URL |
MAGPIE_SEARCH_TOKENIZER | heuristic | Set to tiktoken for precise budget counting |
MAGPIE_SEARCH_AUDIT_LOG | $MAGPIE_SEARCH_HOME/llm-audit.jsonl | Per-call audit log |
The summarizer passes through a 6-probe guardrail stack (length, proper-noun-safety, identifier-safety, refusal-drif
冒頭だけを表示しています。続きはリポジトリで読めます