No description
| skills/todo-mcp | ||
| src/todo | ||
| tests | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
todo-mcp
A lightweight MCP server for task management. Backed by a single JSON file, no database or external service. Built in the same style as the Harrier / OSINT-MCP servers already in this machine.
Tools
| Tool | Purpose | Mutates? |
|---|---|---|
todo_add |
Create a task (title required; optional priority, due, tags, project, description) | yes |
todo_list |
List tasks with status/priority/project/tag filters + pagination | no |
todo_get |
Fetch one task by id | no |
todo_update |
Update any subset of a task's mutable fields | yes |
todo_toggle |
Flip a task between active and done | yes |
todo_delete |
Delete a task by id | yes (destructive) |
todo_clear |
Remove all completed tasks | yes (destructive) |
todo_stats |
Summary: totals, by status, by priority, by project | no |
Every tool accepts format: "json" (default) or "markdown".
Storage
State lives in a JSON document:
- Default:
~/.todo-mcp/todos.json - Override: set the
TODO_MCP_STOREenvironment variable to another path.
Writes are atomic (temp file + rename) so a crash cannot corrupt the store.
Run
uv run todo-mcp # stdio MCP server
Install into OpenCode
Add to ~/.config/opencode/opencode.jsonc under mcp.clients (already done
here):
"todo-mcp": {
"type": "local",
"command": ["uv", "run", "--directory", "/home/jason/Documents/source/git-cloned/todo-mcp", "todo-mcp"],
"enabled": true
}
After reloading OpenCode, the tools appear as tools["todo-mcp"].todo_*.
Test
uv run pytest