Skip to main content
Glama
README.md6.91 kB
# 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 ```bash # 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`): ```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): ```json { "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: ```bash 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_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 ```bash # 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