Workflowy

io.github.mholzenPublished by GitHub account mholzenv0.8.1Updated Nov 3, 2026

Create, update, complete nodes, search & replace with regex and dry run, usage reports, transforms

Overview

AI-generated overview

MCP server and CLI that connects an AI assistant to a Workflowy outline for reading, searching, editing and reporting on nodes.

What you can do
  • Read and navigate the outline: fetch a node's tree, list descendants, resolve short IDs and targets, and search by text or regex.
  • Create, update, move, delete, complete and uncomplete nodes.
  • Bulk find-and-replace with regex, including dry-run previews.
  • Transform node content: split, trim, strip punctuation, or pipe through shell commands.
  • Run usage reports on node counts, children, oldest, stale and most-mirrored nodes.
When to use it
Useful when you keep notes, tasks or project structure in Workflowy and want an assistant to search them, clean them up, bulk-rename items, or report on stale and oversized content.
Requirements
A local install of the workflowy binary (Homebrew, Scoop, Go install, prebuilt binary or Docker image) run over stdio. A Workflowy API key supplied via the WORKFLOWY_API_KEY environment variable or a key file under the user's home directory. Network access to Workflowy; the backup data method additionally needs Workflowy's Dropbox backup enabled.
Before you install
The API key grants access to your Workflowy account, so keep it out of shared configs. Write tools can create, update, move, delete and bulk-replace nodes; the README notes that omitting the expose-all flag limits the server to read-only tools, and a write-root option can sandbox writes. The transform tool can pipe node content through arbitrary shell commands, which sends that content to whatever command runs.

Installation

In SourceWeft

  1. Open Workflowy in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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.

[Go] [Homebrew] [MCP Compatible] [MIT License]

[Image]

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-id
  • Offline mode via backup files
  • CLI + MCP server in one tool
  • Caching for performance
  • Homebrew installation
  • Basic CRUD operations
  • Using short IDs (Copy Internal Link)

Quick Start

Install via Homebrew

bash
brew install mholzen/workflowy/workflowy-cli

Configure Your API Key

bash
mkdir -p ~/.workflowyecho "your-api-key-here" > ~/.workflowy/api.key

Get your API key at https://workflowy.com/api-key/

Run Your First Command

bash
# Get the top-level nodes, and nodes two levels deepworkflowy get
# Generate a report showing where most of your nodes areworkflowy 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

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

Remove —expose=all to limit to read-only tools.

Claude Desktop

Add to your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
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)

ToolDescription
workflowy_getGet a node and its descendants as a tree
workflowy_listList descendants as a flat list
workflowy_searchSearch nodes by text or regex
workflowy_targetsList shortcuts and system targets (inbox, etc.)
workflowy_idResolve short ID or target key to full UUID
workflowy_report_countFind where most of your content lives
workflowy_report_childrenFind nodes with many children
workflowy_report_createdFind oldest nodes
workflowy_report_modifiedFind stale, unmodified nodes
workflowy_report_mirrorsFind most mirrored nodes (requires backup)

Write Tools

ToolDescription
workflowy_createCreate new nodes
workflowy_updateUpdate node content
workflowy_moveMove node to a new parent
workflowy_deleteDelete nodes
workflowy_completeMark nodes complete
workflowy_uncompleteMark nodes incomplete
workflowy_replaceBulk find-and-replace with regex
workflowy_transformTransform node content (split, trim, shell commands)

CLI Features

Search Your Entire Outline

bash
# Find all TODOs (case-insensitive)workflowy search -i "foobar"
# Regex search for datesworkflowy search -E "<time.*>"
# Search within a specific subtree (using Internal Link)workflowy search "bug" --item-id https://workflowy.com/#/1bdae4aecf00

Bulk Search and Replace

bash
# Preview changes first (dry run)workflowy replace --dry-run "foo" "bar"
# Interactive confirmationworkflowy replace --interactive "foo" "bar"
# Use regex capture groupsworkflowy replace "TASK-([0-9]+)" 'ISSUE-$1'

Some Common CRUD Operations

bash
# Add a task to your inboxworkflowy create "Buy groceries" --parent-id=inbox
# Change the name of an itemworkflowy update xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --name "Project Plan v2"
# Move an item to a different parentworkflowy move <item-id> <new-parent-id>
# Mark a node as complete, using a short IDworkflowy complete https://workflowy.com/#/xxxxxxxxxxxx
# Resolve a short ID or target key to full UUIDworkflowy id inbox

Transform Content

bash
# Split a node's content by newlines into child nodesworkflowy transform <item-id> split -s "\n"
# Clean up textworkflowy transform <item-id> trimworkflowy 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

bash
# 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 20

Data Access Methods

Choose the best method for your use case:

MethodSpeedFreshnessOfflineBest For
--method=getMediumReal-timeNoSpecific items
--method=exportFast*1 min worst case (due to rate limiting)NoFull tree access
--method=backupFastestStaleYesBulk operations

*Cached after first fetch

Offline Mode with Dropbox Backup

Enable Workflowy's Dropbox backup and access your data offline:

bash
workflowy get --method=backupworkflowy search -i "project" --method=backup

Installation Options

Homebrew (macOS & Linux)

bash
brew install mholzen/workflowy/workflowy-cli

Scoop (Windows)

powershell
scoop bucket add workflowy https://github.com/mholzen/scoop-workflowyscoop install workflowy

Go Install

bash
go install github.com/mholzen/workflowy/cmd/workflowy@latest

Download Binary

Download pre-built binaries from GitHub Releases.

Docker

bash
docker run --rm -e WORKFLOWY_API_KEY=your-key ghcr.io/mholzen/workflowy:latest get

From Source

bash
git clone https://github.com/mholzen/workflowy.gitcd workflowygo build ./cmd/workflowy

Documentation

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

bash
# Morning review: find stale itemsworkflowy report modified --top-n 20
# Weekly cleanup: find oversized nodesworkflowy report count --threshold 0.05
# Find unnecessary mirrorsworkflowy report mirrors --top-n 20
# Bulk rename: update project prefixworkflowy replace "OLD-" "NEW-" --parent-id projects-folder-id
# Split pasted content into child nodesworkflowy transform <item-id> split -s "\n"

Contributing

Contributions welcome! See the Contributing Guide.

bash
# Development setupgit clone https://github.com/mholzen/workflowy.gitcd workflowygo 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

Source: README.md at commit 86e8cd5

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.8.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts