Skip to content
Agentmart
Submit a tool

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

IndexedMITLocal (stdio)★ 58
Write a review

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.

We use your email only for this newsletter. Privacy

About

Local-first RAG MCP server: hybrid search over a folder of your own documents

Use cases: knowledge-base, document-processing

No 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_mentions
  • ingest_url
  • list_files
  • query_documents
  • read_chunk_neighbors
  • read_file
  • status

Write 4 · Create, change, send or run things.

  • ingest_data
  • ingest_file
  • sync_start
  • sync_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_URLS
  • BASE_DIR
  • BASE_DIRS
  • CACHE_DIR
  • DB_PATH
  • MAX_FILE_SIZE
  • MODEL_NAME
  • RAG_GROUPING
  • RAG_HYBRID_WEIGHT
  • RAG_INSTRUCTIONS_APPEND
  • RAG_MAX_DISTANCE
  • RAG_MAX_FILES

Network hosts it talks to 3

  • 169.254.169.254 · found in code
  • github.com · found in code
  • glama.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_file

    Delete 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_mentions

    List 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_data

    Ingest 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_file

    Ingest 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_url

    Fetch 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_files

    List 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_documents

    Hybrid 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_neighbors

    Read 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_file

    Read 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.

  • status

    Report 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_start

    Reconcile 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_status

    Poll 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
    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)