Personal Task Manager MCP
Enables AI assistants to manage tasks with full lifecycle support including due dates, priorities, tags, subtasks, and project lists via 19 SQLite-backed MCP tools.
README
Personal Task Manager — MCP Server
A Model Context Protocol (MCP) server that turns any AI assistant into a powerful task management system. Built with Python and SQLite, it exposes 19 tools for full lifecycle task management from quick to-dos to multi project workflows with priorities, tags, subtasks, and more.
AI Assistant <--> MCP Protocol (stdio) <--> Task Manager Server <--> SQLite DB
Features
| Feature | Description |
|---|---|
| Due Dates & Deadlines | Set, update, or clear deadlines on any task |
| Priorities | Classify tasks as high, medium, or low |
| Status Workflow | Full lifecycle: todo > in_progress > blocked > done > archived |
| Tags & Labels | Flexible many-to-many tagging (e.g. @work, @home, urgent) |
| Notes & Descriptions | Rich markdown notes attached to any task |
| Subtasks & Checklists | Break tasks into ordered, toggleable checklist items |
| Lists & Projects | Organize tasks by context — work, personal, side-project |
All 19 MCP Tools
Core CRUD
| Tool | Signature | Description |
|---|---|---|
get_schema |
() |
Get the full database schema |
run_select_query |
(query) |
Run a read-only SQL SELECT query |
add_task |
(title, description?, due_date?, priority?, list_id?, notes?) |
Create a new task |
update_task |
(task_id, title?, description?, status?, due_date?, priority?, list_id?, notes?) |
Update any task field |
delete_task |
(task_id) |
Delete a task and its subtasks/tags |
Due Dates
| Tool | Signature | Description |
|---|---|---|
set_due_date |
(task_id, due_date) |
Set or clear a deadline (YYYY-MM-DD) |
Priorities
| Tool | Signature | Description |
|---|---|---|
set_priority |
(task_id, level) |
Set priority: high / medium / low |
Status Workflow
| Tool | Signature | Description |
|---|---|---|
set_status |
(task_id, status) |
Set status: todo / in_progress / blocked / done / archived |
Tags & Labels
| Tool | Signature | Description |
|---|---|---|
add_tag |
(task_id, tag) |
Add a tag to a task (creates if new) |
remove_tag |
(task_id, tag) |
Remove a tag from a task |
list_by_tag |
(tag) |
List all tasks with a given tag |
Notes
| Tool | Signature | Description |
|---|---|---|
update_notes |
(task_id, markdown_text) |
Set/replace markdown notes on a task |
Subtasks & Checklists
| Tool | Signature | Description |
|---|---|---|
add_subtask |
(parent_id, title) |
Add a checklist item to a task |
toggle_subtask |
(subtask_id) |
Toggle completion (done / not done) |
delete_subtask |
(subtask_id) |
Remove a subtask |
list_subtasks |
(parent_id) |
List all subtasks of a task |
Lists & Projects
| Tool | Signature | Description |
|---|---|---|
create_list |
(name, description?) |
Create a new list/project |
delete_list |
(list_id) |
Delete a list (tasks become unassigned) |
move_task_to_list |
(task_id, list_id) |
Move a task to a list (use 0 to unassign) |
list_tasks_in_list |
(list_id) |
List all tasks in a list |
Quick Start
Prerequisites
- Python 3.10+
- An MCP-compatible client (e.g. Claude Desktop, Cursor, VS Code + Copilot)
Installation
# Clone the repository
git clone https://github.com/arghyapolley/personal-task-manager-mcp.git
cd personal-task-manager-mcp
# Install dependencies
pip install -r requirements.txt
Run the Server
python server.py
The server communicates via stdio using the MCP protocol. It automatically creates/migrates the tasks.db SQLite database on startup.
Connect to Claude Desktop
Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"task-manager": {
"command": "python",
"args": ["/absolute/path/to/server.py"]
}
}
}
Then restart Claude Desktop. You can now say things like:
"Add a high-priority task called 'Deploy v2' to my Work project, due May 10th"
"Show me all tasks tagged @urgent"
"Add subtasks to task 3: write tests, update docs, deploy"
"What's overdue?"
Database Schema
+---------------+ +---------------+
| lists | | tags |
+---------------+ +---------------+
| id (PK) | | id (PK) |
| name (UQ) | | name (UQ) |
| description | +-------+-------+
| created_at | |
+-------+-------+ |
| +------+------+
| 1:N | task_tags |
| +-------------+
+-------+-------+ | task_id(FK) |--+
| tasks | | tag_id(FK) | |
+---------------+ +-------------+ |
| id (PK) |<-----------------------+
| title |
| description | +-------------+
| status | | subtasks |
| due_date | +-------------+
| priority | 1:N | id (PK) |
| list_id (FK) |<------| parent_id |
| notes | | title |
| created_at | |is_completed |
| updated_at | | sort_order |
+---------------+ | created_at |
+-------------+
Testing
Run the full test suite (63 tests, uses a temporary DB):
python test_server.py
Results: 63 passed, 0 failed
Tests cover: schema creation, CRUD, priorities, status workflow, tags (add/remove/list/duplicates), notes, subtasks (add/toggle/delete/ordering), lists (create/move/unassign/delete), cascade deletes, and SQL injection guards.
Project Structure
personal-task-manager-mcp/
|-- server.py # MCP server -- 19 tools, DB init, schema migration
|-- test_server.py # Comprehensive test suite (63 assertions)
|-- requirements.txt # Python dependencies (mcp, pydantic)
|-- tasks.db # SQLite database (auto-created on first run)
+-- README.md # This file
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.