Local-first RAG with semantic and keyword search over code and documents such as PDF, DOCX, TXT and Markdown, no external services.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add local-rag --env BASE_DIR='<BASE_DIR>' --env CACHE_DIR='<CACHE_DIR>' --env DB_PATH='<DB_PATH>' -- npx -y mcp-local-rag~/.codex/config.toml
[mcp_servers.local-rag]
command = "npx"
args = ["-y", "mcp-local-rag"]
env = { BASE_DIR = "<BASE_DIR>", CACHE_DIR = "<CACHE_DIR>", DB_PATH = "<DB_PATH>" }
# codex mcp add local-rag --env BASE_DIR='<BASE_DIR>' --env CACHE_DIR='<CACHE_DIR>' --env DB_PATH='<DB_PATH>' -- npx -y mcp-local-rag~/.cursor/mcp.json
{
"mcpServers": {
"local-rag": {
"command": "npx",
"args": [
"-y",
"mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"DB_PATH": "<DB_PATH>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"local-rag": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"DB_PATH": "<DB_PATH>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"local-rag": {
"command": "npx",
"args": [
"-y",
"mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"DB_PATH": "<DB_PATH>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"local-rag": {
"command": "npx",
"args": [
"-y",
"mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"DB_PATH": "<DB_PATH>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"local-rag": {
"command": "npx",
"args": [
"-y",
"mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"DB_PATH": "<DB_PATH>"
}
}
}
}Environment variables
BASE_DIRCACHE_DIRDB_PATH
Replace the placeholders with your own credentials and keep them out of version control.