Provides semantic search capabilities across Obsidian vaults using vector embeddings, with support for multiple vault configurations, real-time file watching, and automatic index updates
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)
Install mcp-obsidian
Option 1: Install as a uv tool (Recommended)
Option 2: Install from source
Clone the repository:
Create and activate a virtual environment with uv:
Install the package in development mode:
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:
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:
Usage
As an MCP Server
Run the server for use with MCP-compatible clients:
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:
Integration with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
or alternatively use to configuration tool to set it up automatically:
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
This server cannot be installed