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.
Features
🔍 Semantic search across your Obsidian vaults using vector embeddings
📅 Temporal search to find notes by modification date with optional semantic filtering
📁 Support for multiple vault configurations
🔄 Real-time monitoring with automatic re-indexing after file change
🔁 Manual re-indexing on demand via the
reindex_vaults
tool🚀 Fast, incremental updates with ChromaDB backend
🔒 Thread-safe operations for concurrent access
🔧 Works as both MCP server and CLI tool
Prerequisites
Python 3.10 or higher
uv package manager
Installation
Install uv (if not already installed)
Install mcp-obsidian
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_notes
: Search across all configured vaults with semantic matchingsearch_vault
: Search within a specific vault
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):
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
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables semantic search across Obsidian vaults using vector embeddings and ChromaDB. Supports multiple vaults with real-time indexing and provides both MCP server and CLI interfaces for natural language querying of notes.