An open-source, privacy-first personal context tracking system for knowledge workers. Track what you're working on, when you switch contexts, and expose that information to AI tools via MCP.
Knowledge workers lose track of their work. You start 10 things, finish 2, and forget about the other 8. Personal Context Server helps you:
- Remember what you were doing across context switches
- Track time naturally without manual timers
- Give AI assistants real context about your work
- Own your data - everything stays local
ββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β OnTask (C#) ββββββΆβ SQLite Database βββββββ ActivityMonitor β
β Manual Tasks β β Shared Context β β (Python) β
ββββββββββββββββ ββββββββββββ¬ββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β PersonalContextMCP β
β (TypeScript) β
β Exposes to AI Tools β
βββββββββββββββββββββββββ
ββββββββββββββββββββββββ
β Browser Extensions β
β - Claude.ai ββββ
β - ChatGPT (future) β β HTTP (localhost:8766)
β - Gemini (future) β β
ββββββββββββββββββββββββ β
β
βββββββββββββββββββββββ
β ConversationTracker β
β (Python Service) β
ββββββββββββ¬βββββββββββ
β
β
βββββββββββββββββββββββ
β SQLite Database β
β + conversations β
β + messages (FTS5) β
ββββββββββββ¬βββββββββββ
β
β
βββββββββββββββββββββββ
β PersonalContextMCP β
β + search tools β
βββββββββββββββββββββββ
- Hotkey-activated task tracker (
Ctrl+Shift+0) - System tray app with modern WPF UI
- Manual task entry - tell it what you're working on
- Shows recent task history
- Tracks active windows and applications automatically
- Measures time spent in each context
- Detects document/file context from window titles
- Runs in background - no UI needed
π ActivityMonitor Documentation
- MCP server for AI tools (Claude Desktop, Cursor, etc.)
- Exposes activity and task data via natural language queries
- Read-only access to context database
- Query by time, application, or content
- Captures AI conversations from Claude, ChatGPT, Gemini, Perplexity
- Full-text search across all your chat history
- Browser extensions for automatic capture
- MCP integration - search conversations from within Claude
π ConversationTracker Documentation
Note: ConversationTracker is completely optional. The core Personal Context Server (OnTask + ActivityMonitor + MCP) works independently.
- Windows 10+ (for OnTask)
- Python 3.8+ (for ActivityMonitor)
- Node.js 18+ (for MCP server)
- .NET 8.0 (for OnTask)
cd database
python init_database.pycd activity-monitor
pip install -e .
python activity_monitor.pydotnet build -c Release
dotnet runcd personal-context-mcp
npm install
npm run buildEdit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"personal-context": {
"command": "node",
"args": ["C:\\path\\to\\personal-context-mcp\\dist\\index.js"]
}
}
}- Launch OnTask - it sits in your system tray (tomato icon)
- Press
Ctrl+Shift+0to enter current task - View recent tasks in the UI
Run in background:
python activity_monitor.pyOr install as a Windows service (see ActivityMonitor docs).
Once the MCP server is configured, ask Claude:
Core queries:
"What was I working on this morning?"
"Show me my VS Code activity from yesterday"
"What tasks have I been switching between?"
"Give me a summary of this week's work"
With ConversationTracker (optional):
"Search my past conversations about Python asyncio"
"What did I discuss with ChatGPT yesterday?"
"Find the conversation where I asked about database indexing"
"Show me my recent Claude conversations"
Claude will use the MCP server to query your local database and provide context-aware responses.
All data stays local. Nothing is ever sent to any server.
- Database:
%APPDATA%\PersonalContext\context.db - OnTask settings:
%APPDATA%\OnTask\settings.json - No telemetry, no cloud, no tracking
- You can inspect, export, or delete your data anytime
- Timestamp
- Application name (e.g., "Code.exe", "chrome.exe")
- Window title
- Document path (when detectable)
- Duration in window
- Task description
- Start time
- End time (when completed)
- Status (active/completed)
- From/to task IDs
- Switch time
- Trigger type (manual/automatic)
- Manual task tracking (OnTask)
- Automatic activity monitoring (Windows)
- Shared SQLite database
- MCP server for AI integration
- Time-based queries
- Application usage tracking
- Task history and search
- AI conversation capture (Claude.ai)
- Full-text search (SQLite FTS5)
- Multi-platform support (ChatGPT, Gemini, Perplexity planned)
- Browser extension for Claude
- MCP integration (3 new tools)
- Conversation summaries
- ChatGPT, Gemini, Perplexity browser extensions
- Semantic search over activities and conversations
- AI-generated activity summaries
- Conversation topic extraction
- Neo4j option for graph relationships
- Linux support for ActivityMonitor
- macOS improvements
- Multi-device sync (optional, encrypted)
- Pomodoro timer integration
- Task categories and tags
personal-context-server/
βββ database/ # Database schema and initialization
β βββ schema.sql
β βββ init_database.py
β βββ README.md
βββ activity-monitor/ # Python activity tracking component
β βββ activity_monitor.py
β βββ requirements.txt
β βββ setup.py
β βββ README.md
βββ personal-context-mcp/ # TypeScript MCP server
β βββ src/
β β βββ index.ts
β βββ package.json
β βββ tsconfig.json
β βββ README.md
βββ Services/ # C# OnTask services
β βββ DatabaseService.cs
β βββ TaskHistoryService.cs
β βββ SettingsService.cs
β βββ GlobalHotKeyService.cs
βββ Models/ # C# data models
β βββ TaskItem.cs
β βββ AppSettings.cs
βββ MainWindow.xaml # OnTask WPF UI
βββ App.xaml
βββ OnTask.csproj
βββ README.md # This file
βββ LICENSE
- WPF: Modern Windows UI framework
- System.Data.SQLite: Database access
- Hardcodet.NotifyIcon.Wpf: System tray integration
- Newtonsoft.Json: Settings serialization
- psutil: Cross-platform process utilities
- pywin32: Windows API access (Windows only)
- pyobjc: macOS API access (macOS only)
- sqlite3: Built-in database access
- @modelcontextprotocol/sdk: MCP protocol implementation
- better-sqlite3: Fast SQLite access
- TypeScript 5: Type-safe development
- Visual Studio 2022 or VS Code (for C#)
- Python 3.8+ with pip
- Node.js 18+ with npm
- Git
# Database
cd database
python init_database.py
# ActivityMonitor
cd activity-monitor
pip install -e .
# OnTask
dotnet restore
dotnet build -c Release
# MCP Server
cd personal-context-mcp
npm install
npm run build# OnTask
dotnet test
# ActivityMonitor
# TODO: Add tests
pytest
# MCP Server
# TODO: Add tests
npm testMake sure you've initialized the database:
cd database
python init_database.pyThe database should be created at %APPDATA%\PersonalContext\context.db.
Windows: Make sure you have pywin32 installed:
pip install pywin32macOS: Grant accessibility permissions to Terminal or your Python executable.
- Check the config file syntax (must be valid JSON)
- Ensure the path to
index.jsis absolute and correct - Restart Claude Desktop completely
- Check Claude Desktop logs (Help β View Logs)
Another application may be using Ctrl+Shift+0. Close other productivity tools or check for hotkey conflicts.
Contributions are welcome! This project aims to be:
- Privacy-first - user data never leaves their machine
- Open - no proprietary dependencies
- Practical - solves real problems for knowledge workers
- Well-documented - easy to understand and extend
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE
Inspired by:
- Pieces OS (but open and independent)
- Model Context Protocol (Anthropic)
- The need for better context management tools
- The Pomodoro Technique
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: See repository for contact info
Built with β€οΈ by developers who forget what they were working on