Obsidian MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Obsidian MCP Server search for recent notes about AI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
obsidian-mcp
MCP server for Obsidian vaults with hybrid semantic search.
Features
Hybrid search: BM25 + Voyage AI embeddings + Cohere reranking
Backlinks: Pre-computed wikilink graph
Similar notes: Discover hidden connections
Full CRUD: Create, read, update, delete, move notes
Live indexing: Index notes directly from Claude Code without restart
Related MCP server: Obsidian MCP Server
Installation
cd obsidian-mcp
uv syncConfiguration
Copy
.env.exampleto.envand add your API keys:
VOYAGE_API_KEY=your_key
COHERE_API_KEY=your_key # optionalSet your vault path in
config/settings.yaml:
vault:
path: "D:\\path\\to\\your\\vault"Usage
Recommended Workflow (via MCP)
The recommended workflow is to use the MCP tools directly from Claude Code:
1. write -> Create or modify a note (auto-indexes by default)
2. search -> Note is instantly searchableNotes are automatically indexed after write, so manual indexing is only needed for:
Notes created manually in Obsidian (use
indextool)Bulk imports (use
indexwithfull=True)
Interactive Menu
python obsidian-menu.pyCLI
# Full indexation
python obsidian-cli.py --vault "/path/to/vault" index --full
# Incremental indexation
python obsidian-cli.py --vault "/path/to/vault" index
# Status
python obsidian-cli.py --vault "/path/to/vault" status
# Search
python obsidian-cli.py --vault "/path/to/vault" search "query"Note: CLI indexation requires a Claude Code restart for changes to be visible in MCP searches due to ChromaDB caching. Use the
indexMCP tool instead for live updates.
Claude Code Configuration
Option 1: HTTP/SSE Server (Recommended)
Run as a shared HTTP server to avoid duplicating processes across Claude sessions.
1. Start the HTTP server:
uv run python -m src.server_http
# Server runs on http://127.0.0.1:8322/mcp2. Configure Claude Code (~/.claude.json):
{
"mcpServers": {
"obsidian": {
"type": "sse",
"url": "http://127.0.0.1:8322/mcp"
}
}
}3. (Optional) Run as systemd service (Linux):
# Create ~/.config/systemd/user/obsidian-mcp.service
[Unit]
Description=Obsidian MCP HTTP Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/path/to/obsidian-mcp
Environment="VOYAGE_API_KEY=your_key"
Environment="COHERE_API_KEY=your_key"
Environment="OBSIDIAN_VAULT=/path/to/vault"
ExecStart=/path/to/uv run python -m src.server_http
Restart=on-failure
[Install]
WantedBy=default.target
# Enable and start
systemctl --user daemon-reload
systemctl --user enable --now obsidian-mcpOption 2: Stdio (per-session)
Add to ~/.claude.json:
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": ["--directory", "/path/to/obsidian-mcp", "run", "python", "-m", "src.server"],
"env": {
"VOYAGE_API_KEY": "your_key",
"COHERE_API_KEY": "your_key",
"OBSIDIAN_VAULT": "/path/to/vault"
}
}
}
}MCP Tools
Tool | Description |
| Hybrid semantic search (BM25 + embeddings + reranking) |
| Read note with metadata and frontmatter |
| Create or update note (auto-indexes by default) |
| Delete note |
| Move or rename note |
| List notes with folder/tag filters |
| Find notes linking to a note |
| Find semantically similar notes |
| Index new/modified notes (live, no restart) |
| Rebuild BM25 index from ChromaDB |
| Reset all caches and connections |
Auto-Indexing (Write Tool)
By default, write automatically indexes the note after creating or modifying it:
# Auto-indexes after writing (default)
write(path="Notes/my_note.md", content="...")
# Disable auto-indexing if needed
write(path="Notes/my_note.md", content="...", auto_index=False)This makes new notes instantly searchable without manual indexing.
Index Tool
The index tool indexes notes directly within the MCP server process, avoiding ChromaDB cache synchronization issues:
# Incremental indexation (default)
index() # Only indexes new/modified notes
# Full reindexation
index(full=True) # Reindexes all notesWhy use index instead of CLI?
ChromaDB maintains an HNSW index cache per process. When you index via CLI (separate process), the MCP server doesn't see the changes until restart. The index tool solves this by:
Running indexation in the same process as the MCP server
Resetting internal caches after indexation
Making new notes immediately searchable
Project Structure
obsidian-mcp/
src/
server.py # MCP server (11 tools)
indexer.py # Indexation engine
retriever.py # Hybrid search (BM25 + semantic + RRF)
note_parser.py # Obsidian markdown parser
wikilink_graph.py # Backlink graph
config/
settings.yaml # Configuration
chroma_db/ # Vector database (ChromaDB)
obsidian-cli.py # CLI interface
obsidian-menu.py # Interactive menuTechnical Details
Hybrid Search Pipeline
BM25: Lexical search for exact term matching
Semantic: Voyage AI embeddings (
voyage-3) for meaningFusion: Reciprocal Rank Fusion (RRF) combines results
Reranking: Cohere reranker (
rerank-v4.0-pro) for final ordering
Embedding Model
Model:
voyage-3Dimensions: 1024
Provider: Voyage AI
Database
ChromaDB with persistent storage
SQLite backend with WAL mode
HNSW index for fast similarity search
License
MIT
Available Tools
12 toolsbacklinksA
Trouve les notes qui pointent vers cette note.
Args: path: Chemin ou titre de la note
Returns: Liste des notes avec backlinks
Inputs: path (required). Returns: result
clearA
Vide completement la base ChromaDB et le graphe.
Utile pour nettoyer les documents orphelins ou repartir de zero. Appeler index(full=True) apres pour reinitialiser.
Returns: Confirmation du nettoyage
Inputs: no named parameters. Returns: result
deleteB
Supprime une note.
Args: path: Chemin de la note (relatif au vault)
Returns: Confirmation ou erreur
Inputs: path (required). Returns: result
indexA
Indexe les nouvelles notes directement depuis le serveur MCP.
Cette methode est preferee au CLI car elle indexe dans le meme processus, evitant les problemes de cache ChromaDB entre processus.
Args: full: Si True, reindexe tout le vault. Sinon, indexation incrementale.
Returns: Statistiques d'indexation
Inputs: full. Returns: result
listA
Liste les notes du vault.
Args: folder: Filtrer par dossier. Utiliser "/" pour les notes a la racine seulement. tags: Filtrer par tags, separes par virgules (optionnel) limit: Nombre max de resultats (defaut: 50)
Returns: Liste des notes avec titre et tags
Inputs: tags, limit, folder. Returns: result
moveA
Deplace ou renomme une note.
Args: old_path: Chemin actuel de la note new_path: Nouveau chemin
Returns: Confirmation ou erreur
Inputs: new_path (required), old_path (required). Returns: result
readA
Lit une note avec ses metadonnees.
Args: path: Chemin de la note (relatif au vault ou absolu)
Returns: Contenu de la note avec frontmatter, tags et liens
Inputs: path (required). Returns: result
refreshA
Rafraichit l'index BM25 apres indexation de nouvelles notes.
Appeler apres avoir indexe de nouvelles notes via le menu CLI pour que la recherche hybride les trouve immediatement.
Returns: Confirmation avec nombre de notes indexees
Inputs: no named parameters. Returns: result
reloadA
Recharge completement tous les caches et connexions.
Reinitialise ChromaDB, les embeddings, le retriever et le graphe. NOTE: Preferer l'outil 'index' pour indexer de nouvelles notes, car il evite les problemes de cache inter-processus.
Returns: Confirmation du rechargement
Inputs: no named parameters. Returns: result
searchA
Recherche semantique hybride dans le vault Obsidian.
Args: query: Requete de recherche top_k: Nombre de resultats (defaut: 10) folder: Filtrer par dossier (optionnel) tags: Filtrer par tags, separes par virgules (optionnel)
Returns: Notes pertinentes avec titre, extrait et score
Inputs: query (required), tags, top_k, folder. Returns: result
similarB
Trouve les notes semantiquement similaires.
Args: path: Chemin de la note source top_k: Nombre de resultats (defaut: 5)
Returns: Notes similaires avec score
Inputs: path (required), top_k. Returns: result
writeB
Cree ou modifie une note.
Args: path: Chemin de la note (relatif au vault) content: Contenu a ecrire mode: "create" (nouvelle note), "replace" (remplacer), "append" (ajouter) auto_index: Indexer automatiquement apres ecriture (defaut: True)
Returns: Confirmation ou erreur
Inputs: path (required), content (required), mode, auto_index. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools target distinct operations (CRUD, search, analysis, maintenance), but the maintenance tools (refresh, index, reload, clear) overlap in purpose and could confuse agents choosing between them.
Tool names are all single lowercase words, giving a clean surface, but backlinks and similar are nouns/adjectives while others are verbs, a minor inconsistency in part of speech.
12 tools is well-scoped for an Obsidian vault server, covering note operations, search, and indexing without being overwhelming.
The set covers full note lifecycle (create, read, update, delete, move) plus search, linking, semantic similarity, and index maintenance, with no obvious gaps.
Maintenance
Related MCP Connectors
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search your knowledge bases from any AI assistant using hybrid RAG.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to read, write, search, and navigate Obsidian vault notes with support for CRUD operations, full-text search, graph navigation, daily notes, and frontmatter management.3,512 npm-
- AlicenseBqualityDmaintenanceEnables AI assistants to search, create, and manage notes in an Obsidian vault via 40+ local tools.5221 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage and search Obsidian notes, folders, metadata, and links directly.-
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to search, read, create, update, and delete notes in a local Obsidian vault through hybrid semantic and lexical retrieval, with all embedding and vector storage running locally.1MIT