task-guardian-mcp
v1.0.1
Published
MCP for Task Management
Readme
Task Guardian MCP
A Model Context Protocol (MCP) server for intelligent task management in AI-powered development environments like Cursor.
Features
- 📁 File-based storage - Tasks stored as JSON files in
.task/directory - 🔢 Sequential IDs - Simple, incremental task numbering
- 🔗 Typed dependencies - Model relationships between tasks (blocks, requires, related-to)
- 🔄 Cycle detection - Prevents circular dependencies at creation time
- 📝 Rich descriptions - Full markdown support with code blocks and checklists
- 🎯 Task types - Support for user stories, tasks, and bugs
- 🔍 Advanced querying - Filter, sort, and search tasks
- ⚡ Batch operations - Create or update multiple tasks at once
- 📦 Custom metadata - Store project-specific attributes on tasks
- 🖥️ Interactive CLI - Beautiful terminal UI for viewing tasks with Ink and React
Installation
From npm (recommended)
npx task-guardian-mcpFrom source
pnpm installUsage
Running the Server
Start the MCP server:
pnpm startFor development with auto-reload:
pnpm devCLI Tool
View tasks in your project using an interactive terminal UI:
pnpm cliThe CLI reads from the .task directory in your current working directory and displays tasks in a beautiful, color-coded table with interactive navigation.
Features:
- 🎯 Navigate through tasks with arrow keys
- 👁️ View detailed information for any task
- 🎨 Color-coded status, priority, and type indicators
- 🔍 Filter tasks by status, priority, or type
- ⌨️ Full keyboard navigation
Options:
--status <status>- Filter by status (pending|in_progress|completed|blocked|cancelled)--priority <priority>- Filter by priority (low|medium|high|critical)--type <type>- Filter by type (user_story|task|bug)--help- Show help message
Examples:
# List all tasks
pnpm cli
# List in-progress tasks only
pnpm cli --status in_progress
# List high priority tasks
pnpm cli --priority high
# Combine filters
pnpm cli --status pending --priority criticalKeyboard shortcuts:
In List View:
↑/↓orj/k- Navigate through tasks (vim-style supported)Enter- View selected task detailsq- Quit the applicationCtrl+C- Exit
In Detail View:
- Use your terminal's native scrolling (mouse wheel, trackpad, or terminal scroll commands)
Escorb- Back to listq- Quit the application
Cursor Integration
Add Task Guardian to your Cursor MCP configuration:
Location: ~/.cursor/config/mcp_settings.json
Using npx (recommended)
{
"mcpServers": {
"task-guardian": {
"command": "npx",
"args": ["-y", "task-guardian-mcp"]
}
}
}From source
{
"mcpServers": {
"task-guardian": {
"command": "node",
"args": ["/absolute/path/to/task-guardian-mcp/dist/index.mjs"]
}
}
}Replace /absolute/path/to/task-guardian-mcp with the actual path to this repository on your machine.
Task Schema
Tasks are stored in .task/task-{id}.json with the following structure:
{
id: number; // Sequential ID (1, 2, 3, ...)
title: string; // Task title (1-200 chars)
description: string; // Markdown-formatted description
status: 'pending' | 'in_progress' | 'completed' | 'blocked' | 'cancelled';
priority: 'low' | 'medium' | 'high' | 'critical';
type: 'user_story' | 'task' | 'bug';
dependencies: Array<{
taskId: number;
type: 'blocks' | 'requires' | 'related-to';
description?: string;
}>;
createdAt: string; // ISO8601 timestamp
updatedAt: string; // ISO8601 timestamp
[key: string]: any; // Custom metadata fields
}Available Tools
Core Operations
create_task- Create a new taskget_task- Retrieve a task by IDupdate_task- Update task fieldsdelete_task- Delete a task (with dependency check)list_tasks- List tasks with optional filteringquery_tasks- Advanced search with sorting and pagination
Dependency Management
add_dependency- Add a typed dependency (with cycle detection)remove_dependency- Remove a dependency link
Batch Operations
create_tasks- Create multiple tasks at onceupdate_tasks- Update multiple tasks at once
Examples
Creating a Task
{
"title": "Implement OAuth2 authentication",
"description": "## Overview\n\nAdd OAuth2 support using Google identity provider.\n\n## Acceptance Criteria\n\n- [ ] User can login with Google\n- [ ] JWT tokens generated\n- [ ] Token refresh works",
"priority": "high",
"type": "task"
}Adding Dependencies
{
"fromTaskId": 5,
"toTaskId": 3,
"type": "blocks",
"description": "OAuth requires database setup first"
}Querying Tasks
{
"filters": {
"status": ["in_progress", "blocked"],
"priority": ["high", "critical"],
"titleContains": "auth"
},
"sort": {
"field": "priority",
"order": "desc"
},
"limit": 10
}Architecture
- Types (
src/types/) - Type definitions and constants usingas constpattern - Schemas (
src/schemas/) - Zod validation schemas with type inference - Services (
src/services/) - Business logic for tasks and dependencies - Tools (
src/tools/) - MCP tool implementations - Index (
src/index.ts) - MCP server entry point
Development
Type checking:
pnpm typecheckBuild:
pnpm buildFile Structure
.task/
├── .meta.json # Stores last task ID
├── task-1.json # Individual task files
├── task-2.json
└── archive/ # Archived completed tasks
└── task-old.jsonTypeScript Best Practices
This project follows modern TypeScript patterns:
- ✅
as constobjects instead of enums - ✅ Zod schema inference for single source of truth
- ✅ Result types for error handling
- ✅
readonlymodifiers for immutability - ✅
typeoverinterfacefor data shapes - ✅ Permissive validation with
.passthrough()
License
MIT
