by dmayboroda
Provides on‑premises conversational retrieval‑augmented generation (RAG) with configurable Docker containers, supporting fully local execution, ChatGPT‑based custom GPTs, and Anthropic Claude integration.
Minima enables you to index local documents and query them through LLMs that run either locally (via Ollama) or as remote services (ChatGPT, Claude). It packages the entire RAG pipeline – document ingestion, embedding, vector storage, reranking, and LLM inference – inside Docker Compose setups, keeping data on your own machine or private cloud.
env.sample
to .env
.LOCAL_FILES_PATH
, EMBEDDING_MODEL_ID
, EMBEDDING_SIZE
, OLLAMA_MODEL
, RERANKER_MODEL
, optionally USER_ID
and PASSWORD
for ChatGPT).docker-compose-ollama.yml
for fully local deployment.docker-compose-chatgpt.yml
for ChatGPT‑enabled custom GPTs.docker-compose-mcp.yml
for MCP integration with Anthropic Claude.docker compose -f <file> --env-file .env up --build
.claude_desktop_config.json
as shown in the README.electron
folder, run npm install
and npm start
.http://localhost:3000
.Q: Do I need an internet connection? A: Only if you use remote LLM services (ChatGPT or Claude). The isolated mode runs entirely offline.
Q: Which embedding models are supported?
A: Any Sentence‑Transformer model; the README uses sentence-transformers/all-mpnet-base-v2
as an example.
Q: How do I choose an Ollama model?
A: Use any LLM listed on the Ollama model catalog (e.g., qwen2:0.5b
). Ensure it is an LLM, not an embedding model.
Q: Can I run Minima on Windows?
A: Yes, as long as Docker Desktop and the required Python >= 3.10 with uv
are installed.
Q: How is authentication handled for custom GPTs?
A: Provide USER_ID
(your email) and PASSWORD
in .env
; these create a temporary Firebase account for ChatGPT integration.
Minima is an open source RAG on-premises containers, with ability to integrate with ChatGPT and MCP. Minima can also be used as a fully local RAG.
Minima currently supports three modes:
Isolated installation – Operate fully on-premises with containers, free from external dependencies such as ChatGPT or Claude. All neural networks (LLM, reranker, embedding) run on your cloud or PC, ensuring your data remains secure.
Custom GPT – Query your local documents using ChatGPT app or web with custom GPTs. The indexer running on your cloud or local PC, while the primary LLM remains ChatGPT.
Anthropic Claude – Use Anthropic Claude app to query your local documents. The indexer operates on your local PC, while Anthropic Claude serves as the primary LLM.
Create a .env file in the project’s root directory (where you’ll find env.sample). Place .env in the same folder and copy all environment variables from env.sample to .env.
Ensure your .env file includes the following variables:
For fully local installation use: docker compose -f docker-compose-ollama.yml --env-file .env up --build.
For ChatGPT enabled installation use: docker compose -f docker-compose-chatgpt.yml --env-file .env up --build.
For MCP integration (Anthropic Desktop app usage): docker compose -f docker-compose-mcp.yml --env-file .env up --build.
In case of ChatGPT enabled installation copy OTP from terminal where you launched docker and use Minima GPT
If you use Anthropic Claude, just add folliwing to /Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"minima": {
"command": "uv",
"args": [
"--directory",
"/path_to_cloned_minima_project/mcp-server",
"run",
"minima"
]
}
}
}
To use fully local installation go to cd electron
, then run npm install
and npm start
which will launch Minima electron app.
Ask anything, and you'll get answers based on local files in {LOCAL_FILES_PATH} folder.
LOCAL_FILES_PATH: Specify the root folder for indexing (on your cloud or local pc). Indexing is a recursive process, meaning all documents within subfolders of this root folder will also be indexed. Supported file types: .pdf, .xls, .docx, .txt, .md, .csv.
EMBEDDING_MODEL_ID: Specify the embedding model to use. Currently, only Sentence Transformer models are supported. Testing has been done with sentence-transformers/all-mpnet-base-v2, but other Sentence Transformer models can be used.
EMBEDDING_SIZE: Define the embedding dimension provided by the model, which is needed to configure Qdrant vector storage. Ensure this value matches the actual embedding size of the specified EMBEDDING_MODEL_ID.
OLLAMA_MODEL: Set up the Ollama model, use an ID available on the Ollama site. Please, use LLM model here, not an embedding.
RERANKER_MODEL: Specify the reranker model. Currently, we have tested with BAAI rerankers. You can explore all available rerankers using this link.
USER_ID: Just use your email here, this is needed to authenticate custom GPT to search in your data.
PASSWORD: Put any password here, this is used to create a firebase account for the email specified above.
Example of .env file for on-premises/local usage:
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
OLLAMA_MODEL=qwen2:0.5b # must be LLM model id from Ollama models page
RERANKER_MODEL=BAAI/bge-reranker-base # please, choose any BAAI reranker model
To use a chat ui, please navigate to http://localhost:3000
Example of .env file for Claude app:
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
For the Claude app, please apply the changes to the claude_desktop_config.json file as outlined above.
To use MCP with GitHub Copilot:
Create a .env file in the project’s root directory (where you’ll find env.sample). Place .env in the same folder and copy all environment variables from env.sample to .env.
Ensure your .env file includes the following variables:
Create or update the .vscode/mcp.json
with the following configuration:
{
"servers": {
"minima": {
"type": "stdio",
"command": "path_to_cloned_minima_project/run_in_copilot.sh",
"args": [
"path_to_cloned_minima_project"
]
}
}
}
Example of .env file for ChatGPT custom GPT usage:
LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
USER_ID=user@gmail.com # your real email
PASSWORD=password # you can create here password that you want
Also, you can run minima using run.sh.
To install Minima for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install minima --client claude
For MCP usage, please be sure that your local machines python is >=3.10 and 'uv' installed.
Minima (https://github.com/dmayboroda/minima) is licensed under the Mozilla Public License v2.0 (MPLv2).
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by modelcontextprotocol
A basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.
by topoteretes
Provides dynamic memory for AI agents through modular ECL (Extract, Cognify, Load) pipelines, enabling seamless integration with graph and vector stores using minimal code.
by basicmachines-co
Enables persistent, local‑first knowledge management by allowing LLMs to read and write Markdown files during natural conversations, building a traversable knowledge graph that stays under the user’s control.
by smithery-ai
Provides read and search capabilities for Markdown notes in an Obsidian vault for Claude Desktop and other MCP clients.
by chatmcp
Summarize chat messages by querying a local chat database and returning concise overviews.
by GreatScottyMac
Provides a project‑specific memory bank that stores decisions, progress, architecture, and custom data, exposing a structured knowledge graph via MCP for AI assistants and IDE tools.
by andrea9293
Provides document management and AI-powered semantic search for storing, retrieving, and querying text, markdown, and PDF files locally without external databases.
by scorzeth
Provides a local MCP server that interfaces with a running Anki instance to retrieve, create, and update flashcards through standard MCP calls.
by sirmews
Read and write records in a Pinecone vector index via Model Context Protocol, enabling semantic search and document management for Claude Desktop.