Skip to content
VS Code

Obsidian Semantic Search for VS Code

io.github.dalecb/obsidian-semantic-mcp

Read-only semantic search MCP server for Obsidian vaults using local Ollama embeddings.

client:VS Code transport:stdio runtime:npm

Install Obsidian Semantic Search in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "obsidian-vault-root",
      "description": "OBSIDIAN_VAULT_ROOT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-semantic-mcp-home",
      "description": "OBSIDIAN_SEMANTIC_MCP_HOME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-embed-model",
      "description": "OBSIDIAN_EMBED_MODEL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ollama-base-url",
      "description": "OLLAMA_BASE_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-semantic-startup-index",
      "description": "OBSIDIAN_SEMANTIC_STARTUP_INDEX",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-semantic-allow-sensitive",
      "description": "OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-semantic-exclude",
      "description": "OBSIDIAN_SEMANTIC_EXCLUDE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-semantic-sensitive-paths",
      "description": "OBSIDIAN_SEMANTIC_SENSITIVE_PATHS",
      "password": true
    }
  ],
  "servers": {
    "obsidian-semantic-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dalecb/obsidian-semantic-mcp"
      ],
      "env": {
        "OBSIDIAN_VAULT_ROOT": "${input:obsidian-vault-root}",
        "OBSIDIAN_SEMANTIC_MCP_HOME": "${input:obsidian-semantic-mcp-home}",
        "OBSIDIAN_EMBED_MODEL": "${input:obsidian-embed-model}",
        "OLLAMA_BASE_URL": "${input:ollama-base-url}",
        "OBSIDIAN_SEMANTIC_STARTUP_INDEX": "${input:obsidian-semantic-startup-index}",
        "OBSIDIAN_SEMANTIC_ALLOW_SENSITIVE": "${input:obsidian-semantic-allow-sensitive}",
        "OBSIDIAN_SEMANTIC_EXCLUDE": "${input:obsidian-semantic-exclude}",
        "OBSIDIAN_SEMANTIC_SENSITIVE_PATHS": "${input:obsidian-semantic-sensitive-paths}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

Obsidian Semantic Search in other clients