obsidian-mcp
About
Enables AI assistants to interact with Obsidian vaults, providing tools for reading, creating, editing and managing notes and tags.
Details
- Author
- StevenStavrakis
- Repository
- StevenStavrakis/obsidian-mcp
- GitHub stars
- 440
- Downloads
- 55
- License
- MIT License
- Categories
- Productivity, Other, Knowledge Base, AI
Jump to
- Read and search notes in your vault
- Create new notes and directories
- Edit and delete existing notes
- Move notes between locations
- Manage tags (add, remove, rename)
- Support for multiple vaults
Setting up with Highlight
Follow these steps to add this server as a custom Highlight plugin:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
obsidian-mcpCommand (node, npx, python, etc.)npxArguments-
Argument 1
-y -
Argument 2
obsidian-mcp@2 -
Argument 3
serve -
Argument 4
--vault -
Argument 5
notes=/absolute/path/to/vault
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Node.js 22 or newer is required:
node --version # v22 or newer
Run with npx without installing the package globally. Pinning the major version receives compatible 2.x updates without automatically crossing a future major version:
npx -y obsidian-mcp@2 serve --vault notes=/absolute/path/to/vault
Configure an MCP client to launch the same command over stdio:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "obsidian-mcp@2", "serve", "--vault", "notes=/absolute/path/to/vault"]
}
}
}
Alternatively, install the package globally and use "command": "obsidian-mcp" with the same arguments beginning at "serve":
npm install -g obsidian-mcp@2
Each vault must already contain an .obsidian directory and must be configured using an absolute path.
Both protocol eras are served from the same tool definitions. After confirming that your MCP client negotiates 2026-07-28, you may opt into modern-only mode by adding "--legacy", "reject" to args.
Vault ids use lowercase letters, digits, _, and -, must begin with a letter, and are the values assistants pass to tools. Up to ten vaults may be configured. Repeat --vault to expose more than one vault:
obsidian-mcp serve \
--vault work=/Users/me/Documents/WorkVault \
--vault personal=/Users/me/Documents/PersonalVault
Network, removable, hidden, and synced locations are allowed because an explicit --vault is treated as authorization; the same containment protections apply to every location.
obsidian_list_vaults
List configured vault ids without exposing host paths.
obsidian_read_note
Read a bounded page of a note and return its SHA-256 `etag`.
obsidian_create_note
Atomically create a note without overwriting.
obsidian_edit_note
Append, prepend, or replace exact note content.
obsidian_delete_note
Move a note to MCP trash or permanently delete it with explicit confirmation.
obsidian_move_note
Move or rename a note and update unambiguous backlinks transactionally.
obsidian_create_directory
Transactionally create a directory inside a vault.
obsidian_search_vault
Search content, filenames, or tags with bounded cursor pagination.
obsidian_add_tags
Add tags to one or more notes atomically.
obsidian_remove_tags
Remove exact, nested, or wildcard-selected tags atomically.
obsidian_rename_tag
Rename a tag across the vault atomically.
obsidian_manage_tags
Unified add/remove tag workflow using the same implementation.
| Tool | Purpose |
| --------------------------- | ----------------------------------------------------------------------------- |
| obsidian_list_vaults | List configured vault ids without exposing host paths. |
| obsidian_read_note | Read a bounded page of a note and return its SHA-256 etag. |
| obsidian_create_note | Atomically create a note without overwriting. |
| obsidian_edit_note | Append, prepend, or replace exact note content. |
| obsidian_delete_note | Move a note to MCP trash or permanently delete it with explicit confirmation. |
| obsidian_move_note | Move or rename a note and update unambiguous backlinks transactionally. |
| obsidian_create_directory | Transactionally create a directory inside a vault. |
| obsidian_search_vault | Search content, filenames, or tags with bounded cursor pagination. |
| obsidian_add_tags | Add tags to one or more notes atomically. |
| obsidian_remove_tags | Remove exact, nested, or wildcard-selected tags atomically. |
| obsidian_rename_tag | Rename a tag across the vault atomically. |
| obsidian_manage_tags | Unified add/remove tag workflow using the same implementation. |
All schemas are strict JSON Schema 2020-12 contracts generated from Zod. Mutating results include a transaction id; tool failures return isError: true with an actionable error code.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"obsidian-mcp": {
"env": {},
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=/absolute/path/to/vault"
],
"command": "npx"
}
}
}
Linux
{
"env": [],
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=/absolute/path/to/vault"
],
"command": "npx"
}
Macos
{
"env": [],
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=/absolute/path/to/vault"
],
"command": "npx"
}
Windows
{
"env": [],
"args": [
"/c",
"npx",
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=/absolute/path/to/vault"
],
"command": "cmd"
}
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





