Governed Obsidian vault access: hybrid retrieval, Markdown-native memory, HITL confirmations.
MCPpedia last refreshed this data
io.github.The-40-Thieves/obsidian-tc is an MCP server that governed Obsidian vault access: hybrid retrieval, Markdown-native memory, HITL confirmations. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 64/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"io-github-the-40-thieves-obsidian-tc": {
"args": [
"-y",
"obsidian-tc"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Governed Obsidian vault access: hybrid retrieval, Markdown-native memory, HITL confirmations.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
obsidian-tc: Memory-lifecycle tools overwrite unowned notes or partially commit lifecycle changes
### Summary `create_entity`, `link_entities`, `rename_entity`, `unlink_entities` and `delete_entity` regenerate a memory note's body from SQLite at the computed `memory/<type>/<name>.md` path. When a note already existed at that path and was not owned by the entity being written (a hand-authored note, or an orphan left by a different entity whose name sanitized to the same path), its entire body was overwritten on the next write naming that `(type, name)`, keeping only its frontmatter. Separatel
obsidian-tc HTTP transport lacks Origin/DNS-rebinding protection, enabling drive-by vault access on loopback
### Impact The Streamable HTTP transport was constructed without `enableDnsRebindingProtection`/`allowedHosts`/`allowedOrigins` and performed no `Origin`-header validation. With the documented `auth.mode: "none"` loopback default, a **drive-by web page could `POST http://127.0.0.1/mcp`** and receive caller `http-local` with scopes `["*"]` — full vault read/write — via DNS rebinding / a forged Origin. ### Patches Fixed in **1.3.1**. Upgrade to `>= 1.3.1`. The transport now enables DNS-rebinding
obsidian-tc Bridge tools leak denied-note data via unfiltered sibling fields
### Impact Bridge tool results filtered only the `items` array against the read ACL and passed sibling fields through unfiltered: `tasks_filter` emitted `groups` whose counts reflected denied notes, `makemd_query` returned `...result` siblings, and `list_templates` enumerated Templater template paths and parsed user-function bodies with no read-whitelist gate. A caller could infer or read data from notes outside its read ACL. ### Patches Fixed in **1.3.1**. Upgrade to `>= 1.3.1`. All path-attri
obsidian-tc: Declined human-in-the-loop confirmations can permit destructive calls over HTTP
### Summary On a Streamable HTTP deployment with `auth.jwtSecret` configured, serving a 2026-07-28-era client that declared `elicitation.form` support, a call to a dispatch-gated tool (`destructive: true`, or a scope with an HITL floor) that was offered an `inputRequired` confirmation could still complete after the human declined, cancelled, or the elicitation response was omitted or malformed, provided the client echoed the validly bound `requestState` on resubmission. The server trusted an aut
obsidian-tc tokens can access arbitrary configured vaults
### Impact Tool dispatch did not check the caller-supplied `input.vault` against the caller's bound vault (`ctx.vaultId`); the folder ACL was a single global instance and the JWT carried no vault claim. As a result, **any valid token could read, write, or delete any configured vault** by passing `input.vault`, defeating multi-tenant isolation across ~90 tool sites. (`resources/read` was the only surface that already guarded this.) ### Patches Fixed in **1.3.1** (the fix was developed on the `v1
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in productivity / security
Official MCP server for Anytype API - your encrypted, local and collaborative wiki.
Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.
MCP server for monday.com integration.
Give AI agents access to your Obsidian vault via local files or Self-hosted LiveSync.
MCP Security Weekly
Get CVE alerts and security updates for io.github.The-40-Thieves/obsidian-tc and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Governed, agent-ready Obsidian vault access over MCP.
Formerly obsidian-tc. Renamed in 2.0. The obsidian-tc command, OBSIDIAN_TC_* variables,
obsidian-tc:// resource URIs, obsidian_tc_* metrics and an existing ~/.obsidian-tc folder all
keep working through 2.x; see Upgrading from obsidian-tc.
reliquary-tc is a governed, agent-ready Model Context Protocol
server for Obsidian vaults, for humans and agents alike. Instead of raw
filesystem access to years of notes, every tool call runs through one pipeline — auth, folder
ACLs, a read-only kill switch, HITL confirmation on destructive ops, and an audit log. It also
adds fused retrieval (full-text, vector, graph) and a memory tier — episodes, decay, forgetting —
living inside your vault under that same ACL.
A full tool surface across every domain (all visible by default; a smaller set with opt-in
profile: "core"), via a 3-tool discovery facade plus the standard search/fetch pair, listed in the
tool catalog. Pitch: docs/WHY.md.
No install:
npx reliquary-tc /path/to/vault
Every note tool and lexical search work immediately. Semantic search defaults to a bundled embedder — see When NOT to use for which install methods it reaches.
For multi-vault, auth, or ACLs, use a config file:
npm install -g reliquary-tc
reliquary-tc ./reliquary-tc.config.json # Node >= 24 or Bun >= 1.1
The default local embedder is an opt-in install, so npm install -g reliquary-tc leaves it out. To use it,
install the same version: npm install -g @the-40-thieves/reliquary-tc-embedder-local@<same version> (drop -g
for a project install), or let reliquary-tc setup offer to. Ollama and hosted embedding providers need no
local embedder; without any embedder, semantic search is off and everything else still works.
Also ships as a Docker image, .mcpb bundle, and standalone binaries. More:
docs/QUICKSTART.md.
Honest guidance — this is a heavier product than most:
reliquary-tc /path/to/vault boots with auth off, no
folder ACL — fine only because it's local-only; governance is opt-in. Detail: SECURITY.md.Migrating from another MCP server: docs/CUTOVER.md.
Most Obsidian MCP projects are vault-access servers, retrieval engines, or memory engines, rarely more than on