io.github.sfrangulov/minirag-mcp
Local-first RAG MCP server: hybrid search over a folder of your own documents
Using io.github.sfrangulov/minirag-mcp in Claude, Cursor, Gemini CLI, Cline, or Zed?
MCP tool contracts can change remotely with no version bump. The mcpindex gate pins each contract and HOLDs the call when it drifts-before your agent acts. Zero credentials. This is not the package install for this server itself (use Install this server for that).
Rewrites your MCP host config so each server launches behind the gate. Inspect first: curl -fsSL https://mcpindex.ai/install.sh | less
uv tool install mcpindex-gate && mcpindex-config-wireVerdict not yet evaluated for this tool. The semantic screen takes adversarial cases first; coverage rolls out as the corpus expands (15/150 labels to graduation). The deterministic conformance probe is built but has not yet run on the public corpus, so a recorded verdict here is REVIEW or UNVERIFIED, never a clearing ALLOW. Until a verdict is recorded, an agent should treat this tool as not-yet-cleared and fall back to its own checks. Method: the eval, four-state verdict, honest limits.
Own this server? Screen its description →
That verdict was true at screening time (snapshot 2026-08-09).
Contracts can change after screening, with no version bump. The gate pins io.github.sfrangulov/minirag-mcp’s tool contracts on first sight and holds any silent change before your agent acts - the check that keeps being true on Tuesday.
See your first HOLD in 2 minutes →
Related: how to trust an MCP server · screen before install · silent contract drift
BASE_DIROne document root; also the security boundary for file access. Defaults to the process working directory. Ignored when BASE_DIRS is set.
BASE_DIRSJSON array of document roots, e.g. ["/docs/a", "/docs/b"]. Takes precedence over BASE_DIR. An invalid value is a hard configuration error.
DB_PATHLanceDB index directory. Defaults to <first root>/.minirag/lancedb, so each corpus gets its own index.
CACHE_DIREmbedding model cache. Defaults to the platform user cache dir, so the ~220 MB model is downloaded once and shared.
MODEL_NAMEfastembed model id. Changing it makes existing vectors incompatible with new queries; pair with a new DB_PATH or a full re-ingest.
MAX_FILE_SIZEPer-file size limit in bytes, enforced before parsing.
CHUNK_TOKEN_BUDGETRetrieval-unit size in the embedding model's own tokens. Range 16-128; the ceiling is the model's trained sequence length.
RAG_HYBRID_WEIGHTKeyword weight in the weighted RRF fusion, range 0.0-1.0. 0 is vector-only; higher values raise the BM25 contribution.
RAG_GROUPINGResult grouping filter. 'similar' keeps only the closest group; 'related' also keeps the next one. Unset means no grouping filter.
RAG_MAX_DISTANCEDrop results whose vector distance exceeds this value. Lower is stricter. Unset means no distance filter.
RAG_MAX_FILESKeep chunks from at most this many best-scoring files. Unset means no per-file filter.
RAG_INSTRUCTIONS_APPENDExtra paragraph appended to the instructions the server hands the client at connect time, for corpus-specific guidance.
ALLOW_PRIVATE_URLSLet ingest_url fetch hosts resolving to loopback, link-local, private, reserved or unspecified addresses. Off by default.
Host, Docker, Compose, SSH, logs, ZFS, and file operations over MCP and CLI.
A sandboxed, agentic workspace providing secure filesystem, bash, and uv-powered Python execution.
Filesystem-direct Obsidian MCP server — search and edit your vault with low context-tax.