MCPVaultBLOCK
A lightweight Model Context Protocol (MCP) server for safe Obsidian vault access
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://mcptoplist.com/server/glama%2Fbitbonsai%2Fmcpvault)
A local MCP server that lets compatible clients read, search, and edit notes in an Obsidian vault. MCPVault works directly with vault files, restricts file operations to the configured vault root, and preserves formatting for unchanged frontmatter fields.
Changelog
[](https://github.com/bitbonsai/mcpvault) [](https://www.npmjs.com/package/@bitbonsai/mcpvault) [](https://www.npmjs.com/package/@bitbonsai/mcpvault) [](https://github.com/sponsors/bitbonsai) [](https://ko-fi.com/bitbonsai) [](https://liberapay.com/bitbonsai/)
Supported clients
Configuration examples are available for Claude Desktop, Claude Code, ChatGPT Desktop (Enterprise+), OpenCode, Gemini CLI, OpenAI Codex, IntelliJ IDEA 2025.1+, Cursor,
a4ffa150b72cOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcpvault-web --env TURNSTILE_SITE_KEY=${TURNSTILE_SITE_KEY} -- npx -y mcpvault-web{
"mcpServers": {
"mcpvault-web": {
"command": "npx",
"args": [
"-y",
"mcpvault-web"
],
"env": {
"TURNSTILE_SITE_KEY": "${TURNSTILE_SITE_KEY}"
}
}
}
}Exposed tools (19)
12 read · 5 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
MCPVault | read | Local MCP server for reading, searching, and editing notes in an Obsidian vault. |
delete_note | destructive | Delete a note from the Obsidian vault (requires confirmation). Supports permanent delete, vault trash, or system trash. |
get_frontmatter | read | Extract frontmatter from a note without reading the content |
get_note_outline | read | Get the heading structure of a note without reading its full content. Returns headings with level, text, and line number. Use this first to navigate large notes efficiently, then call read_note_lines to read only the section you need. |
get_notes_info | read | Get metadata for notes without reading full content |
get_vault_stats | read | Get vault statistics including total notes, folders, size, and recently modified files. Useful for understanding vault scope before batch operations. |
list_all_tags | read | List all tags across the vault with occurrence counts. Returns both frontmatter tags and inline #hashtags, deduplicated and sorted by frequency. Useful for discovering existing tags before creating or organizing notes. |
list_directory | read | List files and directories in the vault (includes non-note filenames, while read/write tools remain note-only) |
manage_tags | destructive | Add, remove, or list tags in a note |
move_file | write | Move or rename any file in the vault (binary-safe, file-only, requires confirmation) |
move_note | write | Move or rename a note in the vault |
patch_note | write | Efficiently update part of a note by replacing a specific string. This is more efficient than rewriting the entire note for small changes. |
read_multiple_notes | read | Read multiple notes in a batch (max 10 files) |
read_note | read | Read a note from the Obsidian vault |
read_note_lines | read | Read a specific line range from a note. Use after get_note_outline to read only the section you need instead of the full file. |
search_notes | read | Search for notes in the vault by content or frontmatter |
shibumi-migration | read | Phase-gated MCPVault website migration to Bun + Hono + Alpine on Hetzner |
update_frontmatter | write | Update frontmatter of a note without changing content |
write_note | write | Write a note to the Obsidian vault |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (11 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (19)
> Settings > General > Advanced to update PATH registration. This replaces the old
re-enable the CLI to update PATH registration."_
highlight.ts
.claude/skills/triage
test: ["CMD", "bun", "-e", "fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]? `["CMD", "bun", "-e", "fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]`: `["CMD", "/busybox", "wget", "-q", "-T", "5", "-O", "/dev/null", "http://127.0.0.1:3000/"]`;
CMD wget -q -O /dev/null http://127.0.0.1:3000/healthz || exit 1
delete_note, manage_tags
await expect(fileSystem.readNote("folder/../../outside.md"))expect(filter.isAllowed("../../etc/passwd")).toBe(false);import { getObserverOptions, initFadeInObserver, reveal } from "../../src/client/fade-in-observer";import { growToContent, transitionHeightAcross, type HeightTransitionContainer } from "../../src/client/height-transition";import type { HeightTransitionContainer } from "../../src/client/height-transition";const res = await fetch(`http://127.0.0.1:${port}/healthz`);@modelcontextprotocol/server, gray-matter, trash, yaml, @clack/prompts, @modelcontextprotocol/client, @types/node, tsx
@alpinejs/csp, hono, resend, shiki, zod, @types/bun, typescript
curl -fsSL https://shibumistack.dev/install/server | bash
website-shibumi/public/mcp-obsidian-1-min.mp4
Gates applied: no_behavioural_pass.
a4ffa150b72cfull audit observations/trust-audit/mcp-server/bitbonsai__mcpvault.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | a4ffa150b72c | BLOCK | D | 69 | first audit |
Questions
What is the @bitbonsai/mcpvault MCP server?
A lightweight Model Context Protocol (MCP) server for safe Obsidian vault access
What tools does @bitbonsai/mcpvault expose?
19 in total: 12 read-only, 5 that write, and 2 that can delete or overwrite (delete_note, manage_tags). Every one is listed on this page with its risk.
Is @bitbonsai/mcpvault safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does @bitbonsai/mcpvault need?
It reads TURNSTILE_SITE_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (a4ffa150b72c), read on 2026-10-12. The repository is watched and re-audited when it changes.