Wraps the official Obsidian CLI to enable reading, writing, searching, and managing notes, tags, frontmatter properties, and tasks within an Obsidian vault.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-ts-mcpsearch my vault for notes about machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
obsidian-ts-mcp
A Model Context Protocol (MCP) server that wraps the official Obsidian CLI, letting AI agents in VS Code (and any other MCP client) read, write, search, and manage notes inside an Obsidian vault.
Prerequisites
Requirement | Minimum version |
Node.js | 18 |
Obsidian desktop app | 1.12 (with CLI enabled) |
Obsidian Catalyst licence | Required for CLI access |
The Obsidian desktop app must be running when the MCP server is in use.
The obsidian binary must be available on your PATH.
Installation
Configuration
VS Code (user-level MCP)
Add the following to your VS Code MCP configuration:
OS | Path |
macOS |
|
Linux |
|
Windows |
|
Claude Desktop
Add to claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows):
Set OBSIDIAN_VAULT to the name of the vault you want to target. The name
must match exactly what Obsidian shows in the vault switcher.
Environment variables
Variable | Description |
| Default vault name appended to every CLI call. |
Available tools
The server exposes 16 tools organised into four groups.
Core -- note management
Tool | Description |
| Create a new note, optionally from a template. |
| Read the full markdown contents of a note. |
| Append content to the end of a note. |
| Prepend content after the frontmatter of a note. |
| Full-text search with Obsidian query syntax. |
| Get or create today's daily note. |
| Append content to today's daily note. |
Discovery and context
Tool | Description |
| Vault name, path, file/folder counts, size. |
| List files, optionally filtered by folder or extension. |
| List all tags with occurrence counts. |
| Find notes that link to a given note. |
| Heading structure of a note. |
Properties and metadata
Tool | Description |
| Set a frontmatter property on a note. |
| Read a frontmatter property value. |
Tasks
Tool | Description |
| List tasks, with filters for status, file, or daily note. |
| Toggle a task checkbox on or off. |
Project structure
Development
How it works
An MCP client (VS Code, Claude Desktop, etc.) launches the server over stdio.
The client calls
tools/listand receives the 16 tool definitions fromsrc/tools.ts.When the client invokes a tool,
src/server.tsroutes the call tohandleTool()insrc/handlers.ts.handleTool()validates input against the tool schema, then usesbuildArgs()andrunObsidian()fromsrc/cli.tsto execute the correspondingobsidianCLI command.The CLI output is returned to the client as a text content block.
Testing
Tests use Vitest and mock the CLI layer so they never invoke the real Obsidian binary. Run:
Security considerations
Full vault access. The server has read/write access to every note in the targeted vault. Limit
OBSIDIAN_VAULTto vaults you are comfortable exposing to AI agents.No authentication. The stdio transport has no built-in auth. Access control depends entirely on who can launch the server process.
Input validation. All tool inputs are validated against their declared schemas before execution. The server uses
execFile(notexec) to avoid shell injection, but note that file/path values are passed directly to the Obsidian CLI.Environment inheritance. The child process inherits the parent's environment variables. Avoid storing secrets in env vars visible to the server process.
Troubleshooting
Symptom
: obsidian: command not found
Cause: CLI binary not on PATH
Fix: Ensure Obsidian 1.12+ is installed and the CLI is enabled in Settings > General
Symptom
: Command timed out after 15000ms
Cause: Obsidian desktop app not running
Fix: Start the Obsidian app before using the MCP server
Symptom
: vault not found
Cause: Vault name mismatch
Fix: Check that OBSIDIAN_VAULT matches the exact name in Obsidian’s vault switcher
Symptom
: Catalyst licence required
Cause: Missing licence
Fix: The Obsidian CLI requires a Catalyst licence — purchase one at obsidian.md
Symptom
: Server exits immediately
Cause: Node.js version too old
Fix: Ensure Node.js >= 18 (node --version)