obsidian-mcp-server
Version:
MCP server for Obsidian vaults — read, write, search, and surgically edit notes, tags, and frontmatter via the Local REST API plugin. STDIO or Streamable HTTP.
24 lines (16 loc) • 2.88 kB
Markdown
---
summary: obsidian_get_note grows an opt-in includeLinks flag that surfaces the note's outgoing wikilinks and markdown links; tool descriptions, schema defaults, and recovery hints tightened across the surface.
breaking: false
---
# 3.1.3 — 2026-05-04
## Added
- **`obsidian_get_note` — `includeLinks` flag.** With `format: "full"` and `includeLinks: true`, the response carries `outgoingLinks[]`: an array of `{ target, type: 'wikilink' | 'markdown' }` parsed from the note body. Captures `[[Target]]`, `[[Target|alias]]`, `[[Target#section]]`, `![[embed]]`, and `[text](path.md)`; filters external URIs (`http:`, `mailto:`, etc.). No existence check — this is the link graph as written. Pure regex over content already returned, zero extra HTTP. Default `false` keeps the response compact. Closes [#43](https://github.com/cyanheads/obsidian-mcp-server/issues/43).
- **`package.json` `funding` field** — GitHub Sponsors and Buy Me a Coffee links so the npm registry surfaces them on the package page.
## Changed
- **Tool descriptions tightened across the surface.** `obsidian_get_note`, `obsidian_search_notes`, `obsidian_list_notes`, `obsidian_patch_note`, `obsidian_replace_in_note`, `obsidian_write_note`, `obsidian_manage_frontmatter`, `obsidian_manage_tags`, `obsidian_append_to_note`, `obsidian_execute_command`, and `obsidian_list_tags` all received a leaner first-line summary and clearer per-field `.describe()` text. No behavior change — the tools do the same things, the LLM gets a sharper picture of what each one is for.
- **Schema defaults instead of optional+manual fallback.** `obsidian_list_notes.depth`, `obsidian_search_notes.contextLength`, and `obsidian_search_notes.maxMatchesPerHit` now use Zod `.default(...)` so the default appears in the published schema and the handler reads `input.field` directly.
- **Recovery hints simplified.** Removed the "check the server startup banner" hint from every `path_forbidden` recovery — the wire payload's `activeScope` is the source of truth. The `no_active_file` recovery now points the LLM at `obsidian_open_in_ui` instead of telling it to open a note manually. The `periodic_disabled` recovery no longer instructs the LLM to change Obsidian plugin settings (which it can't) — it just tells it to switch to a path target.
- **`SectionSchema.target` description** clarifies that block references are written without the leading caret (`2d9b4a`, not `^2d9b4a`) — matches the Local REST API plugin's expectation.
## Fixed
- **README env var table** documents `MCP_PUBLIC_URL` (TLS-terminating reverse-proxy origin override) and `LOGS_DIR` (Node.js log directory) — both supported by the framework but missing from the table.
- **README** drops the stale `bun run dev:stdio` / `bun run dev:http` instructions; those scripts were removed in 3.1.1 but the README still referenced them.