Obsidian × MCPVault: The Decision Journal
Log decisions with frontmatter, let Claude update the outcome safely, and read the patterns each quarter.
Run this workflow
CI-verified, 3/3 fixtures passing.
Intended Use
Anyone who wants a decision journal where MCPVault's update_frontmatter records outcomes without touching note bodies, and read_multiple_notes feeds the journal back for a quarterly pattern read.
Not for
- One-off notes (the value compounds over time)
- People who won't install Claude Desktop
The Stack
Tested Against
mcpvault@latestclaude-desktopnode@20.xobsidian@1.7.xSide effects & data flow
- Network
- Anthropic API, only in the non-CI Claude step
- Writes
- ./vault/Decisions/, claude_desktop_config.json
- Credentials
- Claude Desktop login, for the update/review step only
Data privacy
- Anthropic (Claude), only in the non-CI agent step ← your decision notes and outcomes (retention: per Anthropic's API/data policy)
Prerequisites
- Claude Desktop, https://claude.ai/download
- Node 20+ (MCPVault runs via npx)
- Back up your vault first (git ideal)
Steps
- 1
Validate config and scaffold a decision note with open frontmatter
CI validates the MCPVault config and creates a decision note carrying `status: open` in its frontmatter, the exact field MCPVault's update_frontmatter will later flip to resolved.
cat > claude_desktop_config.json <<'EOF' { "mcpServers": { "obsidian": { "command": "npx", "args": ["@bitbonsai/mcpvault@latest", "/Users/you/Documents/MyVault"] } } } EOF node -e 'const c=JSON.parse(require("fs").readFileSync("claude_desktop_config.json","utf8"));const o=c.mcpServers.obsidian;if(o.command==="npx"&&o.args.some(a=>a.indexOf("@bitbonsai/mcpvault")===0)){console.log("config OK: npx -> @bitbonsai/mcpvault")}else{console.log("BAD");process.exit(1)}' mkdir -p vault/Decisions cat > vault/Decisions/2026-06-08-vendor-choice.md <<'EOF' --- status: open --- Options: vendor A vs vendor B. Current thinking: leaning A. EOF grep -q '^status: open' vault/Decisions/2026-06-08-vendor-choice.md && echo "decision scaffolded with status: open" - 2
Update outcomes and read patterns (the Claude step, not checked by CI)
After it plays out, ask Claude to set status to resolved and add an outcome field (update_frontmatter touches only the metadata). Each quarter, have it read all of Decisions/ (read_multiple_notes) and write a pattern review. Runs a model, so CI doesn't run it.
Eval, 3 fixtures
Last passed: verified 13d agoconfig-validcontainstimeout 30s · max $0Expected:
config OK: npx -> @bitbonsai/mcpvaultdecision-frontmattercontainstimeout 30s · max $0Expected:
decision scaffolded with status: openclean-exitexit_codetimeout 30s · max $0Expected:
0
Results
The long-game pick, the most useful note in your vault over a year, from the WebAfterAI Part 2 guide.
Did this work for you?
Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.
Liked this workflow?
Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).