Local MCP server for Obsidian Desktop via the official Obsidian CLI.
Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.
note_readRead the full Markdown contents of a note by its vault-relative path.Read the full Markdown contents of a note by its vault-relative path.
No input schema was published for this tool.
vault_searchFull-text search across the vault, returning matching note paths. Optional filtersFull-text search across the vault, returning matching note paths. Optional filters
No input schema was published for this tool.
note_listList files in the vault, optionally filtered by folder and extension.List files in the vault, optionally filtered by folder and extension.
No input schema was published for this tool.
vault_tagsList all tags in the vault with their occurrence counts.List all tags in the vault with their occurrence counts.
No input schema was published for this tool.
unresolved_linksList unresolved (broken) wikilinks across the vault.List unresolved (broken) wikilinks across the vault.
No input schema was published for this tool.
tasks_listList tasks (checkboxes) in the vault. Scope to the whole vault, the daily note, or the active note.List tasks (checkboxes) in the vault. Scope to the whole vault, the daily note, or the active note.
No input schema was published for this tool.
note_diffShow a note's version history, or diff two versions. Omit from/to to list available versions.Show a note's version history, or diff two versions. Omit from/to to list available versions.
No input schema was published for this tool.
note_createCreate a new note, optionally in a folder, from a template, with initial content and frontmatter.Create a new note, optionally in a folder, from a template, with initial content and frontmatter.
No input schema was published for this tool.
note_appendAppend Markdown to a note, optionally under a specific heading.Append Markdown to a note, optionally under a specific heading.
No input schema was published for this tool.
note_set_frontmatterPatch a note's YAML frontmatter via processFrontMatter (never a raw rewrite). A null value removes a key.Patch a note's YAML frontmatter via processFrontMatter (never a raw rewrite). A null value removes a key.
No input schema was published for this tool.
daily_openOpen today's daily note (creating it if needed).Open today's daily note (creating it if needed).
No input schema was published for this tool.
daily_appendAppend Markdown to today's daily note.Append Markdown to today's daily note.
No input schema was published for this tool.
note_renameprivilegedRename a note in place (new name). Backlinks are rewritten automatically.Rename a note in place (new name). Backlinks are rewritten automatically.
No input schema was published for this tool.
note_moveprivilegedMove a note to another folder or path. Links are preserved.Move a note to another folder or path. Links are preserved.
No input schema was published for this tool.
folder_createCreate a folder (and any missing intermediate folders) in the vault.Create a folder (and any missing intermediate folders) in the vault.
No input schema was published for this tool.
note_deleteprivilegedDelete a note. Honors the configured delete.mode (trash by default, or permanent).Delete a note. Honors the configured delete.mode (trash by default, or permanent).
No input schema was published for this tool.
note_transitionMove a note to a new lifecycle state, validated against a configured workflow.Move a note to a new lifecycle state, validated against a configured workflow.
No input schema was published for this tool.
canvas_readRead and validate a native Obsidian .canvas file, returning structured nodes and edges.Read and validate a native Obsidian .canvas file, returning structured nodes and edges.
No input schema was published for this tool.
canvas_createCreate a native Obsidian .canvas file, optionally with initial nodes and edges. Existing files are not overwritten unless overwrite is true.Create a native Obsidian .canvas file, optionally with initial nodes and edges. Existing files are not overwritten unless overwrite is true.
No input schema was published for this tool.
canvas_upsert_nodesAdd or partially update native Canvas nodes by stable ID. Existing nodes, edges, top-level fields, and unknown node fields are preserved.Add or partially update native Canvas nodes by stable ID. Existing nodes, edges, top-level fields, and unknown node fields are preserved.
No input schema was published for this tool.
canvas_upsert_edgesAdd or partially update native Canvas edges by stable ID. Existing unaddressed edges are preserved and endpoints must reference nodes.Add or partially update native Canvas edges by stable ID. Existing unaddressed edges are preserved and endpoints must reference nodes.
No input schema was published for this tool.
canvas_removeprivilegedRemove explicitly named node and/or edge IDs. Removing a node also removes every incident edge deterministically.Remove explicitly named node and/or edge IDs. Removing a node also removes every incident edge deterministically.
No input schema was published for this tool.
canvas_openOpen a native Obsidian .canvas file through the existing Obsidian CLI file-opening function.Open a native Obsidian .canvas file through the existing Obsidian CLI file-opening function.
No input schema was published for this tool.
note_replace_rangeReplace a half-open text range in a vault note using zero-based UTF-16 line/ch positions.Replace a half-open text range in a vault note using zero-based UTF-16 line/ch positions.
No input schema was published for this tool.
note_insert_atInsert text at a zero-based UTF-16 line/ch cursor in a vault note. Optional surroundingInsert text at a zero-based UTF-16 line/ch cursor in a vault note. Optional surrounding
No input schema was published for this tool.
note_replaceCompatibility alias for note_replace_range with the same positional and expected-text guards.Compatibility alias for note_replace_range with the same positional and expected-text guards.
No input schema was published for this tool.
note_insertCompatibility alias for note_insert_at with the same cursor and context guards.Compatibility alias for note_insert_at with the same cursor and context guards.
No input schema was published for this tool.
file_importCopy a local file from a configured import root into the vault. Destination names are collision-safe by default;Copy a local file from a configured import root into the vault. Destination names are collision-safe by default;
No input schema was published for this tool.
attachment_importSemantic alias for file_import for attachment-oriented callers; the same source, size, path, and collision guards apply.Semantic alias for file_import for attachment-oriented callers; the same source, size, path, and collision guards apply.
No input schema was published for this tool.
note_attachImport a local file into the vault and optionally insert a relative Obsidian embed into a note.Import a local file into the vault and optionally insert a relative Obsidian embed into a note.
No input schema was published for this tool.
attachment_embedSemantic alias for note_attach: import an attachment and embed it in a note with the same guards.Semantic alias for note_attach: import an attachment and embed it in a note with the same guards.
No input schema was published for this tool.
file_moveprivilegedMove a regular vault file to another vault-relative path with explicit collision policy.Move a regular vault file to another vault-relative path with explicit collision policy.
No input schema was published for this tool.
file_renameprivilegedRename a vault file in its current folder with collision-safe naming.Rename a vault file in its current folder with collision-safe naming.
No input schema was published for this tool.
file_deleteprivilegedDelete one regular vault file. Requires confirm=true; dryRun can preview without confirmation.Delete one regular vault file. Requires confirm=true; dryRun can preview without confirmation.
No input schema was published for this tool.
file_read_binary_metadataRead MIME type, byte size, SHA-256, and supported image dimensions for a vault file.Read MIME type, byte size, SHA-256, and supported image dimensions for a vault file.
No input schema was published for this tool.
task_createCreate a Markdown checkbox task in a note, optionally under a heading.Create a Markdown checkbox task in a note, optionally under a heading.
No input schema was published for this tool.
task_updateUpdate one Markdown task at a zero-based line number. The optional expected line is an exact stale-read guard.Update one Markdown task at a zero-based line number. The optional expected line is an exact stale-read guard.
No input schema was published for this tool.
outlinks_getList native Obsidian wikilinks outgoing from a vault note.List native Obsidian wikilinks outgoing from a vault note.
No input schema was published for this tool.
backlinks_getList notes with native Obsidian backlinks to a vault note.List notes with native Obsidian backlinks to a vault note.
No input schema was published for this tool.
canvas_add_nodeAdd one native Canvas node by type. Omitted IDs are deterministic from the requested node content.Add one native Canvas node by type. Omitted IDs are deterministic from the requested node content.
No input schema was published for this tool.
40 of 40 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Local MCP server for Obsidian Desktop via the official Obsidian CLI.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
The crawl stopped at the 60-package limit. The rest of the tree was never resolved.
36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)
71 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.
+59 more not listed. The counts by reason above cover all of them.
Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.