RAG Obsidian MCP Server
by lion9
README.md
# RAG Obsidian MCP Server
Semantic search over your Obsidian vault via an MCP server. Uses ChromaDB for vector storage and `all-MiniLM-L6-v2` for embeddings.
## Prerequisites
- Python 3.13+
- [uv](https://github.com/astral-sh/uv) (recommended) or pip
## Setup
```bash
uv sync
```
Edit `config.yaml` to point to your vault:
```yaml
vault_path: "/path/to/your/Obsidian/vault"
chroma_db_path: "./data/chroma_db"
embedding_model: "all-MiniLM-L6-v2"
collection_name: "obsidian_vault"
chunk_size: 1000
chunk_overlap: 100
top_k_default: 5
```
## Indexing
### Initial index (first run)
```bash
uv run python index.py
```
This walks all `.md` files in the vault, embeds them in chunks, and stores them in ChromaDB.
### Incremental index (after adding or editing notes)
Run the same command — it skips files whose modification time hasn't changed:
```bash
uv run python index.py
```
Only new or modified notes are re-indexed. Deleted notes are removed from the database automatically.
### Force full re-index
To re-embed everything from scratch (e.g. after changing `chunk_size` or `embedding_model`):
```bash
uv run python index.py --force
```
### Override vault path
```bash
uv run python index.py --vault "/path/to/other/vault"
```
## Starting the MCP Server
Run the server in stdio mode (the transport Claude Code and other MCP clients expect):
```bash
uv run python server.py
```
### Registering with Claude Code
Add the server to your Claude Code MCP config (`.claude/settings.json` or global settings):
```json
{
"mcpServers": {
"obsidian-vault": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/RAG_Obsidian"
}
}
}
```
## Available MCP Tools
| Tool | Description |
|------|-------------|
| `search_notes` | Semantic search across indexed notes. Returns top-k chunks with relevance scores and `obsidian://` deep links. |
| `read_note` | Read the full content of a note by its relative path (e.g. `Projects/MyProject.md`). |
| `list_notes` | List all notes in the vault or a subfolder. |
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues