obsidian-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBSIDIAN_HOST | No | Host for the Obsidian Local REST API. | 127.0.0.1 |
| OBSIDIAN_PORT | No | Port for the Obsidian Local REST API (HTTPS). | 27124 |
| OBSIDIAN_API_KEY | Yes | API key from the Local REST API plugin settings. | |
| OBSIDIAN_PROTOCOL | No | Protocol: http or https. | https |
| OBSIDIAN_TIMEOUT_MS | No | Per-request timeout in milliseconds. | 15000 |
| OBSIDIAN_VERIFY_TLS | No | Set to 'true' if you've replaced the self-signed cert. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_vaultB | List all files in the Obsidian vault. Use |
| search_vaultA | Full-text search across all notes. Supports two modes: |
| query_dataviewA | Run a Dataview DQL query (LIST / TABLE / TASK) against the vault. Requires the Dataview plugin installed in the vault. Powerful for structured questions like 'all notes tagged #project where status != done sorted by due date'. |
| list_tagsA | Return every tag used in the vault, with usage counts and a sample of notes per tag. Useful for 'what topics do I write about most?' or as a starting point for organizing. |
| get_vault_statsA | Get high-level stats about the vault: total notes, total words (sampled), top folders, file extensions. Useful for 'how big is my vault?' / 'where do I write the most?' prompts. |
| get_noteA | Get a note's content plus its graph context: backlinks (who links to it), forward links (who it links to), tags, and frontmatter. Use the |
| get_outlineA | Return the heading structure of a note (level + text + line number). Use this instead of |
| get_active_noteA | Return the note the user currently has focused in Obsidian. Useful for 'what am I looking at' style prompts. |
| get_daily_noteA | Fetch the user's current daily (or weekly/monthly/etc.) note. Returns content + frontmatter + tags. Requires the Periodic Notes or Daily Notes plugin in the vault. |
| get_backlinksA | Return notes that link to the given path, with snippets. Same data as the |
| traverse_graphA | Walk the link graph starting from a note. Returns nodes (notes) and edges (links) up to |
| find_orphansB | Find notes with no incoming links anywhere in the vault. Use to surface forgotten ideas or candidates for cleanup. |
| find_broken_linksB | Find wiki-links and markdown links that don't resolve to any note in the vault. Use for vault hygiene or before refactoring note titles. |
| create_noteA | Create a new note (fails if it already exists unless |
| create_notesA | Create many notes in a single tool call. Designed for bootstrapping a knowledge graph (MOC + topical notes) without paying N round-trips. Each entry follows the same schema as |
| upsert_noteA | Create a note if missing, replace it if it exists. Body is always fully replaced. Frontmatter is replaced by default; pass |
| update_noteA | Overwrite a note's full content. Prefer |
| append_to_noteA | Append markdown to the end of an existing note. Creates the note if it doesn't exist. |
| append_to_daily_noteB | Append markdown to the current daily (or weekly/etc.) note. Common pattern: agent logs what it just did at the end of the day. |
| patch_noteA | Insert content relative to a heading, block reference, or frontmatter field — without rewriting the whole note. Example: append a bullet under '## Tasks' without touching the rest of the page. |
| move_noteA | Move a note from one path to another, optionally rewriting wiki-links so backlinks keep working. This is the safe way to rename notes — agents should not naively |
| delete_noteA | Delete a note from the vault. Destructive — only call when the user has explicitly asked to remove a file. |
| open_noteA | Surface a note in Obsidian's workspace (focuses an existing tab or opens a new one). Great for ending an agent task with 'and here's the result for you to review'. |
| list_commandsA | List every registered Obsidian command (built-in + plugin) with its id and human name. Use this before |
| run_commandA | Execute an Obsidian command by id (e.g. 'editor:toggle-bold', 'app:reload', 'graph:open'). Discover ids with |
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/yanxue06/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server