Labsco
MCP SERVER

Index a folder of your own documents into containers you run, then query them from Claude, ChatGPT or a fully local model — nothing leaves the machine unless you choose a cloud LLM.

Vector Stores & RAG Retrieval
Summary
Your documents stay on your hardware; only the question travels.

The four modes are really one decision — how far your data is allowed to go. Fully local keeps the embeddings, the reranker and the model on your machine; the ChatGPT and Claude modes keep the index local and let the answering model be remote.

What it is

An on-premises retrieval-augmented generation stack shipped as containers. An indexer walks a directory you nominate, embeddings go into a local Qdrant, and one of four modes decides where the answering model lives.

What you get
  • Four modes: fully local with Ollama, a custom OpenAI-compatible LLM endpoint you already run, ChatGPT through a custom GPT, or Claude through MCP
  • Recursive indexing of a root folder, covering `.pdf`, `.xls`, `.docx`, `.txt`, `.md` and `.csv`
  • A local chat UI on http://localhost:3000, plus an Electron desktop app
  • Choice of embedding model — any Sentence Transformer — with the vector size set to match, and a reranker for the Ollama path
  • A custom-LLM path that skips Ollama and the reranker entirely, so the container build does not download the reranker model and the resource footprint drops
Requirements

Docker Compose, plus Python 3.10 or newer and `uv` on the host for the MCP path. Copy `.env.sample` to `.env` and set at minimum `LOCAL_FILES_PATH` — the root folder to index — along with `EMBEDDING_MODEL_ID` and `EMBEDDING_SIZE`, which must match the model's actual embedding dimension. The Ollama path adds `OLLAMA_MODEL` and `RERANKER_MODEL`; the custom-LLM path adds `LLM_BASE_URL` and `LLM_MODEL`, with `LLM_API_KEY` optional. Start it with `docker compose -f docker-compose-mcp.yml --env-file .env up --build`, then point Claude Desktop at `uv --directory /path/to/minima/mcp-server run minima`. The ChatGPT path additionally needs `USER_ID` and `PASSWORD`, used to create the account that authorizes the custom GPT.

Setup effort

One command — docker compose -f docker-compose-mcp.yml --env-file .env up --build