The default path runs entirely locally — a Hugging Face embedding model, an index on disk, no API key — which is the whole reason to pick this over a hosted retrieval service for personal or sensitive material. If you would rather trade privacy for quality, one environment variable points it at an OpenAI-compatible endpoint instead. Index before you connect: the server queries an index, it does not build one on the fly.
A local MCP server implementing retrieval-augmented generation over a directory you index yourself, using sentence window retrieval so answers come back with usable surrounding context.
- Indexing across txt, md, pdf, doc and docx
- Sentence window retrieval, which returns the neighbouring text around a hit rather than an isolated chunk
- A choice of embeddings: a local Hugging Face model by default (BAAI/bge-large-en-v1.5), or any OpenAI-compatible endpoint
- An indexer you drive from the command line, with `--chunk-size` and `--embed-model` to tune it
- Two transports: stdio for a client-launched server, or SSE listening on http://localhost:8001/ragnar
- A description you set yourself, which is what the client shows when it lists this server's purpose
Python 3.10+ and the uv package manager. Index first with `python -m indexer.index /path/to/documents /path/to/index`. For MCP querying, `INDEX_ROOT` and `MCP_DESCRIPTION` are both mandatory; `EMBED_ENDPOINT` and `EMBED_MODEL` are optional and default to the local model. Licensed GPLv3.
