ResearchOpen SourceFreeActiveMachine-verified· intermediate · ~10 min setup

Obsidian × MCPVault: The Decision Journal

Log decisions with frontmatter, let Claude update the outcome safely, and read the patterns each quarter.

by Shilpa Mitra· verified 13d ago· v1.0.0

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.x

Side 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. 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. 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 ago
  • config-validcontainstimeout 30s · max $0

    Expected: config OK: npx -> @bitbonsai/mcpvault

  • decision-frontmattercontainstimeout 30s · max $0

    Expected: decision scaffolded with status: open

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 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).