Metadata-Version: 2.4
Name: better-todo-mcp
Version: 0.1.1
Summary: Task.md manager with CLI and MCP HTTP server.
Author-email: better_todo <dev@example.com>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: fastapi>=0.115
Requires-Dist: uvicorn>=0.29
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"

# better-todo-mcp

Python 库，用于按照 `example/task.md` 规范管理任务文件，提供：

- 解析/渲染：`mcp_tasks.parser`
- 任务操作：`mcp_tasks.ops`
- 文件处理与自动重命名：`mcp_tasks.storage`
- CLI：`better-todo-cli`
- MCP HTTP 服务器：`better-todo-mcp`

## 安装

```bash
pip install -e .
```

## CLI

- 列表：`better-todo-cli --file task.md list`
- 开始：`better-todo-cli --file task.md start "主任务/子任务"`
- 完成：`better-todo-cli --file task.md finish "主任务/子任务"`（返回下一任务，若全完成自动重命名）
- 添加：`better-todo-cli --file task.md add "新任务" --parent 主任务 --desc 描述`
- 删除：`better-todo-cli --file task.md delete "主任务/子任务"`
- 需求文档：`better-todo-cli requirements --file requirements.md [--init] [--set "内容"]`
- 架构文档：`better-todo-cli architecture --file architecture.md [--init] [--set "内容"]`
- 规划提示词：`better-todo-cli start_plan`

## MCP 服务器

启动（任务文件默认存放在当前工作区的 `.task/` 目录下，命令里的 `--file task.md` 实际指向 `./.task/task.md`；目录不存在会自动创建，禁止绝对路径/.. 逃逸）：
```bash
better-todo-mcp --file task.md --host 0.0.0.0 --port 8008
```

接口示例：
- `GET /tasks` → 列表（包含状态、层级）
- `POST /tasks/start` `{path:"主任务/子任务"}`（文件限定在 ./.task/）
- `POST /tasks/finish` `{path:"主任务/子任务"}`（返回下一任务；若全完成自动重命名；文件限定在 ./.task/）
- `POST /tasks/add` `{title:"新任务",parent:"可选父任务",desc:["行1","行2"]}`（文件限定在 ./.task/）
- `DELETE /tasks` `{path:"主任务/子任务"}`（文件限定在 ./.task/）
- `GET /tasks/next` → 返回当前优先任务（先 RUNNING 再 TODO）
- `GET /requirements` / `POST /requirements`：读取/写入需求文档（默认 .task/requirements.md，不存在会用模板创建）
- `GET /architecture` / `POST /architecture`：读取/写入架构文档（默认 .task/architecture.md，不存在会用模板创建）
- `POST /tasks/from-plan`：`[{title, desc?, children:[{title, desc?}] }]` 追加为主/子任务
- `GET /start_plan`：返回规划提示词（用于模型产出需求/架构/任务拆解）

## 开发

```bash
pip install -e ".[dev]"
pytest
```

