Obsidian MCP Extended
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBSIDIAN_API_URL | No | URL for the Obsidian Local REST API (optional) | http://localhost:27124 |
| OBSIDIAN_VAULT_PATH | Yes | Path to your Obsidian vault directory | |
| OBSIDIAN_REST_API_KEY | No | API key for the Local REST API plugin (optional, for API-based tools) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_note_toolA | Read the content and metadata of a specific note. When to use:
When NOT to use:
Returns: Note content and metadata including tags, aliases, and frontmatter |
| create_note_toolA | Create a new note or overwrite an existing one. When to use:
When NOT to use:
Returns: Created note information with path and metadata |
| update_note_toolA | Update the content of an existing note. β οΈ IMPORTANT: By default, this REPLACES the entire note content. Always read the note first if you need to preserve existing content. When to use:
When NOT to use:
Returns: Update status with path, metadata, and operation performed |
| delete_note_toolC | Delete a note from the vault. Args: path: Path to the note to delete Returns: Deletion status |
| search_notes_toolA | Search for notes containing specific text or matching search criteria. When to use:
When NOT to use:
Returns: Search results with matched notes, relevance scores, and context |
| search_by_date_toolA | Search for notes by creation or modification date. When to use:
When NOT to use:
Returns: Notes matching the date criteria with paths and timestamps |
| list_notes_toolB | List notes in the vault or a specific directory. Args: directory: Specific directory to list (optional, defaults to root) recursive: Whether to list all subdirectories recursively (default: true) Returns: Vault structure and note paths |
| list_folders_toolA | List folders in the vault or a specific directory. When to use:
When NOT to use:
Returns: Folder structure with paths and names |
| move_note_toolB | Move a note to a new location, optionally updating all links. Args: source_path: Current path of the note destination_path: New path for the note update_links: Whether to update links in other notes (default: true) Returns: Move status and updated links count |
| create_folder_toolA | Create a new folder in the vault, including all parent folders in the path. When to use:
When NOT to use:
Note: Will create all necessary parent folders. For example, "Apple/Studies/J71P" will create Apple, Apple/Studies, and Apple/Studies/J71P if they don't exist. Returns: Creation status with list of folders created and placeholder file path |
| move_folder_toolA | Move an entire folder and all its contents to a new location. When to use:
When NOT to use:
Returns: Move status with count of notes and folders moved |
| add_tags_toolA | Add tags to a note's frontmatter. When to use:
When NOT to use:
Returns: Updated tag list for the note |
| update_tags_toolA | Update tags on a note - either replace all tags or merge with existing. When to use:
When NOT to use:
Returns: Previous tags, new tags, and operation performed |
| remove_tags_toolA | Remove tags from a note's frontmatter. Args: path: Path to the note tags: List of tags to remove (without # prefix) Returns: Updated tag list |
| get_note_info_toolC | Get metadata and information about a note without retrieving its full content. Args: path: Path to the note Returns: Note metadata and statistics |
| get_backlinks_toolA | Find all notes that link to a specific note (backlinks). When to use:
When NOT to use:
Performance note:
Returns: All notes linking to the target with optional context |
| get_outgoing_links_toolA | List all links from a specific note (outgoing links). When to use:
When NOT to use:
Returns: All outgoing links with their types and optional validity status |
| find_broken_links_toolA | Find all broken links in the vault or a specific directory. When to use:
When NOT to use:
Returns: All broken links grouped by source note |
| list_tags_toolA | List all unique tags used across the vault with usage statistics. When to use:
When NOT to use:
Performance note:
Returns: All unique tags with optional usage counts |
| get_backlinks_fs_toolA | Find all notes that link to a specified note (filesystem-native, no Obsidian required). This tool uses direct filesystem access for maximum performance and works without requiring Obsidian to be running. It scans all markdown files in the vault to find wikilinks pointing to the target note. When to use:
Performance:
Returns: All notes containing wikilinks to the target note with context |
| get_broken_links_fs_toolA | Find all broken wikilinks in the vault (filesystem-native, no Obsidian required). This tool uses direct filesystem access to scan all markdown files and identify wikilinks pointing to non-existent notes. Works without requiring Obsidian to be running. When to use:
Performance:
Returns: All broken links grouped by source note |
| analyze_note_tags_fs_toolA | Extract all tags (frontmatter and inline) from a specific note. This tool analyzes a note's content and extracts:
When to use:
Performance: < 100ms per note Returns: Tags organized by source (frontmatter, inline, all) |
| add_tag_fs_toolA | Add a tag to a note's frontmatter. Creates frontmatter if it doesn't exist. Handles duplicate tags gracefully. Supports nested tags (e.g., "project/active/critical"). When to use:
Performance: < 200ms per operation Returns: Success status and descriptive message |
| remove_tag_fs_toolA | Remove a tag from a note's frontmatter. Handles non-existent tags gracefully. Only removes from frontmatter, not inline tags in content. When to use:
Performance: < 200ms per operation Returns: Success status and descriptive message |
| search_by_tag_fs_toolA | Find all notes containing a specific tag (frontmatter or inline). Searches entire vault for notes with the specified tag in either frontmatter or inline (#tag) format. Supports nested tags. When to use:
Performance:
Returns: List of notes with tag locations (frontmatter/inline) |
| insert_after_heading_fs_toolA | Insert content immediately after a specific heading in a note. Finds the specified heading (case-sensitive) and inserts content on the line immediately following it. If multiple headings with the same text exist, content is inserted after the first occurrence. When to use:
Performance:
Returns: Success status and descriptive message |
| insert_after_block_fs_toolA | Insert content immediately after a block reference. Finds the specified block reference (^block-id) and inserts content after the line containing it. Accepts block IDs with or without the ^ prefix. When to use:
Performance:
Returns: Success status and descriptive message |
| update_frontmatter_field_fs_toolA | Update or add a field in note's YAML frontmatter. If the note has no frontmatter, it will be created. If the field already exists, its value will be updated. Otherwise, the field will be added. Supports strings, numbers, booleans, and lists. When to use:
Performance:
Returns: Success status and descriptive message |
| append_to_note_fs_toolA | Append content to the end of a note. Adds content at the very end of the file. Useful for adding appendices, logs, or any content that should come after all existing content. When to use:
Performance:
Returns: Success status and descriptive message |
| note_statistics_fs_toolA | Get comprehensive statistics about a single note. Analyzes the note for words, characters, lines, links (wikilinks and markdown), tags (frontmatter and inline), headings, code blocks, and file metadata. Returns detailed metrics including:
When to use:
Performance:
Returns: Comprehensive statistics dictionary |
| vault_statistics_fs_toolA | Get aggregate statistics for the entire vault. Walks through the vault directory, analyzes all markdown files (excluding .obsidian), and aggregates statistics. Uses memory-efficient generator-based iteration. Returns:
When to use:
Performance:
Returns: Vault-wide aggregate statistics |
| search_tasks_toolA | Search and filter tasks by metadata across the vault (filesystem-native, offline). Scans all markdown files in the vault and extracts tasks with Tasks plugin metadata (due dates, priorities, recurrence). Supports comprehensive filtering and sorting. Metadata Format (Tasks Plugin):
When to use:
Performance:
Returns: Tasks matching filters with full metadata, file locations, and line numbers |
| create_task_toolA | Create a new task with Tasks plugin metadata (filesystem-native, offline). Creates a checkbox task with optional metadata (priority, dates, recurrence) and inserts it at the specified location in the file. Creates the file if it doesn't exist. Metadata will be formatted using Tasks plugin emoji syntax:
When to use:
Returns: Success status, formatted task line, line number, and file path |
| toggle_task_status_toolA | Toggle task completion status between incomplete and completed (filesystem-native). Toggles the checkbox between When to use:
Returns: Success status, new status, done date (if added), and updated line |
| update_task_metadata_toolA | Update task metadata without changing the task content (filesystem-native). Updates priority, dates, or recurrence patterns while preserving the task description. Pass null/None to remove metadata fields. When to use:
Returns: Success status, updated line, and list of changes made |
| get_task_statistics_toolA | Get aggregate task statistics for a note or entire vault (filesystem-native). Analyzes all tasks and provides:
When to use:
Performance:
Returns: Comprehensive task statistics with counts and optional grouping |
| extract_dataview_fields_toolA | Extract all Dataview inline fields from a note (filesystem-native, offline). Parses all three Dataview inline field syntax variants:
Automatically detects value types:
Skips code blocks to avoid false matches. When to use:
Performance:
Returns: All fields with keys, values, types, syntax variants, and line numbers |
| search_by_dataview_field_toolA | Find all notes containing a specific Dataview field (filesystem-native, offline). Searches across all markdown files in the vault for a field by key (and optionally value/type). Field keys are canonicalized for consistent matching:
When to use:
Performance:
Returns: Matching fields grouped by file, with total counts and file list |
| add_dataview_field_toolA | Add a Dataview inline field to a note (filesystem-native, offline). Creates a new Dataview field using the specified syntax variant. Automatically detects and preserves value types (number, boolean, date, etc.). Syntax variants:
Insertion positions:
When to use:
Returns: Success status, formatted field string, and canonical key |
| remove_dataview_field_toolA | Remove a Dataview inline field from a note (filesystem-native, offline). Removes all occurrences of a field by key (canonicalized matching), or a specific occurrence if line_number is provided. For inline fields (bracket/paren syntax), removes only the field while preserving surrounding text. For full-line fields, removes the entire line. When to use:
Returns: Success status, removed key, and canonical key |
| parse_kanban_board_toolA | Parse a Kanban board file and extract its structure (filesystem-native, offline). Parses markdown-based Kanban boards with the following structure:
Metadata formats:
Supports nested subtasks with indentation levels. When to use:
Performance:
Returns: Board structure with columns, cards, subtasks, metadata, and statistics |
| add_kanban_card_toolA | Add a new card to a Kanban board column (filesystem-native, offline). Creates a new card with optional metadata and inserts it at the specified position in the target column. Preserves all existing cards and board structure. Card format:
When to use:
Performance:
Returns: Success status, column name, position, and formatted card line |
| move_kanban_card_toolA | Move a card between columns on a Kanban board (filesystem-native, offline). Finds a card by matching its text, removes it from the source column, and adds it to the destination column. Preserves all metadata, subtasks, and formatting. When to use:
Performance:
Returns: Success status, source/destination columns, and card details |
| toggle_kanban_card_toolA | Toggle a Kanban card's completion status (filesystem-native, offline). Toggles the checkbox between When to use:
Performance:
Returns: Success status, new status, and card details |
| get_kanban_statistics_toolA | Get comprehensive statistics for a Kanban board (filesystem-native, offline). Analyzes the board and provides:
When to use:
Performance:
Returns: Comprehensive board statistics with counts and percentages |
| get_link_graph_toolA | Get complete link graph for the vault (filesystem-native, offline). Builds a comprehensive graph of all note connections, tracking:
When to use:
Performance:
Returns: Complete link graph with all note connections and link type counts |
| find_orphaned_notes_toolA | Find orphaned notes with no connections (filesystem-native, offline). Identifies notes that have neither inlinks nor outlinks - completely isolated notes that aren't referenced anywhere and don't reference anything else. When to use:
Performance:
Returns: List of orphaned notes with file paths |
| find_hub_notes_toolA | Find hub notes with high outlink counts (filesystem-native, offline). Identifies notes that link to many other notes (hubs/MOCs/index notes). These are typically index pages, maps of content, or navigation notes. When to use:
Performance:
Returns: List of hub notes sorted by outlink count (highest first) |
| analyze_link_health_toolA | Analyze vault-wide link health metrics (filesystem-native, offline). Provides comprehensive vault health analysis including:
When to use:
Performance:
Returns: Comprehensive health metrics with counts and averages |
| get_note_connections_toolA | Get connection graph for a specific note (filesystem-native, offline). Explores connections from a note up to specified depth:
Provides both inlinks (backlinks) and outlinks with depth information. When to use:
Performance:
Returns: Connection graph with multi-level links and depth annotations |
| execute_dataview_query_toolA | Execute a Dataview Query Language (DQL) query (requires Obsidian + Dataview plugin). Executes full DQL queries with all Dataview plugin capabilities:
Supports all DQL clauses: FROM, WHERE, SORT, LIMIT, GROUP BY When to use:
Requires:
Returns: Query results in Dataview's structured format |
| list_notes_by_tag_dql_toolA | List notes with a specific tag using DQL (requires Obsidian + Dataview plugin). Simplified interface for tag-based queries with optional filtering and sorting. When to use:
Returns: List of matching notes with Dataview metadata |
| list_notes_by_folder_dql_toolA | List notes in a folder using DQL (requires Obsidian + Dataview plugin). Simplified interface for folder-based queries with optional filtering and sorting. When to use:
Returns: List of matching notes with Dataview metadata |
| table_query_dql_toolB | Execute a DQL TABLE query (requires Obsidian + Dataview plugin). Creates tabular views of note metadata with custom fields. When to use:
Returns: Table results with specified fields and rows |
| render_templater_template_toolC | Render Templater template (requires Obsidian + Templater plugin). |
| expand_template_toolC | Expand template variables (filesystem-native, offline). |
| list_templates_toolB | List available templates (filesystem-native, offline). |
| get_active_file_toolC | Get currently active file (requires Obsidian running). |
| open_file_toolB | Open file in Obsidian (requires Obsidian running). |
| parse_canvas_toolC | Parse Canvas file (filesystem-native, offline). |
| add_canvas_node_toolC | Add node to Canvas (filesystem-native, offline). |
| execute_command_toolB | Execute Obsidian command (requires Obsidian running). |
| list_commands_toolB | List all available commands (requires Obsidian running). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/aleksakarac/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server