Minirag MCP
Local-first RAG MCP server: hybrid search over a folder of your own documents
Connector by sfrangulov · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/sfrangulov-minirag-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: knowledge-base, document-processing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 7 read · 4 write · 1 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 12
Read from the source code; the running server may list different tools.
Read 7 · Look things up without changing anything.
find_mentionsingest_urllist_filesquery_documentsread_chunk_neighborsread_filestatus
Write 4 · Create, change, send or run things.
ingest_dataingest_filesync_startsync_status
Delete 1 · Delete, drop, revoke or wipe things.
delete_file
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
CHUNK_TOKEN_BUDGET
Other settings (environment variables or headers).
ALLOW_PRIVATE_URLSBASE_DIRBASE_DIRSCACHE_DIRDB_PATHMAX_FILE_SIZEMODEL_NAMERAG_GROUPINGRAG_HYBRID_WEIGHTRAG_INSTRUCTIONS_APPENDRAG_MAX_DISTANCERAG_MAX_FILES
Network hosts it talks to 3
169.254.169.254· found in codegithub.com· found in codeglama.ai· found in code
Files it touches
/private/tmp- Any path the agent passes to its tools
Tools (12)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
delete_fileDelete an indexed file, data item, or url item from the index. Provide exactly one of filePath (absolute path inside a document root) or source (the id of a data/url item). This only removes the index entry — a file left in place under a document root is re-ingested by a later sync_start.
find_mentionsList every indexed document that mentions a word or phrase, with counts. For "which documents mention X", "list all", "how many", and "is X mentioned anywhere": this scans the whole index, where query_documents ranks a few passages and stops. A term matches where a word begins and its end is open: акт finds акта and актов, not контакт — but also актуально. `forms` lists the word forms each term matched, with how many documents have each; check it before trusting a count. A term wrapped in double quotes matches that exact word only, so to narrow, pass the forms you want, each quoted, with mat…
ingest_dataIngest text/markdown/html content the client holds, under a source id you choose. format is one of "text", "markdown", or "html" (default "text"). source is a stable identifier you pick, not a filesystem path — re-using it replaces the previously ingested content for that id, so reuse the same source to update an item. `labelProblem` is as in ingest_file.
ingest_fileIngest or re-ingest one file, replacing any content already indexed for it. filePath must be an absolute path inside a configured document root. Re-ingesting an already-indexed file discards its old chunks and replaces them with freshly parsed ones. With a classify.toml, `labelProblem` says which labels the document was stored without, and why; a full sync asks again.
ingest_urlFetch an http(s) URL, convert it to Markdown, and index it. Only http and https schemes are accepted, and the host must not be a private or local address (loopback, link-local, private, reserved) — set ALLOW_PRIVATE_URLS=1 to lift that. This is the one tool that reaches the network — every other tool works purely against local files and the local index. source defaults to the URL itself; pass one to control the index key or to update a previously ingested URL. `labelProblem` is as in ingest_file.
list_filesList files found on disk under the document roots, plus indexed data/url sources. Each disk file is reported with a state: "ingested" (index matches disk), "stale" (changed on disk since it was indexed), "stale_scheme" (unchanged on disk, but indexed under an older chunking scheme, so its vectors are not comparable with current ones), "stale_pages" (an unchanged PDF indexed before page numbers were stored, so its results carry none), "not_ingested" (never indexed), or "unreadable" (indexed and still on disk, but of a type this installation cannot read because an optional extra is absent — ima…
query_documentsHybrid search: semantic similarity plus a keyword boost for exact terms. Returns `results` — ranked chunks with text, source, title, chunkIndex, score and parentId — `sources`, the distinct sources in rank order each with a hits count and a `displayPath` to show the user (`source` stays absolute and is what the other tools take), and `parents`, a map from parentId to section text. Use `sources` to answer "which documents cover this topic" without inspecting individual chunks. A `sources` row carries `lookAlikes` when other indexed documents overlap it by 0.5 or more: up to 3, most first, eac…
read_chunk_neighborsRead the chunks immediately before and after a search result, for context. Provide exactly one of filePath (absolute path inside a document root) or source (the id of a data/url item). before/after control how many chunks to include on each side of chunkIndex (both default to 1). A chunk of a PDF carries `pages` as in query_documents.
read_fileRead a source's entire indexed content as Markdown. The document is reconstructed from its chunks, not concatenated from them: the context each chunk repeats so its own vector carries it — a heading breadcrumb, a time-window label, a table's header row — is emitted once, where the document had it. Provide exactly one of filePath (absolute path inside a document root) or source (the id of a data/url item). The response holds the full document text, so large documents produce large responses — prefer read_chunk_neighbors when only the context around one chunk is needed.
statusReport configuration and index status. Works even when configuration is invalid. Always includes version. When configuration is valid, also includes roots, dbPath, model, hybridWeight, and chunkCount/sourceCount (both present on every call, 0 before anything is indexed) — or, if opening the index itself fails, indexError instead of the counts. When configuration is invalid, includes configError instead, and every other tool raises an error referencing it until the configuration is fixed. chunkScheme is the chunking scheme the index is being written with. staleChunkCount counts chunks still s…
sync_startReconcile the index with the document roots (or one path inside them). Returns a jobId immediately; poll sync_status until state is 'succeeded' or 'failed'. New and changed files are ingested, byte-identical files skipped, vanished files removed from the index. A file moved to another folder under the same name and with the same bytes keeps its chunks under the new path instead of being read again. Only the latest sync job is retained — starting a new one, or a server restart, discards the previous job's record. Only one sync runs against an index at a time. If one is already in progress — i…
sync_statusPoll a sync job started by sync_start. Returns state ('pending' | 'running' | 'succeeded' | 'failed'), counts (scanned/ingested/skipped/moved/deleted/relabelled/signed/ ignored/unreadable/failed), and any per-file errors. Only the latest job is retained — an old jobId, or any jobId from before a server restart, raises an error. relabelled counts documents whose labels were rewritten from their stored text, with nothing re-embedded: classify.toml changed, a move put a file under other path rules, or the model answered after a model problem had left a facet unanswered. It stays 0 without a cla…
Compare and alternatives
Featured in
Signals
- Stars
- 58
- Forks
- 2
- Open issues
- 0
- Contributors
- 1
- Weekly downloads
- 411
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
- Last package publish
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.sfrangulov/minirag-mcp- Version
- 1.0.0
- Auth
- No auth
- Packages
- pypi minirag-mcp
- License
- MIT
- Repository
- github.com/sfrangulov/minirag-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Minirag MCP. Agent Mart. https://agentmart.dev/connectors/sfrangulov-minirag-mcp (last updated 2026-10-24)