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.
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
Install Node.js (including npm and npx), then add this to your MCP client's config. npx fetches taskforge-md on first run.
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.
{
"mcpServers": {
"taskforge": {
"command": "npx",
"args": ["-y", "taskforge-md", "mcp", "--stdio"],
"env": {
"TASKFORGE_VAULT": "/path/to/your/vault"
}
}
}
} On Windows, use cmd /c in front of npx. Desktop MCP clients like Claude Desktop start the server without a shell, and npx is a .cmd script Windows will only run through one:
{
"mcpServers": {
"taskforge": {
"command": "cmd",
"args": ["/c", "npx", "-y", "taskforge-md", "mcp", "--stdio"],
"env": {
"TASKFORGE_VAULT": "C:\\path\\to\\your\\vault"
}
}
}
} Built taskforge from source instead of using npx? Point the config at the binary directly:
"command": "taskforge",
"args": ["mcp", "--stdio"] Desktop only, since that is where MCP clients live. taskforge ships as a single native binary for macOS and Windows, and the MCP server is one of its subcommands. Linux is coming soon.
The full tool set
30 tools in total, covering the whole task and note lifecycle: create, read, update, complete, archive, and delete, each with a bulk variant; move, reparent, and convert between an inline line and a task file; create, rename, delete, and edit notes without breaking a link; a lint check before you write a line; a doctor call for vault health; and dialect and spaces 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_spaces, get_dialect, create_note, read_note, update_note, patch_note_block, patch_note_frontmatter, normalize_references, delete_note, and move_note.
Three resources
Alongside the tools, the server exposes read-only context so the agent learns your vault's rules before it acts:
| taskforge://dialect | 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://spaces | Your saved spaces 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/Settings/dialect.json and TaskForge/Settings/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. These paths use the default base folder; if you renamed it, use that folder instead.
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
The TaskForge MCP server runs locally and reads and writes your vault's Markdown files. Installing through npx downloads the package from npm. Your AI client may send tool inputs and results to its provider; its privacy settings still apply. Your existing vault sync carries edits 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 and notes in your Obsidian vault through 30 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 30 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?
The npx setup requires Node.js with npm and npx. Then your client can run npx -y taskforge-md mcp --stdio to fetch and start the server. Claude Desktop users can instead open a native .mcpb bundle, which does not require Node.js.
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/Settings/dialect.json and TaskForge/Settings/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, Android, and Windows.