mrgoonie

TODO MCP Server

Community mrgoonie
Updated

An usable TODO MCP server for your AI tools

TODO MCP Server

A Model Context Protocol (MCP) server for managing todo lists and items with webhook notifications, built with Bun and TypeScript.

Features

Todo List Management

  • Create new todo lists with names and descriptions
  • Read individual lists or get all lists
  • Update list names and descriptions
  • Delete lists (cascades to all items)

Todo Item Management

  • CRUD Operations: Create, read, update, delete todo items
  • Assignee Support: Assign todos to specific people
  • Priority Levels: None, low, medium, high
  • Status Tracking: pending, in_progress, completed, cancelled
  • Tags: Flexible tagging system for categorization
  • Due Dates: Set deadlines for tasks
  • Snooze Functionality: Temporarily hide items until a specific time

Advanced Features

  • Recurrence: Daily, weekly, monthly, or specific weekdays
  • Search: Find todos by title, description, or keywords
  • Filtering: Filter by assignee, tags, status, priority, due dates
  • Sorting: Sort by time, priority, creation date, or update date
  • Pagination: Limit and offset for large datasets
  • Notifications: Webhook notifications for approaching deadlines

Installation

Prerequisites

  • Bun runtime
  • SQLite3 (included with most systems)

Setup

# Clone the repository
git clone <repository-url>
cd mcp-todo

# Install dependencies
bun install

# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Environment Variables

# webhook URL for task notifications (optional)
NOTIFICATION_WEBHOOK=http://localhost:3000/api/webhooks/your-webhook-url

# Database configuration
DATABASE_PATH=./todo.db

# Server configuration
MCP_SERVER_NAME=mcp-todo
MCP_SERVER_VERSION=1.0.0

Usage

Development

# Start in development mode with auto-reload
bun run dev

# Run type checking
bun run typecheck

# Run tests
bun test

Production

# Start the server
bun run start

# Or build and run with Docker
docker-compose up -d

MCP Tools

The server provides the following MCP tools:

Todo List Operations

  • createTodoList - Create a new todo list
  • getTodoList - Get a todo list by ID
  • getAllTodoLists - Get all todo lists
  • updateTodoList - Update a todo list
  • deleteTodoList - Delete a todo list

Todo Item Operations

  • createTodoItem - Create a new todo item
  • getTodoItem - Get a todo item by ID
  • searchTodoItems - Search and filter todo items
  • updateTodoItem - Update a todo item
  • markTodoDone - Mark a todo item as completed
  • deleteTodoItem - Delete a todo item

Usage Examples

Creating a Todo List
{
  "name": "Work Tasks",
  "description": "Tasks related to work projects"
}
Creating a Todo Item
{
  "list_id": "list-uuid",
  "title": "Complete project documentation",
  "description": "Write comprehensive docs for the new feature",
  "assignee": "[email protected]",
  "priority": "high",
  "tags": ["documentation", "urgent"],
  "due_date": "2024-12-31T23:59:59Z",
  "recurrence": {
    "type": "weekly",
    "weekdays": [1, 3, 5]
  }
}
Searching Todo Items
{
  "query": "documentation",
  "status": ["pending", "in_progress"],
  "priority": ["high", "medium"],
  "assignee": "[email protected]",
  "due_before": "2024-12-31T23:59:59Z",
  "sort_field": "due_date",
  "sort_order": "asc",
  "limit": 10
}

Database Schema

The server uses SQLite with the following tables:

  • todo_lists: Stores todo list information
  • todo_items: Stores individual todo items
  • tags: Stores unique tag names
  • todo_tags: Many-to-many relationship between todos and tags
  • recurrences: Stores recurrence patterns for todos

Docker Deployment

Using Docker Compose

# Start the service
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the service
docker-compose down

Using Docker directly

# Build the image
docker build -t mcp-todo .

# Run the container
docker run -d \
  --name mcp-todo \
  -v todo-data:/data \
  -e NOTIFICATION_WEBHOOK=your-webhook-url \
  mcp-todo

Notifications

When a NOTIFICATION_WEBHOOK is configured, the server will:

  1. Check for tasks with due dates within the next hour every 5 minutes
  2. Send webhook notifications for upcoming deadlines
  3. Automatically snooze notifications for 1 hour to avoid spam
  4. Include task details like title, assignee, priority, and tags

Webhook Payload Format

{
  "content": "Task deadline approaching!",
  "data": {
    "id": "string";
    "list_id": "string";
    "title": "string";
    "description": "string";
    "assignee": "string";
    "priority": "none"; // none, low, medium, high
    "status": "completed"; // pending, in_progress, completed, cancelled
    "tags": [];
    "due_date": Date;
    "snoozed_until": Date;
    "recurrence": {
      "type": "daily"; // daily, weekly, monthly, weekdays 
      "weekdays": []; // 0-6 for Sunday-Saturday
      "day_of_month": 1; // 1-31
      "next_due": Date;
    };
    "completed_at"?: Date;
    "created_at": Date;
    "updated_at": Date;
    "metadata": {};
  }
}

API Reference

Recurrence Types

  • daily: Repeats every day
  • weekly: Repeats on specific weekdays (0=Sunday, 6=Saturday)
  • monthly: Repeats on a specific day of the month
  • weekdays: Repeats on weekdays only (Monday-Friday)

Priority Levels

  • none: No priority set
  • low: Low priority
  • medium: Medium priority
  • high: High priority

Status Options

  • pending: Task not started
  • in_progress: Task is being worked on
  • completed: Task is finished
  • cancelled: Task was cancelled

Development

Project Structure

src/
├── db/           # Database connection and schema
├── models/       # Repository classes for data access
├── server/       # MCP server implementation
├── types/        # TypeScript type definitions
└── utils/        # Utility functions

Testing

# Run all tests
bun test

# Run with coverage
bun test --coverage

# Run specific test file
bun test tests/todo-list.repository.test.ts

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

License

This project is licensed under the MIT License.

Troubleshooting

Common Issues

  1. Database locked error: Ensure only one instance of the server is running
  2. Permission denied: Check file permissions for the database path
  3. Webhook not working: Verify the webhook URL is correct and accessible

Debug Mode

Set NODE_ENV=development to enable additional logging.

Support

For issues and questions, please:

  1. Check the troubleshooting section above
  2. Search existing issues on GitHub
  3. Create a new issue with detailed information

MCP Server · Populars

MCP Server · New

    bibinprathap

    veritasgraph

    VeritasGraph — open-source Knowledge Graph & GraphRAG framework on GitHub. Build multi-hop reasoning, ontology-aware retrieval, and verifiable attribution over your own data. Nodes, edges, RDF, linked-data — runs locally or in the cloud.

    Community bibinprathap
    sher1096

    KLinePic MCP Server and Agent API Examples

    MCP server and OpenAPI examples for AI agents that turn broker and exchange fills into annotated KLinePic trade-review charts

    Community sher1096
    zerx-lab

    FluxDown

    Rust 驱动的多协议下载管理器,支持 HTTP/FTP/BitTorrent 磁力链接及 HLS/DASH 流媒体,智能多线程加速与浏览器无缝集成。精美界面,极致性能,永久免费,零广告。

    Community zerx-lab
    MasihMoafi

    Project Elpis:

    You put an agent into an Elpis, and it becomes Elpis; Be Elpis my friend.

    Community MasihMoafi
    ROCTUP

    1C Metacode MCP Server

    MCP сервер с встроенным AI агентом для поиска по графу метаданных и кода конфигураций 1С

    Community ROCTUP