Setting Up Workflowy as an MCP Server for Claude Code
github.com/mholzen/workflowyVideo Walkthrough
This video walks through the complete setup:
Install the Workflowy CLI — Using Homebrew:
brew install mholzen/workflowy/workflowy-cliConfigure your API key — Store your Workflowy API key in
~/.workflowy/api.keyFetch content using an internal link — Demonstrate retrieving Workflowy nodes via the CLI
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).
- 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 treelist— List descendants as a flat listsearch— Search nodes by text or regextargets— List shortcuts and system targets (inbox, etc.)id— Resolve short ID or target key to full UUIDreport_count— Find where most of your content livesreport_children— Find nodes with many childrenreport_created— Find oldest nodesreport_modified— Find stale, unmodified nodesreport_mirrors— Find most mirrored nodes (requires backup)
Write tools (with --expose=all):
create— Create new nodesupdate— Update node contentmove— Move node to a new parentdelete— Delete nodescomplete— Mark nodes completeuncomplete— Mark nodes incompletereplace— Bulk find-and-replace with regextransform— 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.
Related Posts
- Workflowy CLI: Transform Commands
- Workflowy CLI: Finding Hidden Mirror Bloat
- A Workflowy MCP Server with Recursive Get, Search, Replace and Reports
- A Workflowy CLI with Usage Reports