Obsidian × MCPVault: The Argument Builder
Give Claude a thesis and have it assemble a sourced, ranked argument from everything you've ever written.
Run this workflow
CI-verified, 3/3 fixtures passing.
Intended Use
Anyone writing to persuade who wants Claude to pull supporting evidence from the whole vault (BM25-ranked search_notes + read_multiple_notes) into a structured argument with the strongest evidence first and links back to sources.
Not for
- Thin vaults with little to draw on
- 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/Arguments/, claude_desktop_config.json
- Credentials
- Claude Desktop login, for the assembly step only
Data privacy
- Anthropic (Claude), only in the non-CI agent step ← the thesis and the notes it ranks as evidence (retention: per Anthropic's API/data policy)
Prerequisites
- Claude Desktop, https://claude.ai/download
- Node 20+ (MCPVault runs via npx)
- A vault with enough notes to argue from
Steps
- 1
Validate config and scaffold the Arguments/ folder
CI validates the MCPVault config and creates the Arguments/ target the assembled case is written to.
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/Arguments test -d vault/Arguments && echo "arguments ready: vault/Arguments/" - 2
Assemble the argument (the Claude step, not checked by CI)
Give Claude your thesis and have it search the whole vault for evidence, organize it strongest-first, and save Arguments/<thesis>.md with links back to each source. Uses BM25-ranked search_notes + read_multiple_notes; 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/mcpvaultarguments-readycontainstimeout 30s · max $0Expected:
arguments ready: vault/Arguments/clean-exitexit_codetimeout 30s · max $0Expected:
0
Results
Where the BM25-ranked search earns its keep, 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).