Vault Rag
БесплатноНе проверенMCP server for semantic search in an Obsidian Second Brain vault using self-hosted Qdrant and Google Gemini embeddings.
Описание
MCP server for semantic search in an Obsidian Second Brain vault using self-hosted Qdrant and Google Gemini embeddings.
README
MCP server for semantic search in an Obsidian Second Brain vault, using a self-hosted Qdrant vector store and Google Gemini embeddings.
Architecture
Claude Code <-> vault-rag MCP server (stdio)
|-> Google Gemini gemini-embedding-001 (native 3072d)
|-> Qdrant `vault_chunks` collection (3072d, Cosine distance)
Part of a hybrid RAG architecture:
- Indexation: n8n (remote) + Google Gemini API
- Local queries: This MCP server + Google Gemini API
- Web chat: n8n Vault Chat (AI Agent + Gemini native) or Chat Hub (HTTP pipeline)
- Bulk index: Script using Gemini
gemini-embedding-001
Same model (gemini-embedding-001, native 3072d) everywhere ensures vector compatibility.
Vectors are stored at native 3072 dimensions (float32) with Cosine distance.
Asymmetric task types: RETRIEVAL_DOCUMENT for indexing, RETRIEVAL_QUERY for search.
Tools
| Tool | Description |
|---|---|
search_vault |
Semantic search across the entire vault (query, limit, para_folder, note_type) |
search_glossary |
Search within glossary definitions (3_Resources/definitions/) |
get_note |
Retrieve full content of a note by file path |
Prerequisites
- Python >= 3.11
- uv package manager
- Google API key (for Gemini embeddings)
- Qdrant instance with a
vault_chunkscollection (created automatically on first index)
Setup
# Clone and install
cd ~/Projects/vault-rag-mcp
uv sync
# Configure environment
cp .env.example .env
# Edit .env with your Google API key and Qdrant credentials
Environment variables
| Variable | Description | Default |
|---|---|---|
QDRANT_URL |
Qdrant instance URL (HTTPS requires the :443 port; appended automatically if missing) |
(required) |
QDRANT_API_KEY |
Qdrant API key | (required) |
GOOGLE_API_KEY |
Google AI API key | (required) |
EMBEDDING_MODEL |
Gemini embedding model | gemini-embedding-001 |
Usage
As MCP server (Claude Code)
Add to your project's .mcp.json:
{
"mcpServers": {
"vault-rag": {
"command": "uv",
"args": ["run", "--directory", "/path/to/vault-rag-mcp", "vault-rag-mcp"],
"env": {
"QDRANT_URL": "https://your-qdrant-instance.example.com",
"QDRANT_API_KEY": "your-qdrant-api-key",
"GOOGLE_API_KEY": "your-google-api-key",
"EMBEDDING_MODEL": "gemini-embedding-001"
}
}
}
}
Restart Claude Code to activate. Then use the tools directly in conversation.
Bulk indexation
Script to index an entire Obsidian vault via Google Gemini:
uv run python scripts/bulk_index.py /path/to/vault [--force]
Options:
--force: Re-index all files, ignoring file_hash cache
The script:
- Walks the vault, skips
.obsidian/,templates/,.trash/, files > 500 KB - Parses YAML frontmatter (type, tags, PARA folder)
- Chunks by H2 sections, splits oversized chunks (> 2000 chars)
- Embeds via Google Gemini in batches of 50 (task_type=RETRIEVAL_DOCUMENT)
- Upserts to Qdrant with a SHA256 file_hash payload for incremental re-runs
After initial bulk indexation, incremental updates are handled by n8n via Gemini API.
Project structure
vault-rag-mcp/
├── pyproject.toml # uv + hatch build config
├── .env.example # Environment template
├── src/
│ └── vault_rag_mcp/
│ ├── __init__.py
│ ├── server.py # MCP server (FastMCP, stdio) — 3 tools
│ ├── embeddings.py # Google Gemini embedding client (native 3072d)
│ └── qdrant_store.py # Qdrant client + collection operations
├── scripts/
│ └── bulk_index.py # Bulk indexation via Google Gemini
└── n8n-workflows/ # n8n workflow definitions
├── vault-rag-github-indexation.json
└── vault-rag-chat-hub.json
Qdrant collection
Collection vault_chunks — vectors at 3072 dimensions, Cosine distance. Each point carries:
content— chunk textfile_path— relative path from vault rootchunk_index— position within filepara_folder— PARA folder (1_Projects, 2_Areas, etc.)note_type— frontmatter type (memo, glossary, howto, etc.)file_hash— SHA256 for change detectionmetadata— tags, type, para_folder
Point IDs are deterministic UUID5 values derived from file_path::chunk_index.
Payload indexes: file_path (keyword), para_folder (keyword), note_type (keyword), chunk_index (integer).
Tech stack
- MCP SDK:
mcp[cli]withFastMCP(stdio transport) - Embeddings: Google Gemini
gemini-embedding-001via thegoogle-genaiSDK (native 3072d, multilingual, 2048 token/text) - Vector DB: Qdrant (self-hosted) —
vault_chunkscollection, 3072d Cosine distance - Build: uv + hatch
Установка Vault Rag
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/fjacquet/vault-rag-mcpFAQ
Vault Rag MCP бесплатный?
Да, Vault Rag MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Vault Rag?
Нет, Vault Rag работает без API-ключей и переменных окружения.
Vault Rag — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Vault Rag в Claude Desktop, Claude Code или Cursor?
Открой Vault Rag на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzCompare Vault Rag with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
