alexhholmes/mcp-obsidian
If you are the rightful owner of mcp-obsidian and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
An MCP server for semantic search in Obsidian vaults using embedded ChromaDB vector storage.
mcp-obsidian
An MCP (Model Context Protocol) server for semantic search in Obsidian vaults using embedded ChromaDB vector storage. I intend on keeping this fairly minimal to keep usage with Claude simple.
Features
- 🔍 Search with semantic, exact phrase, and temporal filtering
- 📝 Google-style quotes for exact phrase matching (
"exact phrase"and-"exclude") - 📅 Date filtering to find notes by modification time
- 📁 Support for multiple vault configurations
- 🔄 Real-time monitoring with automatic re-indexing
- 🚀 Fast, incremental updates with ChromaDB backend
- 🔒 Thread-safe operations for concurrent access
Prerequisites
- Python 3.10 or higher
- uv package manager
Installation
Install uv (if not already installed)
pip install uv
Install mcp-obsidian
Option 1: Install as a uv tool (Recommended)
uv tool install "git+https://github.com/alexhholmes/mcp-obsidian.git"
mcp-obsidian configure # Configure your vaults
Option 2: Install from source
- Clone the repository:
git clone https://github.com/yourusername/mcp-obsidian.git
cd mcp-obsidian
- Create and activate a virtual environment with uv:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install the package in development mode:
uv pip install -e .
This will install all dependencies including:
- questionary (interactive CLI)
- chromadb (vector database)
- langchain-text-splitters (document chunking)
- fastmcp (MCP server framework)
- watchdog (file system monitoring)
Configuration
Initial Setup
Configure your Obsidian vaults:
mcp-obsidian configure
This interactive command will:
- Prompt you to select vault directories
- Name each vault for easy reference
- Store configuration in
~/.mcp-obsidian/config.json
Manual Configuration
You can also manually edit ~/.mcp-obsidian/config.json:
{
"vaults": [
{
"name": "Personal Notes",
"path": "/path/to/your/obsidian/vault"
},
{
"name": "Work Docs",
"path": "/path/to/another/vault"
}
]
}
Usage
As an MCP Server
Run the server for use with MCP-compatible clients:
mcp-obsidian
The server exposes the following tools:
search: Unified search with semantic, exact phrase, and temporal filteringreindex_vaults: Manually trigger a re-index of all configured vaults
The vectors are stored along with the following metadata, which can be used for filtering searches:
vault: The name of the vault containing the documenttitle: The filename without extensionsource: The relative path from the vault rootmodified: Unix timestamp of the file's last modification timefile_path: The absolute path to the source filestart_line/end_line: Line numbers for the chunk within the original documentchunk_index/total_chunks: Position of this chunk within the documentfile_hash: MD5 hash of the file content for change detection
CLI Usage
Search directly from the command line:
# Search all vaults
mcp-obsidian search "your search query"
# Search a specific vault
mcp-obsidian search "your search query" --vault "Personal Notes"
# Reconfigure vaults
mcp-obsidian configure
# Rebuild search index
mcp-obsidian index
Integration with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"obsidian": {
"command": "mcp-obsidian"
}
}
}
or alternatively use to configuration tool to set it up automatically:
mcp-obsidian configure
How It Works
- Indexing: The server reads all markdown files from configured vaults and creates vector embeddings using ChromaDB
- Chunking: Large documents are split into smaller chunks using recursive character splitting for better search granularity
- Search: Queries are converted to embeddings and matched against the document database using cosine similarity
- File Watching: The server monitors vault directories for changes and automatically updates the index
License
MIT License