Task Manager MCP Server
A production-ready Task Manager server built with the Model Context Protocol (MCP), enabling AI assistants to manage tasks through a standardized interface. Built with TypeScript, Zod validation, and the official MCP SDK.
Features
ā 8 Comprehensive Tools: Create, list, update, delete, complete, search tasks, get statistics, and clear completed tasks
š Type-Safe: Built with TypeScript and runtime validation using Zod
š¦ Portable: Uses only official MCP SDK - no vendor lock-in
š³ Dockerized: Ready for containerized deployment
š¾ Persistent Storage: File-based JSON storage with environment-aware configuration
š Advanced Filtering: Filter tasks by status, priority, and category
š Statistics & Analytics: Track task completion rates, overdue items, and more
šÆ Production Ready: Comprehensive error handling and validation
Quick Start
Prerequisites
Node.js 18+
npm 9+
Installation
Development Mode
Available Tools
1. create_task
Create a new task with optional metadata.
Parameters:
title
(string, required): Task titledescription
(string, optional): Detailed descriptionpriority
(enum, optional): "low", "medium", or "high" (default: "medium")category
(string, optional): Task category (e.g., "work", "personal")dueDate
(string, optional): Due date in YYYY-MM-DD format
Example:
2. list_tasks
List tasks with optional filters.
Parameters:
status
(enum, optional): "pending", "in_progress", "completed", or "all" (default: "all")priority
(enum, optional): "low", "medium", "high", or "all" (default: "all")category
(string, optional): Filter by specific category
Example:
3. update_task
Update any field of an existing task.
Parameters:
taskId
(string, required): Task ID (minimum 8 characters)title
(string, optional): New titledescription
(string, optional): New descriptionpriority
(enum, optional): New prioritycategory
(string, optional): New categorydueDate
(string, optional): New due datestatus
(enum, optional): New status
Example:
4. complete_task
Mark a task as completed.
Parameters:
taskId
(string, required): Task ID (minimum 8 characters)
5. delete_task
Delete a task permanently.
Parameters:
taskId
(string, required): Task ID (minimum 8 characters)
6. search_tasks
Search tasks by title or description.
Parameters:
query
(string, required): Search query
Example:
7. get_task_stats
Get comprehensive statistics about all tasks.
Returns:
Total task count
Completion rate
Status breakdown (pending/in progress/completed)
Priority breakdown (high/medium/low)
Category distribution
Overdue task count
Tasks due within 7 days
8. clear_completed
Remove all completed tasks from storage.
Claude Desktop Integration
Configuration
Locate your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the server configuration:
Restart Claude Desktop completely
Look for the hammer icon (šØ) in the input box
Test with: "Create a high priority task called 'Test MCP Integration'"
Testing with MCP Inspector
The MCP Inspector provides a web-based interface for testing tools:
This will open a browser window where you can:
View all available tools
Test tool execution interactively
Inspect request/response data
Debug errors
Docker Deployment
Build and Run with Docker
Using Docker Compose
Persist Data with Docker
Data is automatically persisted to a Docker volume. To back up your tasks:
Environment Variables
Configure the server using environment variables:
Create a .env
file in the project root:
Cloud Deployment Options
Railway
Render
Connect your GitHub repository
Create a new Web Service
Set build command:
npm install && npm run build
Set start command:
npm start
Deploy
Fly.io
Project Structure
Development
Scripts
Type Safety
The project uses strict TypeScript settings and Zod for runtime validation:
Compile-time safety: TypeScript catches type errors during development
Runtime validation: Zod validates all tool inputs at runtime
Dual schema approach: JSON Schema for MCP protocol, Zod for validation
Adding New Tools
Define Zod schema in
src/types.ts
Implement handler function in
src/tools.ts
Add tool definition to
TOOLS
array insrc/index.ts
Add case handler in
tools/call
switch statementRebuild and test with MCP Inspector
Troubleshooting
"Cannot find module" errors
Ensure all imports use .js
extension (even for .ts
files):
Tasks not persisting
Check
DATA_DIR
environment variableVerify write permissions on data directory
Check for errors in server logs
TypeScript compilation errors
MCP Inspector not connecting
Ensure server builds successfully:
npm run build
Check Node.js version (must be 18+)
Verify no port conflicts
Check firewall settings
Claude Desktop not showing tools
Verify JSON syntax in config file
Use absolute paths in configuration
Restart Claude Desktop completely (Cmd+R / Ctrl+R not sufficient)
Check server logs for errors
Resources
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and questions:
GitHub Issues: https://github.com/aafsar/task-manager-mcp-server/issues
MCP Discord: https://discord.gg/modelcontextprotocol
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
Enables AI assistants to manage tasks through a comprehensive interface with 8 tools for creating, updating, searching, and tracking tasks with priorities, categories, and due dates. Features persistent file-based storage, advanced filtering, and task statistics for complete task management workflow.