Provides comprehensive note management for Obsidian vaults, including CRUD operations, search functionality, tag and link management, frontmatter updates, template-based note creation, and content insertion at specific headings.
Obsidian Tools MCP Server
An extended MCP (Model Context Protocol) server for Obsidian with full CRUD operations and advanced note management capabilities.
Features
Core Operations
create_note - Create new notes with nested folder support
delete_note - Delete notes from your vault
update_note - Replace entire note content
append_to_note - Append content to end of notes
prepend_to_note - Prepend content (respects frontmatter)
rename_note - Move/rename notes
Search & Discovery
read_note - Read single note content
search_notes - Search by filename (supports regex)
search_content - Full-text search in note contents
list_folder - List notes and subfolders
Links & Tags
get_tags - Extract all tags from a note
get_links - Get all wikilinks and markdown links
get_backlinks - Find notes linking to a specific note
Advanced Operations
insert_at_heading - Insert content under a specific heading
update_frontmatter - Modify YAML frontmatter properties
create_from_template - Create notes from templates with variable substitution
Installation
Prerequisites
Node.js 18+
An Obsidian vault
Setup
Configuration
For VS Code / GitHub Copilot
Add to your VS Code settings (settings.json):
For Claude Desktop
Add to your Claude config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Environment Variables
Variable | Description | Required |
| Absolute path to your Obsidian vault | Yes |
You can also pass the vault path as a command-line argument:
Usage Examples
Create a New Note
Search and Update
Template-Based Creation
Frontmatter Management
Tool Reference
create_note
Create a new note in the vault.
Parameter | Type | Required | Description |
path | string | Yes | Path relative to vault root |
content | string | Yes | Markdown content |
overwrite | boolean | No | Overwrite if exists (default: false) |
delete_note
Delete a note from the vault.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
update_note
Replace the entire content of a note.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
content | string | Yes | New content |
append_to_note
Append content to the end of a note.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
content | string | Yes | Content to append |
separator | string | No | Separator before content (default: "\n\n") |
prepend_to_note
Prepend content to a note (after frontmatter if present).
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
content | string | Yes | Content to prepend |
separator | string | No | Separator after content (default: "\n\n") |
rename_note
Move or rename a note.
Parameter | Type | Required | Description |
oldPath | string | Yes | Current path |
newPath | string | Yes | New path |
search_notes
Search notes by filename pattern.
Parameter | Type | Required | Description |
query | string | Yes | Search pattern (regex supported) |
limit | number | No | Max results (default: 20) |
search_content
Search for text within note contents.
Parameter | Type | Required | Description |
query | string | Yes | Text to search for |
caseSensitive | boolean | No | Case sensitivity (default: false) |
limit | number | No | Max results (default: 20) |
get_tags
Get all tags from a note.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
get_links
Get all internal links from a note.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
get_backlinks
Find all notes linking to a specific note.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
insert_at_heading
Insert content under a specific heading.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
heading | string | Yes | Heading text to find |
content | string | Yes | Content to insert |
position | "start" | "end" | No | Where to insert (default: "end") |
update_frontmatter
Update YAML frontmatter properties.
Parameter | Type | Required | Description |
path | string | Yes | Path to the note |
properties | object | Yes | Key-value pairs (use null to delete) |
create_from_template
Create a note from a template.
Parameter | Type | Required | Description |
templatePath | string | Yes | Path to template note |
newPath | string | Yes | Path for new note |
variables | object | No | Template variable substitutions |
Built-in template variables:
{{date}}- Current date (YYYY-MM-DD){{time}}- Current time (HH:MM:SS){{datetime}}- ISO datetime
Development
License
MIT