How tabula8rasa/obsidian_mcp_rag_server works
This repository provides semantic search over an Obsidian Vault: committed Markdown is loaded, chunked, embedded, and indexed in Qdrant; queries reach the RAG API directly or through an MCP tool and return ranked note fragments. Git-aware sync and full reindex are separate indexing modes. The graph also shows API startup, state, and documented optional monitoring. Source excerpts establish the principal API and MCP calls; unsampled indexing, storage, and monitoring wiring is limited to README-supported relationships.
Main entry points: routes.py RAG endpoints · vault_sync.py Git-aware sync · qdrant_store.py Vector store access · vault_loader.py Vault loader
Components 24
Vault indexing
- Git-aware sync
rag-api/app/services/vault_sync.py - Vault loader
rag-api/app/services/vault_loader.py - Markdown chunker
rag-api/app/services/markdown_chunker.py - Path filtering
rag-api/app/core/indexing.py - Note chunk
rag-api/app/domain/chunk.py - Embedding model
rag-api/app/infrastructure/embedding_model.py
Search API
- RAG endpoints
rag-api/app/api/routes.py - API startup
rag-api/app/main.py - Search schemas
rag-api/app/api/schemas.py
MCP access
- MCP process
mcp-server/app/main.py - MCP composition
mcp-server/app/server.py - search_vault tool
mcp-server/app/tools/vault_search.py - RAG API client
mcp-server/app/clients/rag_api.py
Index state
- Vector store access
rag-api/app/infrastructure/qdrant_store.py - Qdrant
- Commit state
rag-api/app/services/vault_sync.py
Monitoring
- Prometheus
observability/prometheus/prometheus.yml - Grafana dashboards
observability/grafana/dashboards - Alloy collector
observability/alloy/config.alloy - Loki
observability/loki/loki-config.yml
Other components
- Obsidian Vault
- Vault Git
- API caller
- MCP client
Connections 27
- API caller → RAG endpoints: calls
- RAG endpoints → Search schemas: validates
- RAG endpoints → Git-aware sync: runs sync
- RAG endpoints → Vector store access: searches
- API startup → Embedding model: loads model
- API startup → Vector store access: ensures collection
- Git-aware sync → Vault Git: reads commits
- Git-aware sync → Path filtering: filters paths
- Git-aware sync → Vault loader: loads notes
- Vault loader → Obsidian Vault: reads Markdown
- Vault loader → Markdown chunker: chunks notes
- Vault loader → Note chunk: creates chunks
- Git-aware sync → Vector store access: updates index
- Git-aware sync → Commit state: records commit
- Vector store access → Embedding model: embeds text
- Vector store access → Qdrant: reads and writes
- MCP client → MCP process: connects
- MCP process → MCP composition: creates
- MCP composition → search_vault tool: registers tool
- search_vault tool → RAG API client: delegates search
- RAG API client → RAG endpoints: POSTs search
- RAG endpoints → API caller: returns results
- search_vault tool → MCP client: returns fragments
- RAG endpoints → Prometheus: exposes metrics
- MCP composition → Prometheus: exposes metrics
- Prometheus → Grafana dashboards: feeds dashboards
- Alloy collector → Loki: ships logs