Skip to content

notes-vault-mcp 0.13.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 19:35
· 81 commits to main since this release

What's new

  • The documentation lives in docs/, sorted into install guides, how-tos, reference and explanation, with a page listing every environment variable.
  • deploy/docker/ holds the Docker Compose setup, and each GitHub release carries its compose.yml, Caddyfile and example.env, so a server installs with two curl lines. Its .env keeps the vaults in the container's volume unless you set a bucket.
  • VAULT_HTTP_STATELESS=on serves MCP without sessions, so a server restart drops no session a client holds.
  • notes-vault-mcp embed-worker --listen host:port runs the model for search by meaning in a process of its own that the server reaches through VAULT_EMBED_URL, with VAULT_EMBED_TOKEN as its secret, so the server restarts fast and stays small.
  • GET /ready answers 200 when the server is ready for requests and 503 with the names of the failing checks, for a load balancer or a readiness probe.
  • VAULT_INDEX_SNAPSHOTS=on keeps a sealed copy of each vault's search index in storage, so a restarted or moved server restores a vault's index instead of indexing and embedding every note again. A busy vault's copy is written at most once per VAULT_INDEX_SNAPSHOT_MINUTES (default 10) and only when the index changed, plus once when it goes idle and once when the server stops.
  • VAULT_FORWARDED_ALLOW_IPS names the reverse proxies, as addresses or CIDR ranges, whose X-Forwarded-For the server trusts, so rate limits count each real client; the limits are kept in the account store and survive a restart.
  • Extensions import what they build on from notes_vault_mcp.extension_api; Extensions describes each hook.
  • A vault server has one address, /mcp; another vault than the one picked when connecting is /mcp?vault=<slug>, and a slug is one lowercase word, unique among the vaults an account reaches. A new account's first vault is notes, and existing slugs that break the rule are rewritten on the first start.

Fixed

  • Two writes to one note at the same moment both land: append_file, set_status, close, log_append, write_file and the monthly log pages write over the version they read and read again when the note changed meanwhile, two backlog_add calls with one title get two notes, and a new vault's first files never overwrite a file already there.
  • WebDAV PUT honours If-Match and If-None-Match: * and answers 412 when the file changed.
  • A note's age counts calendar days in local time, so a note from five days back reads "5 days" also just after midnight.
  • A vault server's root address opens the account page instead of answering not found.
  • The access log leaves out query strings, so sign-in and invitation links never land in it.
  • An unknown vault address answers like a known one the caller cannot reach.
  • WebDAV opens vaults and talks to storage off the event loop, so a slow vault never stalls other requests or /up.
  • An edit from Obsidian over WebDAV shows in search at once instead of after up to 20 seconds.
  • close keeps a change that lands on the note while it is being archived.