MCP server (for LLM assistants)
WackyTracky can run as an MCP server, letting an LLM assistant (for example Claude Desktop or Cursor) read and manage your tasks for you — “add`"buy milk” to my shopping list”, "`what’s on my work list?”, “mark task X done”.
The MCP server uses the same backend and configuration as the normal server, so it reads and writes the same tasks (e.g. your todo.txt files).
HTTP (Streamable HTTP)
When the WackyTracky HTTP server is running, MCP is available at
/mcp on the same origin (for example http://localhost:8080/mcp).
This is the recommended transport when your instance is reachable over
the network.
Configure your MCP client with the URL and any credentials your deployment requires:
{
"mcpServers": {
"wacky-tracky": {
"url": "http://localhost:8080/mcp"
}
}
}
HTTP MCP requires a Bearer API key (Authorization: Bearer wt_…),
not the browser session cookie. See
Authentication.
Stdio (local subprocess)
For clients that launch a local MCP subprocess, run the binary with the
mcp argument:
wt mcp
This starts the server on standard input/output and waits for an MCP
client to connect. You normally don’t run this by hand — your LLM client
launches it for you (see below). It reads config.yaml from the usual
locations (current directory, ../, or /config).
Point your client at the WackyTracky binary with the mcp argument.
Most clients use a JSON config like this:
{
"mcpServers": {
"wacky-tracky": {
"command": "wt",
"args": ["mcp"]
}
}
}
If the data directory for the todo.txt backend is not discoverable from
where the client launches the process, set it via environment or run
from a directory that contains your config.yaml:
{
"mcpServers": {
"wacky-tracky": {
"command": "/usr/local/bin/wt",
"args": ["mcp"],
"env": { "DATABASE_DRIVER": "todotxt", "DATABASE_DATABASE": "/path/to/your/todo-dir" }
}
}
}
The exact location of this config differs per client (e.g. Claude
Desktop’s claude_desktop_config.json, or a .cursor/mcp.json
for Cursor).
Available tools
| Tool | Description |
|---|---|
|
List all task lists with their IDs, titles, and item counts. |
|
List the tasks in a list (including subtasks).
Requires a |
|
Search tasks across all lists ( |
|
Create a task (todo.txt-style content; optional
|
|
Replace a task’s content. |
|
Mark a task as done. |
|
Create a new list. |
The tools call the same operations as the HTTP API, so
behaviour (hide-at-times filtering, todo.txt parsing of
#tags/@contexts, etc.) is identical.
Security note
The MCP server has the same access to your tasks as the WackyTracky
server itself, with no extra authentication — anything that can launch
wt mcp can read and modify your tasks. Only configure it for LLM
clients you trust, and treat it like giving that client direct access to
your task data.