Sandbox
@mholzen/workflowy

WorkFlowy MCP server and CLI for agents

This tool connects WorkFlowy to MCP-capable agents and to the terminal. It supports search, bulk replace, CRUD actions, reports, transforms, and offline access through backup files.

72 stars5 forksGoUpdated 1mo ago
Who it's for

Builders who want their agent to search and edit WorkFlowy instead of copying text back and forth.

What it delivers

You can have Claude Code or a CLI workflow inspect, change, and report on your WorkFlowy outline with the same tool.

What it does

MCP tools for WorkFlowy

Exposes read and write tools such as get, list, search, create, update, move, delete, complete, and uncomplete.

Bulk replace and transforms

Supports regex find-and-replace and content transforms like split, trim, cleanup, and piping text through shell commands.

Usage reports

Generates reports for content size, child count, created time, modified time, and mirrors.

Offline backup access

Can read from Workflowy backup files for faster bulk work and offline use.

CLI and agent support

Runs as a terminal command and as an MCP server for Claude Desktop and Claude Code.

How to get it

  1. 1Run
    brew install mholzen/workflowy/workflowy-cli
  2. 2Run
    mkdir -p ~/.workflowy
    echo "your-api-key-here" > ~/.workflowy/api.key
  3. 3Run
    # 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!
  4. 4Run
    brew install mholzen/workflowy/workflowy-cli
  5. 5Run
    scoop bucket add workflowy https://github.com/mholzen/scoop-workflowy
    scoop install workflowy
  6. 6Run
    go install github.com/mholzen/workflowy/cmd/workflowy@latest

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

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

brew install mholzen/workflowy/workflowy-cli

Configure Your API Key

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

Get 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=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
{
  "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

# 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/#/1bdae4aecf00

Bulk 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 inbox

Transform 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 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:

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

Installation Options

Homebrew (macOS & Linux)

brew install mholzen/workflowy/workflowy-cli

Scoop (Windows)

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

Go Install

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

Download Binary

Download pre-built binaries from GitHub Releases.

Docker

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

From Source

git clone https://github.com/mholzen/workflowy.git
cd workflowy
go 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

# 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

Files in the repo

Repository payload18 top-level entries
  • bookmarklet
  • cmd
  • docs
  • pkg
  • registries
  • test
  • .gitignore
  • .goreleaser.yaml
  • CHANGELOG.md
  • CONTRIBUTING.md
  • Dockerfile
  • glama.json
  • go.mod
  • go.sum
  • justfile
  • LICENSE
  • README.md
  • server.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
noskillish/
bankmcp

BankMCP™: your AI can now read your bank. Self-hosted, read-only MCP server for your own bank accounts via open banking (Enable Banking). Standard MCP; tested with Claude and Ollama.

177

Open-source auth gateway connecting 1400+ SaaS providers to AI agents through SDK, CLI, MCP, HTTP, and OpenAPI.

5.7k

Open-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.

23k
cinderline/
northcinder

Open-source MCP server for comparing products and asking the buyer before purchase.

1.2k