Skip to main content
Glama
sureshsankaran

Obsidian Tools MCP Server

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