Read-only semantic search MCP server for Obsidian vaults using local Ollama embeddings.
Connect Runs on your machine
claude mcp add obsidian-semantic-mcp -e OBSIDIAN_VAULT_ROOT=<OBSIDIAN_VAULT_ROOT> -e OBSIDIAN_SEMANTIC_MCP_HOME=<OBSIDIAN_SEMANTIC_MCP_HOME> -e OBSIDIAN_EMBED_MODEL=<OBSIDIAN_EMBED_MODEL> -e OLLAMA_BASE_URL=<OLLAMA_BASE_URL> -e OBSIDIAN_SEMANTIC_STARTUP_INDEX=<OBSIDIAN_SEMANTIC_STARTUP_INDEX> -e OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE=<OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE> -e OBSIDIAN_SEMANTIC_EXCLUDE=<OBSIDIAN_SEMANTIC_EXCLUDE> -e OBSIDIAN_SEMANTIC_SENSITIVE_PATHS=<OBSIDIAN_SEMANTIC_SENSITIVE_PATHS> -- npx -y @dalecb/[email protected]
{
"mcpServers": {
"obsidian-semantic-mcp": {
"command": "npx",
"args": [
"-y",
"@dalecb/[email protected]"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>",
"OBSIDIAN_SEMANTIC_MCP_HOME": "<OBSIDIAN_SEMANTIC_MCP_HOME>",
"OBSIDIAN_EMBED_MODEL": "<OBSIDIAN_EMBED_MODEL>",
"OLLAMA_BASE_URL": "<OLLAMA_BASE_URL>",
"OBSIDIAN_SEMANTIC_STARTUP_INDEX": "<OBSIDIAN_SEMANTIC_STARTUP_INDEX>",
"OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE": "<OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE>",
"OBSIDIAN_SEMANTIC_EXCLUDE": "<OBSIDIAN_SEMANTIC_EXCLUDE>",
"OBSIDIAN_SEMANTIC_SENSITIVE_PATHS": "<OBSIDIAN_SEMANTIC_SENSITIVE_PATHS>"
}
}
}
}
{
"mcpServers": {
"obsidian-semantic-mcp": {
"command": "npx",
"args": [
"-y",
"@dalecb/[email protected]"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>",
"OBSIDIAN_SEMANTIC_MCP_HOME": "<OBSIDIAN_SEMANTIC_MCP_HOME>",
"OBSIDIAN_EMBED_MODEL": "<OBSIDIAN_EMBED_MODEL>",
"OLLAMA_BASE_URL": "<OLLAMA_BASE_URL>",
"OBSIDIAN_SEMANTIC_STARTUP_INDEX": "<OBSIDIAN_SEMANTIC_STARTUP_INDEX>",
"OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE": "<OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE>",
"OBSIDIAN_SEMANTIC_EXCLUDE": "<OBSIDIAN_SEMANTIC_EXCLUDE>",
"OBSIDIAN_SEMANTIC_SENSITIVE_PATHS": "<OBSIDIAN_SEMANTIC_SENSITIVE_PATHS>"
}
}
}
}
{
"servers": {
"obsidian-semantic-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dalecb/[email protected]"
],
"env": {
"OBSIDIAN_VAULT_ROOT": "<OBSIDIAN_VAULT_ROOT>",
"OBSIDIAN_SEMANTIC_MCP_HOME": "<OBSIDIAN_SEMANTIC_MCP_HOME>",
"OBSIDIAN_EMBED_MODEL": "<OBSIDIAN_EMBED_MODEL>",
"OLLAMA_BASE_URL": "<OLLAMA_BASE_URL>",
"OBSIDIAN_SEMANTIC_STARTUP_INDEX": "<OBSIDIAN_SEMANTIC_STARTUP_INDEX>",
"OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE": "<OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE>",
"OBSIDIAN_SEMANTIC_EXCLUDE": "<OBSIDIAN_SEMANTIC_EXCLUDE>",
"OBSIDIAN_SEMANTIC_SENSITIVE_PATHS": "<OBSIDIAN_SEMANTIC_SENSITIVE_PATHS>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
OBSIDIAN_VAULT_ROOTRequired | Absolute path to the local Obsidian vault. |
OBSIDIAN_SEMANTIC_MCP_HOMEOptional | Directory for the external SQLite index, logs, and cache. |
OBSIDIAN_EMBED_MODELOptional | Ollama embedding model name. Defaults to bge-m3. |
OLLAMA_BASE_URLOptional | Ollama API base URL. Defaults to http://localhost:11434. |
OBSIDIAN_SEMANTIC_STARTUP_INDEXOptional | Set to true to run incremental indexing when the server starts. |
OBSIDIAN_SEMANTIC_ALLOW_SENSITIVEOptional | Set to true to allow include_sensitive tool calls. |
OBSIDIAN_SEMANTIC_EXCLUDEOptional | Comma- or newline-separated folders to always exclude from indexing, search, and read. |
OBSIDIAN_SEMANTIC_SENSITIVE_PATHSOptional | Comma- or newline-separated folders treated as sensitive (blocked unless unlocked). Defaults to 08_PersonalInfo/. |
Details
| Package | @dalecb/[email protected] (NPM, stdio) |
| First published | 3 Jun 2026 |
| Last updated | 3 Jun 2026 |
| Registry name | io.github.DalecB/obsidian-semantic-mcp |
More search and web servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
