Labsco
LWaetzig logo

Obsidian MCP

β˜… 1

from LWaetzig

Read, write, search, and navigate your Obsidian notes using natural language

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

obsidian-mcp

An MCP (Model Context Protocol) Server that gives AI assistants direct access to your Obsidian vault. Read, write, search, and navigate notes using natural language β€” with any MCP-compatible client.

Contents


Available Tools

ToolDescription
obsidian_list_notesList notes in the vault, optionally filtered to a folder. Paginated.
obsidian_read_noteRead the full content of a note by vault-relative path.
obsidian_create_noteCreate a new note with optional YAML frontmatter.
obsidian_update_noteOverwrite an existing note's content and frontmatter.
obsidian_append_to_noteAppend content to a note (creates it if missing).
obsidian_delete_notePermanently delete a note.
obsidian_move_noteMove or rename a note to a new path.
obsidian_get_note_metadataRead only the frontmatter and tags, without loading the body.
obsidian_search_notesFull-text search across all notes (case-insensitive).
obsidian_search_by_tagFind all notes with a specific #tag.
obsidian_get_backlinksFind all notes that [[link]] to a given note.
obsidian_list_foldersList folders in the vault with note counts.
obsidian_create_folderCreate a new folder (parents created automatically).

All tools accept a response_format parameter: "markdown" (default, human-readable) or "json" (structured, for programmatic use).

Example prompts

"Summarise everything in my projects folder"
"Create a note called 'Meeting Notes 2025-04-11' with today's agenda"
"Find all notes tagged #todo and list what's incomplete"
"What notes link back to my 'Home' note?"
"Search for anything mentioning the Q2 launch"
"Append '- [ ] Follow up with design team' to my Daily Note"

Security

  • Path traversal protection β€” all paths are validated to stay within OBSIDIAN_VAULT_PATH
  • Symlink protection β€” symlinks inside the vault that point outside it are blocked
  • File size limit β€” notes larger than 5 MB are rejected to prevent memory exhaustion
  • Response size limit β€” responses are truncated at 25,000 characters with a clear notice
  • No network access β€” the server reads and writes local files only; no outbound requests

Extending

The codebase is modular by design. To add a new set of tools:

  1. Create src/tools/my-feature.ts and export a registerMyFeatureTools(server, vault) function
  2. Add it to src/tools/index.ts:
import { registerMyFeatureTools } from './my-feature.js';

export function registerAllTools(server: McpServer, vault: VaultService): void {
  registerNoteTools(server, vault);
  registerSearchTools(server, vault);
  registerFolderTools(server, vault);
  registerMyFeatureTools(server, vault);  // ← add this
}
  1. Run npm run build

To add vault capabilities (e.g. reading canvas files, template expansion), extend VaultService in src/services/vault.ts and call the new methods from your tool handlers.