Setting Up Workflowy as an MCP Server for Claude Code

January 22, 2026

Github github.com/mholzen/workflowy

Video Walkthrough

This video walks through the complete setup:

  1. Install the Workflowy CLI — Using Homebrew: brew install mholzen/workflowy/workflowy-cli

  2. Configure your API key — Store your Workflowy API key in ~/.workflowy/api.key

  3. Fetch content using an internal link — Demonstrate retrieving Workflowy nodes via the CLI

  4. Add Workflowy as an MCP server — Configure Claude Code to use the Workflowy MCP server

claude mcp add --transport=stdio workflowy -- workflowy mcp --expose=all

Remove --expose=all if you want to limit the tools to read only tools, or consider using --write-root-id (see Sandboxed Write Access below).

  1. Build from Workflowy specs — Start building with Claude Code using specifications defined in Workflowy

Why This Matters

Keeping specifications, requirements, and design notes in Workflowy means they stay organized and easy to edit. With the MCP integration, Claude Code can read directly from your Workflowy, letting you iterate on specs without copy-pasting context into every conversation. Once Claude finishes building something, you can instruct it to mark the corresponding spec as complete — specs flow to code, and completion status flows back.

Available MCP Tools

The MCP server exposes these tools to Claude:

Read tools (default):

  • get — Get a node and its descendants as a tree
  • list — List descendants as a flat list
  • search — Search nodes by text or regex
  • targets — List shortcuts and system targets (inbox, etc.)
  • id — Resolve short ID or target key to full UUID
  • report_count — Find where most of your content lives
  • report_children — Find nodes with many children
  • report_created — Find oldest nodes
  • report_modified — Find stale, unmodified nodes
  • report_mirrors — Find most mirrored nodes (requires backup)

Write tools (with --expose=all):

  • create — Create new nodes
  • update — Update node content
  • move — Move node to a new parent
  • delete — Delete nodes
  • complete — Mark nodes complete
  • uncomplete — Mark nodes incomplete
  • replace — Bulk find-and-replace with regex
  • transform — Transform node content (split, trim, shell commands)

Sandboxed Write Access

Giving an AI full write access to years of notes can feel risky. The --write-root-id flag restricts writes to a specific subtree:

claude mcp add --transport=stdio workflowy -- workflowy mcp --write-root-id=inbox

or in Claude’s configuration files.

{
  "mcpServers": {
    "workflowy": {
      "command": "workflowy",
      "args": ["mcp", "--expose=all", "--write-root-id=inbox"]
    }
  }
}

Claude can still read everything for context, but writes are contained to your inbox (or whichever node you specify). The tool descriptions update dynamically to show this restriction.