Semantic search for Obsidian vaults via MCP
SaferSkills independently audited obsidian-rag-mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Your notes, searchable by meaning.
An MCP server that gives Claude Code semantic search over your Obsidian vault. Ask questions in natural language, get answers from your own documents.
You have 500 notes in Obsidian. You know you wrote something about database timeouts causing customer issues... somewhere. Ctrl+F won't help when you don't remember the exact words.
This server indexes your vault with vector embeddings. Ask for "RCAs where database timeouts caused customer-facing issues" and get results even if your notes use terms like "CosmosDB latency", "connection pool exhaustion", or "query timeout."
Semantic search. Vectors stored locally. Sub-second queries.
# Clone and install (using uv - recommended)
git clone https://github.com/danielscholl/obsidian-rag-mcp.git
cd obsidian-rag-mcp
uv sync
# Set your API key
export OPENAI_API_KEY="sk-..."
# Index the sample vault (or your own)
uv run obsidian-rag index --vault ./vault
# Search it
uv run obsidian-rag search "database connection issues" --vault ./vault<details> <summary>Output</summary>
Query: database connection issues
Found 3 results (searched 1154 chunks)
--- Result 1 (score: 0.480) ---
Source: RCAs/2025-05-17-database-connection-pool-exhaustion.md
Tags: database, p1, rca
# 2025-05-17 - Database Connection Pool Exhaustion in payment-gateway...
--- Result 2 (score: 0.466) ---
Source: RCAs/2025-06-18-database-connection-pool-exhaustion.md
Tags: database, p2, rca
# 2025-06-18 - Database Connection Pool Exhaustion in auth-service...</details>
Add to ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"obsidian-rag": {
"command": "uv",
"args": ["run", "--directory", "/path/to/obsidian-rag-mcp", "obsidian-rag", "serve"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault",
"OPENAI_API_KEY": "sk-..."
}
}
}
}Then ask Claude things like:
| Tool | What it does |
|---|---|
search_vault | Semantic search across all content |
search_by_tag | Filter by Obsidian tags |
get_note | Retrieve full note content |
get_related | Find notes similar to a given note |
list_recent | Recently modified notes |
index_status | Index statistics |
search_with_reasoning | Search with extracted conclusions |
get_conclusion_trace | Trace reasoning for a conclusion |
explore_connected_conclusions | Find related conclusions |
Documentation:
| Variable | Required | Description |
|---|---|---|
OPENAI_API_KEY | Yes* | For embeddings (and reasoning if enabled) |
AZURE_OPENAI_ENDPOINT | No* | Azure OpenAI endpoint URL |
AZURE_API_KEY | No* | Azure OpenAI API key |
AZURE_OPENAI_VERSION | No | Azure API version (default: 2024-10-21) |
AZURE_EMBEDDING_DEPLOYMENT | No | Azure deployment name (default: text-embedding-3-small) |
OBSIDIAN_VAULT_PATH | No | Default vault path |
REASONING_ENABLED | No | Enable conclusion extraction (default: false) |
\ Either `OPENAI_API_KEY` or* AZURE_OPENAI_ENDPOINT + AZURE_API_KEY is required. When both Azure variables are set, Azure OpenAI is used automatically.
Cost: ~$0.02 to index 100 notes. Queries are essentially free.
uv sync
# Tests
uv run pytest
# Lint + format
uv run black obsidian_rag_mcp/ tests/
uv run ruff check obsidian_rag_mcp/ tests/See docs/DEVELOPMENT.md for the full guide.
vault/ for testing)MIT
<div align="center">
Getting Started | Architecture | Development | Integration
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.