Skip to main content

Let an agent run your to-do list

Looking for a todo MCP server that acts on real files instead of a hosted database? taskforge ships one as a subcommand, taskforge mcp --stdio, for your Obsidian vault. Point Claude Desktop or another MCP client at it and the agent adds, searches, edits, and completes tasks through a small set of tools. It runs on your machine and edits the same markdown files the app does. No hosted server, no API key.

Coming in TaskForge 3.0

The TaskForge CLI and MCP server ship with the TaskForge 3.0 release. Everything on this page describes how they will work at launch. The TaskForge app is available today.

MCP or the CLI?

Prefer the MCP tools when your agent already has an MCP connection to TaskForge. They are typed, return structured errors the agent can self-correct against, and need nothing on your PATH. Reach for the CLI instead from shell contexts with no MCP connection: scripts, cron, CI, or a coding agent working in a repo checkout. Both drive the same engine with identical semantics, so pick whichever your runtime already has wired up. Editing vault files by hand is the last resort.

Install

Recommended: npx

Add this to your MCP client's config. npx fetches taskforge-md the first time it runs, so there is nothing to install ahead of time.

Claude Desktop, one click

Prefer a guided install? Download the taskforge bundle (the .mcpb file) and open it. Claude Desktop walks you through the setup and asks for your vault folder.

Available at launch
{
  "mcpServers": {
    "taskforge": {
      "command": "npx",
      "args": ["-y", "taskforge-md", "mcp", "--stdio"],
      "env": {
        "TASKFORGE_VAULT": "/path/to/your/vault"
      }
    }
  }
}

Built taskforge from source instead of using npx? Point the config at the binary directly:

Available at launch
"command": "taskforge",
"args": ["mcp", "--stdio"]

Desktop only, since that is where MCP clients live. taskforge ships as a single native binary for macOS, Windows, and Linux, and the MCP server is one of its subcommands.

The full tool set

22 tools in total, covering the whole task lifecycle: create, read, update, complete, archive, and delete, each with a bulk variant; move, reparent, and convert between an inline line and a TaskNotes file; a lint check before you write a line; a doctor call for vault health; and schema and list resources so the agent learns your format before it acts. The six below are the ones you will reach for most. Every call re-reads the vault from disk, so the agent always acts on the current files.

query_tasks Search and filter tasks, or read a saved list. Read-only. read-only
get_task Read one task and its content hash. Read-only. read-only
add_task Create a task in the vault's default target, in your format. writes
update_task Change a task's status, priority, due date, title, or tags. writes
complete_task Complete a task; returns the next occurrence if it recurs. writes, not idempotent
delete_task Delete a task. The model must echo the exact current title back, a guard against acting on a stale or hallucinated id. destructive

Each tool carries annotations, so a client knows at a glance which calls only read, which write, and which one deletes. The rest of the set adds bulk_add_tasks, bulk_update_tasks, bulk_complete_tasks, bulk_delete_tasks, get_tasks, archive_task, move_task, bulk_move_tasks, convert_task, bulk_convert_tasks, outdent_task, bulk_reparent_tasks, lint_task, doctor, list_task_lists, and get_schema.

Three resources

Alongside the tools, the server exposes read-only context so the agent learns your vault's rules before it acts:

taskforge://schema The machine-readable task dialect: status symbols, date format, custom fields, write targets.
taskforge://agents-guide The plain-language guide to your vault's task conventions.
taskforge://lists Your saved task lists and how to add a task to each one.

One requirement: the vault contract

The server reads the contract files TaskForge writes into your vault, taskforge/schema.json and taskforge/agents.md, to learn your exact task format. Open the vault in TaskForge 3.0 or later at least once, go to Settings, AI & Agents, and leave "Generate agent files" on. If the vault has never been opened in a recent build, the server falls back to generic defaults and warns the client.

If it cannot find your vault

The server always starts, even before it knows where your vault is, so Claude Desktop never shows an opaque "server failed to start". When a tool call cannot resolve a vault, it returns a plain error the agent can relay: set the TASKFORGE_VAULT environment variable to your vault path, or reinstall the bundle and enter the vault directory when prompted.

Local only

taskforge mcp --stdio reads and writes the markdown files in the vault you configure and nothing else. No account, no cloud. Your existing sync, iCloud, Dropbox, or Obsidian Sync, moves the changes between devices.

Prefer a terminal?

If you want to script your tasks or run one-off commands rather than drive them from an agent, the taskforge CLI covers the same vault with the same rules.

Install the taskforge CLI →

Questions people ask

What is the taskforge MCP server?

It is a local Model Context Protocol server built into the taskforge binary. Run it with taskforge mcp --stdio and an MCP client like Claude Desktop can add, find, edit, complete, move, and delete the tasks in your Obsidian vault through 22 typed tools, single and bulk. It is a to-do list your agent can act on, not just read.

Which MCP clients does it work with?

Any client that speaks MCP over stdio. Claude Desktop is the common one, and Claude Code, Cursor, and VS Code (for GitHub Copilot) all take the same config. Each gets the same 22 tools and three resources.

Is this a hosted or remote MCP server?

No. It runs on your machine over stdin and stdout and only touches the vault folder you point it at. There is no URL to host, no API key, and no TaskForge account. That is the point: your to-do list stays on your disk.

Do I need to install anything?

Not ahead of time. Point your client's config at npx -y taskforge-md mcp --stdio and npx fetches the package the first time it runs. Claude Desktop users can instead open the .mcpb bundle for a guided install.

The client says the server cannot find my vault. What now?

The server always starts, so the client never shows an opaque "failed to start". When a tool call cannot resolve a vault, it returns a plain message: set the TASKFORGE_VAULT environment variable to your vault path, or reinstall the bundle and enter the vault directory when prompted.

Does it need the vault contract files?

Yes, to match your format. It reads taskforge/schema.json and taskforge/agents.md, generated when you open the vault in TaskForge 3.0 or later with "Generate agent files" on. Without them it still runs but falls back to generic defaults and warns the client it is guessing.

The agent acts on the list. The app keeps it.

The MCP server writes to your vault; TaskForge turns those files into lists, widgets, and reminders across your devices. Free to download on iPhone, iPad, Mac, and Android.