A Redis-based local task manager with a modern web interface, rich CLI, and MCP server integration.
- ✅ Task Management: Full CRUD operations with tags and status tracking
- ⏱️ Time Tracking: Start/stop timers for tasks with historical tracking
- 📊 Filtering: Filter tasks by status, tags, and date ranges
- 📝 Logging: Activity and system logs with historical analysis
- 🌐 Web Interface: Modern, responsive dark-mode UI
- 💻 Rich CLI: Beautiful command-line interface with tables and colors
- 🤖 MCP Server: AI assistant integration via Model Context Protocol
- Backend: FastAPI (Python 3.11+)
- Database: Redis with AOF persistence
- Frontend: Vanilla JavaScript with modern CSS
- CLI: Typer + Rich
- Deployment: Docker Compose
# Start Docker containers
docker compose up -d
# Verify services are running
curl http://localhost:8000/healthOpen http://localhost:8000 in your browser for the full-featured web UI.
One-line install:
./install-cli.shManual install:
cd cli# List tasks
python cli/supatask_cli.py list
# Add a task
python cli/supatask_cli.py add "Fix bug" --tags "urgent,backend"
# Start time tracking
python cli/supatask_cli.py start 1
# Stop time tracking
python cli/supatask_cli.py stop 1
# View logs
python cli/supatask_cli.py logs --limit 20| Command | Description |
|---|---|
list |
List tasks with optional filters (--status, --tags, --created-after, --created-before) |
add <title> |
Create a new task (--description, --status, --tags) |
view <id> |
View task details with time tracking |
update <id> |
Update task (--title, --description, --status, --tags) |
delete <id> |
Delete a task |
start <id> |
Start time tracking |
stop <id> |
Stop time tracking |
logs |
View activity/system logs (--type, --limit) |
POST /tasks- Create taskGET /tasks- List tasks (query params: status, tags, created_after, created_before)GET /tasks/{id}- Get task detailsPUT /tasks/{id}- Update taskDELETE /tasks/{id}- Delete taskPOST /tasks/{id}/start- Start timerPOST /tasks/{id}/stop- Stop timer
GET /logs- Get logs (query params: log_type, start_time, end_time, limit)
POST /mcp/- JSON-RPC 2.0 endpoint (initialize, tools/list, tools/call, ping)GET /mcp/- Optional SSE stream for server-initiated messages
Supatask includes an MCP server implementing the HTTP Streamable Transport (MCP spec 2025-06-18) for AI assistant integration.
create_task- Create tasks with tagsread_task- Read task detailslist_tasks- List tasks with filtersupdate_task- Update tasksdelete_task- Delete tasksget_logs- Retrieve activity/system logs
Add to ~/.config/claude-code/mcp.json:
{
"mcpServers": {
"supatask": {
"url": "http://localhost:8000/mcp/",
"transport": "http"
}
}
}- Specification: MCP 2025-06-18
- Transport: HTTP Streamable
- Message Format: JSON-RPC 2.0
- Session Management: Via
Mcp-Session-Idheaders
# Initialize connection
curl -X POST http://localhost:8000/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}'
# List available tools
curl -X POST http://localhost:8000/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":2}'
# Create a task
curl -X POST http://localhost:8000/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"create_task","arguments":{"title":"My Task","tags":["work"]}},"id":3}'Tasks are stored in Redis with the following structure:
task:{id} Hash with title, description, status, created_at, updated_at
task:{id}:tags Set of tags
task:{id}:time Stream of time tracking entries
tasks Set of all task IDs
tasks:by_status:{status} Set of task IDs by status
logs:activity Stream of user-facing activity logs
logs:system Stream of debug/system logs
The backend supports hot reload in development mode:
docker-compose upEdit files in backend/ and the server will automatically reload.
docker-compose downTo also remove the Redis data volume:
docker-compose down -vEnvironment variables (set in docker-compose.yml):
REDIS_URL- Redis connection URL (default:redis://redis:6379)LOG_LEVEL- Logging level (default:INFO)
MIT