MCP ToDo Server MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
git clone https://github.com/AnoRebel/mcp-todo-server.git
cd mcp-todo-server
uv sync
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add mcp-todo-server -- python "<FULL_PATH_TO_MCP_TODO_SERVER>/dist/index.js"

Replace <FULL_PATH_TO_MCP_TODO_SERVER>/dist/index.js with the actual folder you prepared in step 1.

README.md

Production-ready Model Context Protocol server for task and todo management

MCP ToDo Server

Production-ready Model Context Protocol server for task and todo management with dual storage backends, error handling, and modern Python tooling.

Features

  • Dual Storage: File-based JSON or database (SQLite/PostgreSQL)
  • Todo Management: Standalone todos and structured tasks with priorities/due dates
  • Bulk Operations: Efficient multi-item management and analytics
  • Security: Input validation, error handling, containerization
  • Modern Tooling: uv package manager, comprehensive testing, structured logging

Architecture

MCP Server → Business Logic → Storage (File/Database) → Infrastructure

Quick Start

# Clone and install
git clone https://github.com/AnoRebel/mcp-todo-server.git
cd mcp-todo-server
uv sync  # or pip install -r requirements.txt

# Run with file storage (default)
uv run python server.py

# Run with database storage
export MCP_STORAGE_TYPE=database
export MCP_DATABASE_URL=sqlite:///todos.db
uv run python server.py

# Docker
docker-compose up -d

# Development
make test && make format

Configuration

Environment variables:

  • MCP_STORAGE_TYPE: file or database (default: file)
  • MCP_DATABASE_URL: Database connection string
  • MCP_LOG_LEVEL: DEBUG, INFO, WARNING, ERROR
  • MCP_MAX_TASKS: Maximum tasks (default: 1000)
  • MCP_MAX_TODOS: Maximum todos (default: 1000)

Usage

Basic Operations

# Standalone todos
add_todo("Buy groceries")
list_todos(status="open")
complete_todo("todo-id")

# Structured tasks
create_task(name="Project", priority="high", due_date="2024-12-31")
add_task_todo("task-id", "Subtask description")
bulk_task_operation(operation="complete", filters={"priority": "low"})

# Analytics
get_productivity_stats()

Error Handling

  • Circuit breaker pattern for failure prevention
  • Automatic retry with exponential backoff
  • Categorized errors with user-friendly messages
  • Comprehensive logging and monitoring

Testing

make test              # All tests with coverage
pytest tests/ -v       # Verbose test output

Coverage includes storage backends, CRUD operations, error handling, and data models.

Security & Performance

  • Input validation and sanitization
  • Container security (non-root execution)
  • Database connection pooling and atomic operations
  • Configurable limits and graceful degradation
  • Structured logging for observability

Deployment

Docker

docker-compose up -d                              # File storage
docker-compose --profile database up -d           # With PostgreSQL

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-todo-server
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: mcp-todo-server
        image: mcp-todo-server:latest
        env:
        - name: MCP_STORAGE_TYPE
          value: "database"
        - name: MCP_DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: url

Integration

Claude Desktop

{
  "mcpServers": {
    "todo-manager": {
      "command": "python",
      "args": ["/path/to/server.py"],
      "env": {
        "MCP_STORAGE_TYPE": "file",
        "MCP_DATA_DIR": "/Users/username/.claude_todos"
      }
    }
  }
}

Project Structure

mcp-todo-server/
├── server.py             # Main server
├── config.py            # Configuration
├── models/              # Data models
├── storage/             # Storage backends
├── tests/              # Test suite
├── docker-compose.yml  # Container setup
└── requirements.txt    # Dependencies

Contributing

  1. Fork and create feature branch
  2. Add tests and follow PEP 8
  3. Run make test && make format
  4. Submit PR with clear description

Performance

Storage Comparison:

  • File: Simple, <1000 items recommended
  • Database: Scalable, concurrent access, millions of items

Benchmarks:

Operation File SQLite PostgreSQL
Add Todo 5ms 2ms 3ms
List 100 15ms 5ms 8ms

License

MIT License - see LICENSE file.

Support


Built with ❤️ following MCP best practices

Tools (7)

add_todoAdds a new standalone todo item.
list_todosLists todos based on status.
complete_todoMarks a specific todo as complete.
create_taskCreates a structured task with priority and due date.
add_task_todoAdds a subtask to an existing task.
bulk_task_operationPerforms bulk operations on tasks based on filters.
get_productivity_statsRetrieves productivity analytics.

Environment Variables

MCP_STORAGE_TYPEStorage backend: file or database
MCP_DATABASE_URLDatabase connection string
MCP_LOG_LEVELLogging level: DEBUG, INFO, WARNING, ERROR
MCP_MAX_TASKSMaximum number of tasks
MCP_MAX_TODOSMaximum number of todos

Configuration

claude_desktop_config.json
{"mcpServers": {"todo-manager": {"command": "python", "args": ["/path/to/server.py"], "env": {"MCP_STORAGE_TYPE": "file", "MCP_DATA_DIR": "/Users/username/.claude_todos"}}}}

Try it

Add a new todo item: Buy groceries for the weekend.
List all my open todos.
Create a new high priority task named Project Alpha due on 2024-12-31.
Show me my productivity stats for this week.
Complete all tasks with low priority.

Frequently Asked Questions

What are the key features of MCP ToDo Server?

Dual storage support for file-based JSON or SQLite/PostgreSQL databases. Structured task management with priority levels and due dates. Bulk operation capabilities for efficient multi-item management. Built-in productivity analytics and reporting. Production-ready with input validation, error handling, and structured logging.

What can I use MCP ToDo Server for?

Managing personal daily to-do lists directly through Claude. Tracking complex project tasks with sub-items and deadlines. Analyzing personal productivity trends using the built-in analytics tool. Maintaining a scalable task database for team-based workflows using PostgreSQL.

How do I install MCP ToDo Server?

Install MCP ToDo Server by running: git clone https://github.com/AnoRebel/mcp-todo-server.git && cd mcp-todo-server && uv sync

What MCP clients work with MCP ToDo Server?

MCP ToDo Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep MCP ToDo Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare