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.
Build this with your agent
One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.
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 todayconfig-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.
Related workflows
- One shared memory for every coding agent: prove the configs actually point at the same server
- Read your token receipts right: volume and cost are different leaderboards
- Pick a model with evidence: a GitHub Models bake-off that fits the free cap
- Track a tool's hype curve across any Substack (no API key)
- Fabric + Fable 5: Get Through Your Reading Pile
- Obsidian × MCPVault: Write a Note from Any MCP Client
Liked this workflow?
Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).