Read-only semantic retrieval MCP for Obsidian vaults. Local Ollama embeddings, SQLite FTS5, no write tools.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add obsidian-semantic-search --env OBSIDIAN_VAULT_ROOT='<OBSIDIAN_VAULT_ROOT>' -- npx -y @dalecb/obsidian-semantic-mcp~/.codex/config.toml
[mcp_servers.obsidian-semantic-search]
command = "npx"
args = ["-y", "@dalecb/obsidian-semantic-mcp"]
env = { OBSIDIAN_VAULT_ROOT = "<OBSIDIAN_VAULT_ROOT>" }
# codex mcp add obsidian-semantic-search --env OBSIDIAN_VAULT_ROOT='<OBSIDIAN_VAULT_ROOT>' -- npx -y @dalecb/obsidian-semantic-mcp~/.cursor/mcp.json
{
"mcpServers": {
"obsidian-semantic-search": {
"command": "npx",
"args": [
"-y",
"@dalecb/obsidian-semantic-mcp"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"obsidian-semantic-search": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dalecb/obsidian-semantic-mcp"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"obsidian-semantic-search": {
"command": "npx",
"args": [
"-y",
"@dalecb/obsidian-semantic-mcp"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"obsidian-semantic-search": {
"command": "npx",
"args": [
"-y",
"@dalecb/obsidian-semantic-mcp"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"obsidian-semantic-search": {
"command": "npx",
"args": [
"-y",
"@dalecb/obsidian-semantic-mcp"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>"
}
}
}
}Environment variables
OBSIDIAN_VAULT_ROOT
Replace the placeholders with your own credentials and keep them out of version control.