The Workflowy MCP server enables AI assistants to comprehensively manage Workflowy data through tools for node manipulation, search, analytics, and configuration.
Node Management
Create nodes with customizable name, note, parent, position, and layout mode (bullets, todo, headers)
Update existing node properties (name, note, layout mode)
Delete nodes permanently
Mark nodes as complete or uncomplete
Data Retrieval
Get nodes hierarchically with descendants (
workflowy_get) or as flat lists (workflowy_list)Configurable recursion depth and filtering options
List available shortcuts and system targets like "inbox" (
workflowy_targets)
Search & Replace
Search node names using text or regular expressions with case-sensitive/insensitive matching
Bulk find-and-replace operations with regex and capture group support
Dry-run preview mode for safe bulk operations
Target specific subtrees or entire workspace
Analytics & Reporting
Rank nodes by descendant count or immediate children count
Identify oldest nodes by creation or modification date
Analyze content distribution across workspace
Configuration & Safety
Configurable access levels (read-only or full read/write) via
--exposeflagsSupports API keys, environment variables, or local backup files for offline access
Safety features including dry-run previews and depth limits
Supports reading from Workflowy backup files stored in Dropbox for offline access and faster operations without API calls or rate limits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@workflowysearch for all my TODO items in the project plan"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Workflowy MCP Server & CLI
A feature-rich Model Context Protocol (MCP) server and Command Line Interface (CLI) for Workflowy written in Go. Connect your AI assistant (Claude, ChatGPT, etc.) to your Workflowy data or run commands from a terminal emulator or script, including search, bulk replace, usage reports, and offline access capabilities.
Why This Workflowy MCP Server?
Full-text search with regex
Bulk search & replace
Content transformation (split, clean, pipe to LLMs)
Usage reports (stale nodes, size analysis, mirrors)
Sandboxed AI access with
--write-root-idOffline mode via backup files
CLI + MCP server in one tool
Caching for performance
Homebrew installation
Basic CRUD operations
Using short IDs (Copy Internal Link)
Related MCP server: WorkFlowy MCP Server
Quick Start
Install via Homebrew
brew install mholzen/workflowy/workflowy-cliConfigure Your API Key
mkdir -p ~/.workflowy
echo "your-api-key-here" > ~/.workflowy/api.keyGet your API key at https://workflowy.com/api-key/
Run Your First Command
# Get the top-level nodes, and nodes two levels deep
workflowy get
# Generate a report showing where most of your nodes are
workflowy report count | pbcopy # paste directly into Workflowy!Use pbcopy on macOS, clip on Windows, wl-copy on Linux, or xclip for X11 systems.
Use with Claude Desktop or Claude Code
Claude Code
claude mcp add --transport=stdio workflowy -- workflowy mcp --expose=allRemove —expose=all to limit to read-only tools.
Claude Desktop
Add to your configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"workflowy": {
"command": "workflowy",
"args": ["mcp", "--expose=all"]
}
}
}Restart Claude Desktop and start asking Claude to work with your Workflowy!
MCP Tools for AI Assistants
Read Tools (Safe)
Tool | Description |
| Get a node and its descendants as a tree |
| List descendants as a flat list |
| Search nodes by text or regex |
| List shortcuts and system targets (inbox, etc.) |
| Resolve short ID or target key to full UUID |
| Find where most of your content lives |
| Find nodes with many children |
| Find oldest nodes |
| Find stale, unmodified nodes |
| Find most mirrored nodes (requires backup) |
Write Tools
Tool | Description |
| Create new nodes |
| Update node content |
| Move node to a new parent |
| Delete nodes |
| Mark nodes complete |
| Mark nodes incomplete |
| Bulk find-and-replace with regex |
| Transform node content (split, trim, shell commands) |
CLI Features
Search Your Entire Outline
# Find all TODOs (case-insensitive)
workflowy search -i "foobar"
# Regex search for dates
workflowy search -E "<time.*>"
# Search within a specific subtree (using Internal Link)
workflowy search "bug" --item-id https://workflowy.com/#/1bdae4aecf00Bulk Search and Replace
# Preview changes first (dry run)
workflowy replace --dry-run "foo" "bar"
# Interactive confirmation
workflowy replace --interactive "foo" "bar"
# Use regex capture groups
workflowy replace "TASK-([0-9]+)" 'ISSUE-$1'Some Common CRUD Operations
# Add a task to your inbox
workflowy create "Buy groceries" --parent-id=inbox
# Change the name of an item
workflowy update xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --name "Project Plan v2"
# Move an item to a different parent
workflowy move <item-id> <new-parent-id>
# Mark a node as complete, using a short ID
workflowy complete https://workflowy.com/#/xxxxxxxxxxxx
# Resolve a short ID or target key to full UUID
workflowy id inboxTransform Content
# Split a node's content by newlines into child nodes
workflowy transform <item-id> split -s "\n"
# Clean up text
workflowy transform <item-id> trim
workflowy transform <item-id> no-punctuation
# Pipe content through any shell command (e.g., an LLM)
workflowy transform <item-id> -x 'echo {} | llm "summarize this"'Usage Reports
# Where is most of my content?
workflowy report count --threshold 0.01
# Which nodes have the most children?
workflowy report children --top-n 20
# Find stale content (oldest modified)
workflowy report modified --top-n 50
# Find most mirrored nodes (requires backup)
workflowy report mirrors --top-n 20Data Access Methods
Choose the best method for your use case:
Method | Speed | Freshness | Offline | Best For |
| Medium | Real-time | No | Specific items |
| Fast* | 1 min worst case (due to rate limiting) | No | Full tree access |
| Fastest | Stale | Yes | Bulk operations |
*Cached after first fetch
Offline Mode with Dropbox Backup
Enable Workflowy's Dropbox backup and access your data offline:
workflowy get --method=backup
workflowy search -i "project" --method=backupInstallation Options
Homebrew (macOS & Linux)
brew install mholzen/workflowy/workflowy-cliScoop (Windows)
scoop bucket add workflowy https://github.com/mholzen/scoop-workflowy
scoop install workflowyGo Install
go install github.com/mholzen/workflowy/cmd/workflowy@latestDownload Binary
Download pre-built binaries from GitHub Releases.
Docker
docker run --rm -e WORKFLOWY_API_KEY=your-key ghcr.io/mholzen/workflowy:latest getFrom Source
git clone https://github.com/mholzen/workflowy.git
cd workflowy
go build ./cmd/workflowyDocumentation
Examples
AI Assistant Workflows
Ask Claude:
"Search my Workflowy for all items containing 'meeting notes'"
"Show me nodes I haven't touched in 6 months"
"Replace all 'v1' with 'v2' in my Project A folder"
"What's taking up the most space in my outline?"
"Which nodes are mirrored the most?"
"Move this item to my inbox"
CLI Workflows
# Morning review: find stale items
workflowy report modified --top-n 20
# Weekly cleanup: find oversized nodes
workflowy report count --threshold 0.05
# Find unnecessary mirrors
workflowy report mirrors --top-n 20
# Bulk rename: update project prefix
workflowy replace "OLD-" "NEW-" --parent-id projects-folder-id
# Split pasted content into child nodes
workflowy transform <item-id> split -s "\n"Contributing
Contributions welcome! See the Contributing Guide.
# Development setup
git clone https://github.com/mholzen/workflowy.git
cd workflowy
go test ./...License
MIT — see LICENSE
Acknowledgments
Thanks to Andrew Lisy for requesting a method to sandbox write commands
Thanks to Craig P. Motlin for pointing out mirrors are defined in the backup files