{"name":"io.github.junnnnnw00/obsidian-everywhere","slug":"junnnnnw00-obsidian-everywhere","title":"Obsidian Everywhere","description":"Graph context, semantic search, guarded edits, and reviewable Git for local Obsidian vaults.","url":"https://mcp.market/server/junnnnnw00-obsidian-everywhere","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"devtools","tags":["devtools","productivity","search"],"presence":{"score":40,"stars":15,"forks":3,"downloads_week":118,"last_push_at":"2026-09-14T06:47:10.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/junnnnnw00/obsidian-everywhere","website":"https://github.com/junnnnnw00/obsidian-everywhere","version":"0.9.2","remotes":[],"packages":[{"registryType":"npm","identifier":"obsidian-everywhere","version":"0.9.2","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"-y","type":"positional"}],"packageArguments":[{"description":"Absolute path to the Obsidian vault","isRequired":true,"format":"filepath","type":"positional","valueHint":"vault_path"}]}],"tools":[{"name":"add_tags","description":"Add one or more tags to a note's frontmatter `tags` array, deduplicated against existing tags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"append_to_note","description":"Append content to an existing note — either at the end of the file, or at the end of a specific heading's section. Fails without writing anything if the heading isn't found. Reindexed immediately.","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply_template","description":"Create a new note from an existing template note (path, title, or alias), substituting Obsidian's core Templates plugin variables: {{date}}, {{date:FORMAT}}, {{time}}, {{time:FORMAT}}, {{title}}. FORMAT supports YYYY/YY/MM/DD/HH/mm/ss tokens. Templater-only syntax (<% %>) is not evaluated and is left as literal text. Fails if the target note already exists unless overwrite is set.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bulk_remove_frontmatter_field","description":"Remove exactly one frontmatter field from every note under a folder (or the whole vault) that carries it. Defaults to dry-run, enforces maxFiles, and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bulk_replace","description":"Replace text across notes selected by folder, optionally using regex. Defaults to dry-run, reports every changed file, enforces maxFiles, and creates a rollback snapshot before applying.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bulk_update_frontmatter","description":"Merge the same frontmatter fields into every note under a folder (or the whole vault). Only notes where a value actually changes are touched. Defaults to dry-run, enforces maxFiles, and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_note","description":"Create a new note in the vault. Fails if the note already exists unless overwrite is set. The note is indexed immediately — outlinks/tags in its content become real graph edges right away, visible to the very next tool call.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_note","description":"Delete a note. By default it is moved to the vault's .trash folder and deletion is refused when backlinks exist. Permanent deletion and backlink override must be explicit.","write_action":true,"price_micros":0,"input_schema":null},{"name":"find_orphans","description":"List notes with no outgoing or incoming links — useful for vault maintenance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_path","description":"Find the shortest connection path between two notes (links treated as undirected), with a one-line summary of each note along the way. Shows how two concepts are actually connected in the vault.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_unresolved","description":"List links that don't resolve to any note in the vault, grouped by target — useful for vault maintenance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_backlinks","description":"List every note that links to the given note, with the sentence/line each link appears in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_context_bundle","description":"The killer feature: given a topic (note path/title/alias, or a search phrase), pack the center note plus its most relevant 1-hop neighbors (prioritized by backlink count, then recency) into a token budget. Prefer this over read_note when you want broad context on a topic rather than just one note.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_hotkeys","description":"Read persisted Obsidian hotkey bindings and their actual command IDs from .obsidian/hotkeys.json. This includes configured commands, not the app's full runtime command registry.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_neighborhood","description":"Get the n-hop subgraph around a note: an explicit node list and edge list, treating links as undirected for hop counting.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_notes_by_tag","description":"List every note carrying a given tag.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_obsidian_settings","description":"Read the Templates folder and enabled/disabled core plugins from persisted vault settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_related","description":"Recommend similar notes that are NOT directly linked to the given note. Default method 'jaccard' is lightweight and uses shared tags and shared 1-hop neighbors. The optional method 'semantic' uses local embedding similarity and requires OBSIDIAN_EVERYWHERE_ENABLE_SEMANTIC=true because its multilingual model exceeds the default low-memory budget.","write_action":false,"price_micros":0,"input_schema":null},{"name":"git_commit","description":"Preview, then create one unsigned local commit from explicitly selected safe files. Preview binds a single-line message and exact proposed tree to a five-minute one-use approval ID. Hooks, filters, hidden paths, suspected secrets, amend, and commit-all are blocked.","write_action":false,"price_micros":0,"input_schema":null},{"name":"git_diff","description":"Read a bounded patch for safe repository-relative paths, including an explicitly selected untracked file in head mode. External diff drivers, textconv, submodules, and color are disabled; hidden/sensitive paths and configured clean filters are refused.","write_action":false,"price_micros":0,"input_schema":null},{"name":"git_log","description":"Read recent local commit history without fetching a remote or exposing remote URLs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"git_push","description":"Preview, then push exactly the current HEAD to its existing upstream branch at an operator-pinned HTTPS destination. Execution uses an exact-OID lease as a compare-and-swap guard. Caller-provided force, URLs, refs/refspecs, tags, hooks, signing, submodules, push options, and automatic retry are unavailable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"git_status","description":"Inspect the live Git status of the operator-configured repository. Hidden, excluded, and sensitive paths are counted but never named. Git paths are repository-relative. This does not fetch a remote.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_folder","description":"List the immediate child folders, Markdown notes, and attachments in one vault folder.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_notes","description":"List note paths explicitly, optionally scoped to a folder, with pagination. Use this instead of an empty full-text search when enumerating files. Pass `properties` to project specific frontmatter fields (e.g. status, project) alongside each note without reading every note individually.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tags","description":"List the full tag hierarchy (including nested #parent/child tags) with note counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"move_note","description":"Move a note to a new vault-relative path and update every resolvable wikilink/Markdown link that pointed to it. Fails if the destination exists.","write_action":false,"price_micros":0,"input_schema":null},{"name":"patch_section","description":"Replace the content under one heading, preserving the heading and the rest of the note.","write_action":true,"price_micros":0,"input_schema":null},{"name":"read_file","description":"Read any indexed vault file. Markdown delegates to read_note; PDF/Office/OpenDocument/EPUB/RTF/text/code/data files return locally extracted, paginated text; supported images return MCP image content. Legacy or unknown binary formats return metadata and a clear unsupported status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_note","description":"Read a note's full content plus its graph context header (outlinks, backlinks, tags, frontmatter). Optionally read just one heading's section.","write_action":false,"price_micros":0,"input_schema":null},{"name":"regex_search","description":"Search note bodies with a JavaScript regular expression and return matching file, line, and excerpt.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_frontmatter_field","description":"Remove exactly one YAML frontmatter field without replacing the note body.","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_tags","description":"Remove one or more tags from a note's frontmatter `tags` array.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rename_note","description":"Rename a note within its current folder and update links that point to it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rename_tag","description":"Rename a tag vault-wide, across both frontmatter `tags` arrays and inline #tag text. Defaults to dry-run and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.","write_action":false,"price_micros":0,"input_schema":null},{"name":"replace_text","description":"Replace exact text in one note without overwriting the full note. Multiple matches require all: true or an exact expectedOccurrences guard.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rollback_bulk_edit","description":"Restore every file from a rollback snapshot created by bulk_replace or rename_tag.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_files","description":"Search filenames, vault-relative paths, and extracted text from non-Markdown vault files (PDF, DOCX, PPTX, XLSX, OpenDocument, EPUB, RTF, and text/code/data files). Extraction is local, cached, and incremental.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_notes","description":"Full-text search over note content and titles, with optional tag/folder filters. Each result includes its outgoing/incoming link counts and tags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"semantic_search","description":"Optional meaning-based search via local multilingual-e5-small embeddings. Requires OBSIDIAN_EVERYWHERE_ENABLE_SEMANTIC=true because the model can exceed 500 MiB RSS; the default low-memory mode keeps graph, FTS, attachment search, and Jaccard related-note search available without loading it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_hotkey","description":"Set persisted hotkey bindings for an exact Obsidian command ID. The app may need a vault reload; command IDs cannot be runtime-validated by the standalone server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_templates_folder","description":"Set the persisted folder used by Obsidian's Templates core plugin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_frontmatter","description":"Merge one or more fields into a note's YAML frontmatter without replacing its body.","write_action":true,"price_micros":0,"input_schema":null},{"name":"validate_base","description":"Statically validate YAML and core structural fields in a .base file or fenced base block. Reports the limit that formula semantics and rendering require a live Obsidian app.","write_action":false,"price_micros":0,"input_schema":null},{"name":"vault_overview","description":"Get a high-level picture of the vault: note counts, top tags, hub notes by PageRank, and recently modified notes. Good first call at the start of a conversation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"vault_status","description":"Report mount-guard state, index freshness, indexed counts, write availability, and the last full reconciliation.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-21T05:09:07.793Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:09:07.790Z","components":{"code":{"score":25,"max":25,"notes":["33 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"obsidian-everywhere","version":"0.9.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":12,"publishedAt":"2026-08-28T01:48:49.687Z","repositoryUrl":"git+https://github.com/junnnnnw00/obsidian-everywhere.git","weeklyDownloads":118}],"repo":{"found":true,"owner":"junnnnnw00","repo":"obsidian-everywhere","archived":false,"pushedAt":"2026-09-14T06:47:10Z","stars":15,"forks":3,"openIssues":11,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/199881429?v=4","ownerCreatedAt":"2025-02-19T06:13:05Z","license":"MIT"},"icon":{"url":"https://raw.githubusercontent.com/junnnnnw00/obsidian-everywhere/main/assets/icon.png","source":"registry","width":512,"height":512},"presence":{"stars":15,"forks":3,"downloadsWeek":118,"license":"MIT","lastPushAt":"2026-09-14T06:47:10.000Z","score":40}}}},"grade_history":[],"reviews":[]}