A Workflowy MCP Server with Recursive Get, Search, Replace and Reports

github.com/mholzen/workflowyTable of Contents
Run the CLI as an MCP server
The CLI provides a command that will run an MCP server, with a few useful
options. Most notably, you can control the list of commands exposed as
tools (--expose) or configure where to write logs (--log-file).
By default, it only exposes Read commands.
$ ./workflowy mcp help
NAME:
workflowy mcp - Run as MCP server (stdio transport)
USAGE:
workflowy mcp [options]
DESCRIPTION:
Start the Workflowy MCP server for integration with AI assistants like Claude.
The server communicates via stdio using the Model Context Protocol (MCP).
Tool groups:
read Get, List, Search, Targets, and Report tools (default)
write Create, Update, Delete, Complete, Uncomplete, Replace tools
all All available tools
Examples:
workflowy mcp # Read-only tools (safe)
workflowy mcp --expose=all # All tools including write operations
workflowy mcp --expose=read,write # Explicit groups
workflowy mcp --expose=get,list # Specific tools only
OPTIONS:
--expose string Tools to expose: read, write, all, or comma-separated tool names (default: "read")
--help, -h show help
GLOBAL OPTIONS:
--format string, -f string Output format: list, json, or markdown (default: "list")
--log string Log level: debug, info, warn, error (default: "info")
--log-file string Write logs to file instead of stderr
--api-key-file string Path to API key file (default: "/Users/marc/.workflowy/api.key")
Claude Desktop Configuration
To configure Claude Desktop, edit the section mcpServers in the file
~/Library/Application Support/Claude/claude_desktop_config.json
to look like this:
{
"mcpServers": {
"workflowy": {
"command": "workflowy",
"args": ["mcp", "--expose=all", "--log-file=/tmp/mcp.log", "--log=debug"]
}
}
}
Confirm Available Commands
After restarting Claude Desktop, you can ask for the list of commands it has access to:

Search for a Node, Retrieve Its Children, Replace a Word
Here’s an example of a series of commands, from a single prompt:

1MB Size Limitation
Claude has an internal limit of 1MB per tool response. Depending on your Workflowy, it’s fairly easy to reach. If that happens, you simply have to be more specific with your terms.
What Next?
I hope you find this useful.
Feel free to send me feedback at marc@vonholzen.org, or submit issues, comments or a PR at github.com/mholzen/workflowy