{
  "markdown": "# Workflowy MCP Server & CLI\n\nA feature-rich **Model Context Protocol (MCP) server** and **Command Line Interface (CLI)** for [Workflowy](https://workflowy.com) 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.\n\n[![Go](https://img.shields.io/badge/Go-1.24.3+-00ADD8?logo=go&logoColor=white)](https://go.dev/) [![Homebrew](https://img.shields.io/badge/Homebrew-Available-FBB040?logo=homebrew&logoColor=white)](https://github.com/mholzen/workflowy) [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-8A2BE2)](https://modelcontextprotocol.io) [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n\n<a href=\"https://glama.ai/mcp/servers/@mholzen/workflowy\">\n  <img width=\"380\" height=“200\" src=\"https://glama.ai/mcp/servers/@mholzen/workflowy/badge\" />\n</a>\n\n## Why This Workflowy MCP Server?\n\n - Full-text search with regex\n - Bulk search & replace\n - Content transformation (split, clean, pipe to LLMs)\n - Usage reports (stale nodes, size analysis, mirrors)\n - Sandboxed AI access with `--write-root-id`\n - Offline mode via backup files\n - CLI + MCP server in one tool\n - Caching for performance\n - Homebrew installation\n - Basic CRUD operations\n - Using short IDs (Copy Internal Link)\n\n## Quick Start\n\n### Install via Homebrew\n\n```bash\nbrew install mholzen/workflowy/workflowy-cli\n```\n\n### Configure Your API Key\n\n```bash\nmkdir -p ~/.workflowy\necho \"your-api-key-here\" > ~/.workflowy/api.key\n```\n\nGet your API key at https://workflowy.com/api-key/\n\n### Run Your First Command\n\n```bash\n# Get the top-level nodes, and nodes two levels deep\nworkflowy get\n\n# Generate a report showing where most of your nodes are\nworkflowy report count | pbcopy   # paste directly into Workflowy!\n```\n\nUse `pbcopy` on macOS, `clip` on Windows, `wl-copy` on Linux, or `xclip` for X11 systems.\n\n\n## Use with Claude Desktop or Claude Code\n\n### Claude Code\n\n```bash\nclaude mcp add --transport=stdio workflowy -- workflowy mcp --expose=all\n```\n\nRemove `—expose=all` to limit to read-only tools.\n\n### Claude Desktop\n\nAdd to your configuration file:\n\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"workflowy\": {\n      \"command\": \"workflowy\",\n      \"args\": [\"mcp\", \"--expose=all\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop and start asking Claude to work with your Workflowy!\n\n## MCP Tools for AI Assistants\n\n### Read Tools (Safe)\n| Tool | Description |\n|------|-------------|\n| `workflowy_get` | Get a node and its descendants as a tree |\n| `workflowy_list` | List descendants as a flat list |\n| `workflowy_search` | Search nodes by text or regex |\n| `workflowy_targets` | List shortcuts and system targets (inbox, etc.) |\n| `workflowy_id` | Resolve short ID or target key to full UUID |\n| `workflowy_report_count` | Find where most of your content lives |\n| `workflowy_report_children` | Find nodes with many children |\n| `workflowy_report_created` | Find oldest nodes |\n| `workflowy_report_modified` | Find stale, unmodified nodes |\n| `workflowy_report_mirrors` | Find most mirrored nodes (requires backup) |\n\n### Write Tools\n| Tool | Description |\n|------|-------------|\n| `workflowy_create` | Create new nodes |\n| `workflowy_update` | Update node content |\n| `workflowy_move` | Move node to a new parent |\n| `workflowy_delete` | Delete nodes |\n| `workflowy_complete` | Mark nodes complete |\n| `workflowy_uncomplete` | Mark nodes incomplete |\n| `workflowy_replace` | Bulk find-and-replace with regex |\n| `workflowy_transform` | Transform node content (split, trim, shell commands) |\n\n## CLI Features\n\n### Search Your Entire Outline\n\n```bash\n# Find all TODOs (case-insensitive)\nworkflowy search -i \"foobar\"\n\n# Regex search for dates\nworkflowy search -E \"<time.*>\"\n\n# Search within a specific subtree (using Internal Link)\nworkflowy search \"bug\" --item-id https://workflowy.com/#/1bdae4aecf00\n```\n\n### Bulk Search and Replace\n\n```bash\n# Preview changes first (dry run)\nworkflowy replace --dry-run \"foo\" \"bar\"\n\n# Interactive confirmation\nworkflowy replace --interactive \"foo\" \"bar\"\n\n# Use regex capture groups\nworkflowy replace \"TASK-([0-9]+)\" 'ISSUE-$1'\n```\n\n### Some Common CRUD Operations\n\n```bash\n# Add a task to your inbox\nworkflowy create \"Buy groceries\" --parent-id=inbox\n\n# Change the name of an item\nworkflowy update xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --name \"Project Plan v2\"\n\n# Move an item to a different parent\nworkflowy move <item-id> <new-parent-id>\n\n# Mark a node as complete, using a short ID\nworkflowy complete https://workflowy.com/#/xxxxxxxxxxxx\n\n# Resolve a short ID or target key to full UUID\nworkflowy id inbox\n```\n\n### Transform Content\n\n```bash\n# Split a node's content by newlines into child nodes\nworkflowy transform <item-id> split -s \"\\n\"\n\n# Clean up text\nworkflowy transform <item-id> trim\nworkflowy transform <item-id> no-punctuation\n\n# Pipe content through any shell command (e.g., an LLM)\nworkflowy transform <item-id> -x 'echo {} | llm \"summarize this\"'\n```\n\n\n### Usage Reports\n\n```bash\n# Where is most of my content?\nworkflowy report count --threshold 0.01\n\n# Which nodes have the most children?\nworkflowy report children --top-n 20\n\n# Find stale content (oldest modified)\nworkflowy report modified --top-n 50\n\n# Find most mirrored nodes (requires backup)\nworkflowy report mirrors --top-n 20\n```\n\n## Data Access Methods\n\nChoose the best method for your use case:\n\n| Method | Speed | Freshness | Offline | Best For |\n|--------|-------|-----------|---------|----------|\n| `--method=get` | Medium | Real-time | No | Specific items |\n| `--method=export` | Fast* | 1 min worst case (due to rate limiting) | No | Full tree access |\n| `--method=backup` | Fastest | Stale | **Yes** | Bulk operations |\n\n*Cached after first fetch\n\n### Offline Mode with Dropbox Backup\n\nEnable Workflowy's Dropbox backup and access your data offline:\n\n```bash\nworkflowy get --method=backup\nworkflowy search -i \"project\" --method=backup\n```\n\n## Installation Options\n\n### Homebrew (macOS & Linux)\n\n```bash\nbrew install mholzen/workflowy/workflowy-cli\n```\n\n### Scoop (Windows)\n\n```powershell\nscoop bucket add workflowy https://github.com/mholzen/scoop-workflowy\nscoop install workflowy\n```\n\n### Go Install\n\n```bash\ngo install github.com/mholzen/workflowy/cmd/workflowy@latest\n```\n\n### Download Binary\n\nDownload pre-built binaries from [GitHub Releases](https://github.com/mholzen/workflowy/releases/latest).\n\n### Docker\n\n```bash\ndocker run --rm -e WORKFLOWY_API_KEY=your-key ghcr.io/mholzen/workflowy:latest get\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/mholzen/workflowy.git\ncd workflowy\ngo build ./cmd/workflowy\n```\n\n## Documentation\n\n- [Full CLI Reference](docs/CLI.md)\n- [MCP Server Guide](docs/MCP.md)\n- [API Reference](https://workflowy.com/api-reference/)\n- [Changelog](CHANGELOG.md)\n\n## Examples\n\n### AI Assistant Workflows\n\nAsk Claude:\n- \"Search my Workflowy for all items containing 'meeting notes'\"\n- \"Show me nodes I haven't touched in 6 months\"\n- \"Replace all 'v1' with 'v2' in my Project A folder\"\n- \"What's taking up the most space in my outline?\"\n- \"Which nodes are mirrored the most?\"\n- \"Move this item to my inbox\"\n\n### CLI Workflows\n\n```bash\n# Morning review: find stale items\nworkflowy report modified --top-n 20\n\n# Weekly cleanup: find oversized nodes\nworkflowy report count --threshold 0.05\n\n# Find unnecessary mirrors\nworkflowy report mirrors --top-n 20\n\n# Bulk rename: update project prefix\nworkflowy replace \"OLD-\" \"NEW-\" --parent-id projects-folder-id\n\n# Split pasted content into child nodes\nworkflowy transform <item-id> split -s \"\\n\"\n```\n\n## Contributing\n\nContributions welcome! See the [Contributing Guide](CONTRIBUTING.md).\n\n```bash\n# Development setup\ngit clone https://github.com/mholzen/workflowy.git\ncd workflowy\ngo test ./...\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n\n## Acknowledgments\n\n- Thanks to Andrew Lisy for requesting a method to sandbox write commands\n- Thanks to Craig P. Motlin for pointing out mirrors are defined in the backup files\n",
  "bytes": 8232,
  "sha": "7cde334e1e57af689c13bcca8971e35edc250c64e91accf50588c81f3982453f",
  "repo_slug": "mholzen/workflowy",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mholzen_workflowy_0bb1bafa/readme"
}