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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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