Setup
- Prerequisites
- Install the MCP server
- Configure your MCP client
- Initial indexing
- Building from source
Prerequisites
- .NET 10 SDK — only needed to build from source; the published tool is self-contained and doesn’t require the runtime.
- Ollama installed and running at
http://localhost:11434. - The
nomic-embed-textembedding model pulled in Ollama:ollama pull nomic-embed-text
Install the MCP server
dotnet tool install -g obsidian-docs-mcp
This installs the obsidian-docs-mcp command as a .NET Global Tool, self-contained for your platform (Windows, macOS, or Linux — x64 and arm64).
Configure your MCP client
Claude Code (CLI)
Global (all projects):
claude mcp add --scope user --transport stdio obsidian-docs-mcp -- obsidian-docs-mcp
Local (this project only):
claude mcp add --scope project --transport stdio obsidian-docs-mcp -- obsidian-docs-mcp
Claude Desktop
Add to your claude_desktop_config.json:
- Linux/WSL:
~/.config/Claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"obsidian-docs-mcp": {
"command": "obsidian-docs-mcp"
}
}
}
You can also run obsidian-docs-mcp setup from a terminal to have the tool write this configuration for you automatically.
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json in your project (local):
{
"mcpServers": {
"obsidian-docs-mcp": {
"command": "obsidian-docs-mcp"
}
}
}
VS Code (GitHub Copilot Chat / MCP)
Create .vscode/mcp.json in your workspace. VS Code uses servers (not mcpServers) and requires an explicit type:
{
"servers": {
"obsidian-docs-mcp": {
"type": "stdio",
"command": "obsidian-docs-mcp"
}
}
}
Other MCP clients
Any client with MCP registry support can discover this server via its published manifest name io.github.sandovaldavid/obsidian-docs-mcp (see .mcp/server.json). For clients without registry support, the same pattern applies: a stdio server running the obsidian-docs-mcp command with no arguments — check your client’s docs for its config file location and whether it expects mcpServers or servers as the top-level key.
Initial indexing
The first time you run the server (with no CLI arguments — i.e. as the MCP server itself), if the local index is empty it automatically downloads a periodically-regenerated prebuilt index (a SQLite database with embeddings already computed) instead of embedding everything locally, so search works within seconds. It only falls back to a live reindex if that download isn’t available.
To force a fresh reindex yourself (e.g. to pick up recent Obsidian doc changes, or to restrict which folders get indexed), run:
obsidian-docs-mcp index
This downloads the latest Obsidian Developer Docs and User Help content from GitHub, generates embeddings via Ollama, and stores everything in a local SQLite database. It can take a few minutes depending on your machine and Ollama’s speed.
You can restrict indexing to specific top-level folders per source to cut that time down, e.g. limiting User Help to English, Spanish, and the sandbox examples instead of all 32 language folders:
obsidian-docs-mcp index en,es,Sandbox # User Help only
obsidian-docs-mcp index en,es,Sandbox en # User Help and Developer Docs both restricted
Check progress or the chunk count at any time with:
obsidian-docs-mcp index-status
You can also trigger a reindex from within an agent conversation by asking it to run the ReindexDocumentation tool (same optional folder-filter parameters as above) — it runs in the background so it doesn’t block your session.
Building from source
git clone https://github.com/sandovaldavid/obsidian-docs-mcp.git
cd obsidian-docs-mcp
dotnet build -c Release ObsidianDocsMcp/ObsidianDocsMcp.csproj
dotnet pack -c Release ObsidianDocsMcp/ObsidianDocsMcp.csproj -o ./artifacts
dotnet tool install -g --add-source ./artifacts obsidian-docs-mcp
obsidian-docs-mcp index
To run directly from source without installing (no packaging step needed), copy mcp-config.example.json to mcp-config.json, replace <ABSOLUTE_PATH_TO_PROJECT> with your local path, and point your MCP client at that file.