AgentsOpen SourceFreeActiveMachine-verified· beginner · ~10 min setup

Meeting Processor: Raw Dump to Structured Note

Paste a raw meeting dump into your vault and have Claude turn it into action items, decisions, and links.

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

Run this workflow

CI-verified, 4/4 fixtures passing.

Intended Use

Anyone who brain-dumps meeting notes and wants Claude to turn them into a structured, linked record (action items with assignees and dates, decisions, tags) via the obsidian-mcp server.

Not for

  • People who won't install Claude Desktop
  • Vaults you haven't backed up, the MCP server can write to them

The Stack

Tested Against

obsidian-mcp@0.xclaude-desktopnode@20.x

Side effects & data flow

Network
Anthropic API, only in the non-CI Claude step
Writes
./vault/Meetings/, claude_desktop_config.json
Credentials
Claude Desktop login, for the structuring step only

Data privacy

  • Anthropic (Claude), only in the non-CI agent step your meeting notes (retention: per Anthropic's API/data policy)

Prerequisites

  • Claude Desktop, https://claude.ai/download
  • Node 20+ (obsidian-mcp runs via npx)
  • Back up your vault (git ideal), the server can write to it

Steps

  1. 1

    Check your toolchain

    The config validation only needs Node. Claude Desktop is the agent for the final step.

    command -v node >/dev/null 2>&1 || { echo "MISSING required: node"; exit 1; }
    command -v claude >/dev/null 2>&1 || echo "optional: Claude Desktop (for the structuring step)"
    echo "preflight OK"
  2. 2

    Validate the Claude Desktop config (Option A)

    The #1 setup failure is a malformed config. We write the exact Option A block from the guide and prove it parses and points npx at obsidian-mcp.

    cat > claude_desktop_config.json <<'EOF'
    {
      "mcpServers": {
        "obsidian": {
          "command": "npx",
          "args": ["-y", "obsidian-mcp", "/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.includes("obsidian-mcp")){console.log("config OK: npx -> obsidian-mcp")}else{console.log("BAD");process.exit(1)}'
  3. 3

    Scaffold the inbox

    Create Inbox/ and Meetings/ and drop a sample raw meeting note to process.

    mkdir -p vault/Inbox vault/Meetings
    printf '%s\n' 'Synced with Alex re: launch. Decided to ship Friday. Alex owns QA.' > vault/Inbox/raw.md
    echo "inbox ready: vault/Inbox/raw.md"
  4. 4

    Structure it (the Claude step, not checked by CI)

    With obsidian-mcp connected, drop your dump in Inbox/raw.md and tell Claude: turn it into Meetings/{today}-{topic}.md with action items (assignee + due date), a Decisions section, links to related Projects/ notes, and tags, then clear the inbox. Save that as a Claude Project instruction. This step needs Claude Desktop and is non-deterministic, so CI doesn't run it.

Eval, 4 fixtures

Last passed: verified 10d ago
  • clean-exitexit_codetimeout 15s · max $0

    Expected: 0

  • config-validcontainstimeout 15s · max $0

    Expected: config OK: npx -> obsidian-mcp

  • inbox-readycontainstimeout 15s · max $0

    Expected: inbox ready: vault/Inbox/raw.md

  • preflight-okcontainstimeout 15s · max $0

    Expected: preflight OK

Results

The instant-payoff pick from the WebAfterAI guide.