
Dawn: My Personal AI Productivity System
Dawn is my MCP server for project management built with a simple TypeScript/SQLite setup. It handles my projects, tasks, time tracking, and context.
Dawn is my MCP server for project management built with a simple TypeScript/SQLite setup. It handles my projects, tasks, time tracking, and context. It's designed to be simple, and focused on a set of core capabilities that saves me time working between different projects. I was tired of messing with all of the various different context systems like Cursor's Rules, Claude Code memory files, llms.txt, etc. and other overly complex multi-agent RAG solutions for tracking basic things like tasks, context, and time. So I decided to build something that works for me. Below I'll cover more information about what currently makes up Dawn and where I'm planning on taking it.
Project Management System ๐ ๏ธ
Dawn's project system provides the organizational foundation that ties together tasks, artifacts, and time tracking into cohesive workspaces designed for technical workflows across any domain.
Current Features
- Basic CRUD operations: create, update, delete, and list projects with names and descriptions
- Project-scoped organization where all tasks, artifacts, and time entries belong to specific projects
- Load comprehensive project overviews that automatically display associated tasks, artifacts, and time summaries
- Cross-project search capabilities for finding tasks and artifacts across your entire workspace
Example Workflows
create-project
to establish new workspaces for different technical initiatives, from web applications to hardware projectsload-project
provides instant context switching - all relevant tasks, documentation, and progress in a single view (as shown in the Cursor screenshot above)
Potential Enhancements
- Project templates that automatically create common artifact structures and initial tasks for different project types (web app, hardware project, research, etc.)
- Project dependencies and relationships to track how different initiatives connect and influence each other
- Archive/active status management to keep the workspace focused on current priorities while preserving historical project context
The project system keeps everything organized without being overly prescriptive - whether you're debugging authentication issues in a Next.js app or troubleshooting 3D printed robotic arm components, each project maintains its own context bubble that you can dive into instantly with any MCP client interface like Claude Desktop, Cursor, etc.
Below is a screenshot of Dawn loading one of my projects using the load-project
tool inside of Cursor:
Task Management System โ
Dawn's task system provides a simple project-based task management with time tracking integration and is designed for simple technical workflows:
Current Features
- Basic CRUD; create, update, delete, and search
- Status tracking; todo, in-progress, done
- Tasks belong to specific projects
- Start/stop timers directly on tasks
- Find tasks by keywords across all projects
Example Workflows
- create-task for explicit task creation with project ID start-task for conversational workflow (creates + starts timer by name)
- get-project-tasks shows tasks grouped by status Time reports link task work to actual hours spent
Potential Enhancements
- Dynamically create or update Artifacts to new or existing tasks which could store conversation history, decisions, change logs, and other important context.
- Handle task relationships, sub-task, and blocking.
Context Management System ๐๏ธ
Dawn's artifact system stores text-based content associated with projects in SQLite, (currently as monolithic content) but evolving toward a JSON patch or graph model to dynamically update parts of the document similar to how Claude Artifacts and OAI Canvas features work.
Current Features
- Artifacts have title, content, project association, and optional type (like "overview", "log", etc. that each would have their own attributes for different actions within the system)
- Basic CRUD operations: create, get, update, delete, list, and search across Artifacts
- Special handling for project overview type artifacts (one per project)
- The load-project tool automatically displays the overview artifact content, using it to seed new chats (pictured above in Cursor)
Example Workflows
- Enable agentic systems like Cursor and Claude to dynamically load project context via MCP without relying on platform-specific context systems (Cursor Rules, CLAUDE.md, etc.). Example queries: "Load all artifacts for this project in your memory" or "Which artifacts contain troubleshooting information?"
- Synthesize all project artifacts to write comprehensive blog posts, documentation, or reports
- Convert artifacts to Markdown files for codebase docs, wikis, or knowledge bases
- Maintain organized notes, research findings, and reference materials for ongoing project tasks
Potential Enhancements
Artifacts could be made up of two initial types of composable "Cell" context similar to concepts in Notion and Jupyter Notebooks that can be synced based on a set of parameters and can be interwoven together inside of a single Artifact:
Authored Cells; Are fuzzy, manually curated human or auto-generated AI knowledge (markdown, code, notes, etc.) updated via some sort of patch-artifact tool which would allow for surgical edits (update specific lines, replace text, add/remove blocks) instead of replacing entire artifacts (which is what I am doing now) while making sure to preserve formatting to prevent accidental changes etc.
Example: Overview of the Content Management System in markdown.
Overview of the Content Management System, which also covers the secure media handling system:
## Security-First Image Management
The CMS implements a media authorization system that ensures only images from published posts are publicly accessible:
## Key Security Features
Linkage Table: post_images table maps every image to its parent post
Automatic Sync: Server actions automatically maintain image-to-post relationships
## Data Flow Process
Upload: Author uploads image โ stored in Cloudflare R2
Access: Public request โ JOIN query checks if image belongs to published post
Serve: Authorized requests stream from R2, unauthorized get 403
Source Cells: Are auto-refreshed or updated by some sort of event-driven process so they stay "synced" from configured sources like file systems, databases, APIs, sensor data, etc. This type of cell would be for context like directory trees, database schemas, and other types of configuration information think of it like less-fuzzy knowledge.
Example: Directory of an Next.js App Router Architecture.
src/app/
โโโ (marketing)/
โ โโโ components/
โ โโโ page.tsx
โโโ (cms)/
โโโ posts/
โ โโโ [type]/[slug]/
โ โโโ page.tsx
โโโ api/
โ โโโ auth/[...nextauth]/
โ โโโ media/[...objectKey]/
โ โโโ upload-image/
โโโ login/
โโโ verify/
โโโ layout.tsx
โโโ globals.css
The core idea of the artifacts system is to keep a living clone of the current project you are working on that is always in sync with whatever "sources" and "authored" knowledge you want to be tracked. I really wanted something that wasn't coding specific either and could work with any technical domain. For example I built the SO-ARM100 robotic arm using it to track physical things related to tracking the assembling process, 3D printing the parts, and other physical trouble shooting tasks.
Time Management System โฑ๏ธ
Lastly, Dawn includes built-in time tracking capabilities that integrate with the task and context management system, providing insights into how time is spent across different activities.
Current Features
- Start and stop timers for specific tasks, with automatic task creation if the task doesn't exist yet
- Start timers by task name (natural language) or by specific task ID for precision
- Generate comprehensive time reports filtered by project, date range, or task status
Example Workflows
- "Start tracking time for debugging authentication issues" - automatically creates the task if it doesn't exist and begins timing.
- Generate reports to see total time spent on different projects or compare time allocation across tasks.
That's currently where Dawn stands. It has actually been useful for me and the code is pretty straight forward to manage to I'm always adding new features to it. Always looking for feedback, if you have any ideas on how to improve Dawn shoot me a message!
Appendix
Complete List of Dawn's Tool Registry:
Project Management
create-project
- Create a new project with name and optional descriptionload-project
- Get comprehensive project details including tasks and artifactsdelete-project
- Delete a project by IDupdate-project
- Update a project's name and/or descriptionlist-projects
- List all available projects
Task Management
create-task
- Create a new task within a projectupdate-task
- Update a task's details (name, description, project, status)delete-task
- Delete a task by IDget-project-tasks
- Get all tasks for a specific project, grouped by statussearch-tasks
- Search for tasks by keyword across all projects
Time Tracking
start-task
- Start tracking time for a task by name (creates task if it doesn't exist)stop-task
- Stop the current active task timerstart-timer
- Start tracking time for a specific task by IDstop-timer
- Stop an active timerget-time-report
- Generate a time report for a date range
Artifact Management
create-artifact
- Create a new artifact with title and content for a specific projectget-artifact
- Retrieve an artifact by IDupdate-artifact
- Update an artifact's title and/or contentdelete-artifact
- Delete an artifact by IDlist-project-artifacts
- List all artifacts for a specific projectlist-artifacts
- List all artifacts across all projectssearch-artifacts
- Search for artifacts by title or content across all projects
Proposed/Future Tools
patch-artifact
- Apply precise, granular changes to specific blocks or lines within an artifact