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

December 19, 2025

workflowy-mcp

Github github.com/mholzen/workflowy

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

claude-workflowy-commands

Search for a Node, Retrieve Its Children, Replace a Word

Here’s an example of a series of commands, from a single prompt:

claude-search-get-replace

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