Skip to main content
Glama

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

  • 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

# Clone the repository git clone https://github.com/yourusername/obsidian-tools-mcp.git cd obsidian-tools-mcp # Install dependencies npm install # Build the project npm run build

Configuration

For VS Code / GitHub Copilot

Add to your VS Code settings (settings.json):

{ "mcp": { "servers": { "obsidian-tools": { "command": "node", "args": ["/path/to/obsidian-tools-mcp/dist/index.js"], "env": { "OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault" } } } } }

For Claude Desktop

Add to your Claude config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{ "mcpServers": { "obsidian-tools": { "command": "node", "args": ["/path/to/obsidian-tools-mcp/dist/index.js"], "env": { "OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault" } } } }

Environment Variables

Variable

Description

Required

OBSIDIAN_VAULT_PATH

Absolute path to your Obsidian vault

Yes

You can also pass the vault path as a command-line argument:

node dist/index.js /path/to/your/vault

Usage Examples

Create a New Note

Create a note at "Projects/My Project.md" with content about project planning

Search and Update

Find all notes containing "TODO" and append a completion timestamp

Template-Based Creation

Create a new meeting note from the template at "Templates/Meeting.md" with title "Q4 Planning Session"

Frontmatter Management

Update the frontmatter of "My Note.md" to add tags: ["project", "important"]

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 all internal links from a note.

Parameter

Type

Required

Description

path

string

Yes

Path to the note

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

# Watch mode for development npm run dev # Build npm run build # Run directly npm start

License

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sureshsankaran/obsidian-tools-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server