{"_id":"@cyb3rk1d/todo-ai-mcp","_rev":"6-2c4194a3bd72486582d8c3ad62dada06","name":"@cyb3rk1d/todo-ai-mcp","dist-tags":{"latest":"2.0.2"},"versions":{"1.0.0":{"name":"@cyb3rk1d/todo-ai-mcp","version":"1.0.0","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","_id":"@cyb3rk1d/todo-ai-mcp@1.0.0","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"homepage":"https://cybers-todo.vercel.app","bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"bin":{"todo-ai-mcp":"dist/index.js"},"dist":{"shasum":"71f6e0737a9bd1c425a5058ea445de2f4d917f8b","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-1.0.0.tgz","fileCount":7,"integrity":"sha512-hCuuGPYyfHdNnEw59jy6pmSBLSNnQXhgNgUkAUqwfYuHAH0mzkUWblSL2rM98DaU9eon8jjKfPgxzJHAegb1Eg==","signatures":[{"sig":"MEYCIQDh7XvbrxRMvTmqiCYwjrafCZYZLyNdnAO34untTs9nHwIhAMIwhjE6Vf/FVGmE0RSEnDSDaZyxXX9B3+LNAUJWfrcp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17736},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ae14461b7c5aa0d55d78d29e0c39f61dc237414d","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.7.0","description":"MCP server for Todo AI - allows Claude Code to manage your todo list","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.24.4","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.2"},"_npmOperationalInternal":{"tmp":"tmp/todo-ai-mcp_1.0.0_1775699397126_0.6299835714438791","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cyb3rk1d/todo-ai-mcp","version":"1.1.0","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","_id":"@cyb3rk1d/todo-ai-mcp@1.1.0","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"homepage":"https://cybers-todo.vercel.app","bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"bin":{"todo-ai-mcp":"dist/index.js"},"dist":{"shasum":"ec1f73ba87c434522002d73f718208a7eb0f276d","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-1.1.0.tgz","fileCount":7,"integrity":"sha512-CicNPgiXQNS8tbjiUdWhGIDj3PklMELsEttuWyflrUyhq77Ta3ifUhLNZLXPScaV1lfPR4YOte0sukCZtuCElg==","signatures":[{"sig":"MEUCIHf7ZXpSjZUrrWuNmWU0zn5/0hIGxLKOyoT1h9lYWrBzAiEA74YJKac/OgbB2uoD8gH485466F7kJZamYj+jJAg3z8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19343},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"4d242adcc9ed6d5d9ae7ad208d5a8cd7d98d718a","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.7.0","description":"MCP server for Todo AI - allows Claude Code to manage your todo list","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.24.4","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.2"},"_npmOperationalInternal":{"tmp":"tmp/todo-ai-mcp_1.1.0_1775705193360_0.2057791356502141","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@cyb3rk1d/todo-ai-mcp","version":"1.1.1","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","_id":"@cyb3rk1d/todo-ai-mcp@1.1.1","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"homepage":"https://cybers-todo.vercel.app","bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"bin":{"todo-ai-mcp":"dist/index.js"},"dist":{"shasum":"f58d16de2a2648eadb95260dcdafb3f5f07a4403","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-1.1.1.tgz","fileCount":7,"integrity":"sha512-TMvz/40BxZSHqZ8bKL6M7BfbZYaHtKYB6pMm+uVcO3sXDfAxfB5IodgVN8UzRICn6c/rYJbMfMdD9JVyJpm4sw==","signatures":[{"sig":"MEYCIQDoAZOvJGK7yDmX8Iq9xir6ljGU+Ms0QQxvYxocd1eIOgIhAK/2zXarKTjvYoALpSZBJnD5IE+FpQKr89KuFxYrcSb6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19351},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"4d242adcc9ed6d5d9ae7ad208d5a8cd7d98d718a","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.7.0","description":"MCP server for Todo AI - allows Claude Code to manage your todo list","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.24.4","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.2"},"_npmOperationalInternal":{"tmp":"tmp/todo-ai-mcp_1.1.1_1775705467806_0.7990342777471391","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@cyb3rk1d/todo-ai-mcp","version":"2.0.0","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","_id":"@cyb3rk1d/todo-ai-mcp@2.0.0","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"homepage":"https://cybers-todo.vercel.app","bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"bin":{"todo-ai-mcp":"dist/index.js"},"dist":{"shasum":"b06dbb3a0bb4641b600b7ed9b9b2dd53577e5ec2","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-2.0.0.tgz","fileCount":21,"integrity":"sha512-iKmEsRme+DT5D7D3iMAc/Kcdaz5U8NHNbo+aoYXv0zgcfozOteI1rn2RcjEDrNoGFmT5geW9xRwcQq/8bvPbrA==","signatures":[{"sig":"MEYCIQDU7stgjpMgdAENqRSyCFH7OKsdqtok98DL3e8388zU+gIhANjNy5dId+dXPrQQIvhDvxfhoMnc/FkPQUsLRQIfHIIT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51579},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18 <23"},"gitHead":"a287999ec8af93ceb9b0f4b2e4ccb538ceb64987","scripts":{"dev":"tsc --watch","sync":"node dist/index.js sync","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.7.0","description":"MCP server for Todo AI - local-first todo/summary/review management with online sync and Claude Code session-history search","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.24.4","better-sqlite3":"^11.8.1","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.8.3","@types/node":"^22.15.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/todo-ai-mcp_2.0.0_1783445673378_0.14327510792454712","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@cyb3rk1d/todo-ai-mcp","version":"2.0.1","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","_id":"@cyb3rk1d/todo-ai-mcp@2.0.1","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"homepage":"https://cybers-todo.vercel.app","bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"bin":{"todo-ai-mcp":"dist/index.js"},"dist":{"shasum":"830d45b527a11a8cf92f221f6dc424783fd4668b","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-2.0.1.tgz","fileCount":21,"integrity":"sha512-aSG9uZTyTm6vV/et9n48Rrkq5Pogf/lNWp3hbjOO7JMb/ceFZvU5VtqAarcwo7vCZL93dhatc0vDkY9GzLMKUQ==","signatures":[{"sig":"MEQCIDmmYn6JhhrLlpYcLIfCxRLj1KD4NPBFNg4z478m9KWLAiAMqkrhjBDzjpDLqe4/mWyhZcinHq34+OiAngW2/WoNUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51800},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18 <23"},"gitHead":"675aceae33d68587417db43e3ba2ba31f1f37408","scripts":{"dev":"tsc --watch","sync":"node dist/index.js sync","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.7.0","description":"MCP server for Todo AI - local-first todo/summary/review management with online sync and Claude Code session-history search","directories":{},"_nodeVersion":"25.2.1","dependencies":{"zod":"^3.24.4","better-sqlite3":"^11.8.1","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.8.3","@types/node":"^22.15.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/todo-ai-mcp_2.0.1_1783486785735_0.8460885537298803","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"_id":"@cyb3rk1d/todo-ai-mcp@2.0.2","bin":{"todo-ai-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"dist":{"shasum":"519749863611984a832fc36a55e10885f653ece6","tarball":"https://registry.npmjs.org/@cyb3rk1d/todo-ai-mcp/-/todo-ai-mcp-2.0.2.tgz","fileCount":21,"integrity":"sha512-Qc7kN/64q8FINSbvxrz6onneFHCnSWks8EB1GxFkK8FapaKhpOJOuy/aQzJDBGGIJU0b6HFTb7iDzSBShFoTIA==","signatures":[{"sig":"MEUCIF2fxI7MXCKU7Nr70n27U6oa0pakikBmZPRvkU6rkhHuAiEAgkpDaCcoPtXqFbigDzRUNkQo/P2estsCVDsEtg3tYEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKp1fd7jaeucRm7dCN6jR3KmmOWOR+pq83szwKKJL3vgIhALjZ27dFpVveRTO2/CqnBKYX+RD6/mWXdnsOC80d8juZ"}],"unpackedSize":51831},"main":"dist/index.js","name":"@cyb3rk1d/todo-ai-mcp","type":"module","types":"./dist/index.d.ts","author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"engines":{"node":">=22"},"license":"MIT","scripts":{"dev":"tsc --watch","sync":"node dist/index.js sync","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"version":"2.0.2","_npmUser":{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"},"homepage":"https://cybers-todo.vercel.app","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.19.0","description":"MCP server for Todo AI - local-first todo/summary/review management with online sync and Claude Code session-history search","directories":{},"maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.5","better-sqlite3":"^13.0.3","@modelcontextprotocol/sdk":"^1.31.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.2","typescript":"^7.0.2","@types/node":"^26.6.3","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/todo-ai-mcp_2.0.2_1790682499139_0.6452627735004342"}}},"time":{"created":"2026-04-09T01:49:57.047Z","modified":"2026-09-29T11:48:19.599Z","1.0.0":"2026-04-09T01:49:57.259Z","1.1.0":"2026-04-09T03:26:33.572Z","1.1.1":"2026-04-09T03:31:07.987Z","2.0.0":"2026-07-07T17:34:33.496Z","2.0.1":"2026-07-08T04:59:45.863Z","2.0.2":"2026-09-29T11:48:19.223Z"},"bugs":{"url":"https://github.com/ZedTechInfo/todo-ai/issues"},"author":{"url":"cyb3rk1d","name":"Gary Kamoto Mhone"},"license":"MIT","homepage":"https://cybers-todo.vercel.app","keywords":["mcp","claude-code","model-context-protocol","todo","todo-ai","productivity","cyb3rk1d","gary-kamoto-mhone"],"repository":{"url":"git+https://github.com/ZedTechInfo/todo-ai.git","type":"git","directory":"mcp-server"},"description":"MCP server for Todo AI - local-first todo/summary/review management with online sync and Claude Code session-history search","maintainers":[{"name":"cyb3rk1d","email":"kamotomhone@gmail.com"}],"readme":"# @cyb3rk1d/todo-ai-mcp\n\n[![npm version](https://img.shields.io/npm/v/@cyb3rk1d/todo-ai-mcp)](https://www.npmjs.com/package/@cyb3rk1d/todo-ai-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects Claude Code to [Todo AI](https://cybers-todo.vercel.app).\n\n**v2 is local-first.** Todos, summaries, and reviews live in an on-machine SQLite database, so reads and writes are instant and work offline. Changes sync to the Todo AI backend in the background (and on a Stop hook), so your data stays consistent across machines. v2 also imports your **Claude Code session transcripts** into a local full-text index so agents can search prior sessions, decisions, and files touched.\n\n## How it works\n\n- **Local store** — all todo/summary/review operations read and write `~/.todo-ai/todo-ai.sqlite` first. No network round-trip per call.\n- **Sync** — `sync_now` (or the Stop hook) pushes local changes to the backend and pulls remote changes using a delta cursor (`?since=`), with soft-delete tombstones so deletions propagate and last-writer-wins conflict resolution (backend authoritative). The backend is the source of truth across machines.\n- **Session history** — the importer indexes `~/.claude/projects/<slug>/<session>.jsonl` into local SQLite + FTS5. **This data never leaves your machine.**\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_todos` / `get_todo` | List / fetch todos (local) |\n| `create_todo` / `update_todo` / `complete_todo` / `delete_todo` | Manage todos (local, synced) |\n| `get_todos_by_date` / `get_todos_by_range` | Filter todos by date (local) |\n| `get_today_summary` / `list_summaries` / `create_summary` | Daily summaries (local, synced) |\n| `get_current_review` / `list_reviews` | Weekly reviews (local, synced) |\n| `get_recommendations` | AI productivity recommendations (remote) |\n| `generate_daily_summary` / `generate_weekly_review` | AI generation (remote) |\n| `get_ai_keys` / `configure_ai_keys` | Manage per-user AI keys (remote) |\n| **`sync_now`** | Push local changes + pull remote changes |\n| **`sync_status`** | Show dirty/pending counts, cursors, online status |\n| **`search_sessions`** | Full-text search over imported Claude Code sessions (`query`, `--file`, `--since`) |\n| **`show_session`** / **`show_event`** | Inspect an imported session / event |\n| **`import_sessions`** | Import/refresh the local session index |\n\n## Setup\n\n### 1. Generate an API Token\n\n```bash\ncurl -X POST https://cybers-todo.vercel.app/api/auth/api-token \\\n  -H \"Authorization: Bearer <your-access-token>\" \\\n  -H \"Content-Type: application/json\"\n```\n\nReturns a token valid for 30 days.\n\n### 2. Configure Claude Code\n\nAdd to your project's `.mcp.json` (or `~/.claude/settings.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"todo-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cyb3rk1d/todo-ai-mcp\"],\n      \"env\": {\n        \"TODO_AI_API_URL\": \"https://cybers-todo.vercel.app\",\n        \"TODO_AI_TOKEN\": \"<your-api-token>\"\n      }\n    }\n  }\n}\n```\n\n> Without `TODO_AI_TOKEN` the server still runs **local-only** — todo/summary/review tools work against the local DB; sync and AI tools are disabled until a token is set.\n\n### 3. Auto-sync after each task (recommended)\n\nAdd a **Stop hook** so the local store and session index stay current automatically:\n\n```json\n{\n  \"hooks\": {\n    \"Stop\": [\n      { \"matcher\": \"\", \"hooks\": [\n        { \"type\": \"command\", \"command\": \"npx -y @cyb3rk1d/todo-ai-mcp sync\", \"timeout\": 60 }\n      ] }\n    ]\n  }\n}\n```\n\nThe `sync` subcommand runs the importer + sync headlessly. It debounces (skips if it ran in the last 15s) and holds a lockfile, so rapid Stops and multiple Claude Code instances don't stack. For the lowest latency, install globally (`npm i -g @cyb3rk1d/todo-ai-mcp`) and use `\"command\": \"todo-ai-mcp sync\"`.\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `TODO_AI_TOKEN` | For sync/AI | – | API token from Todo AI |\n| `TODO_AI_API_URL` | No | `http://localhost:4000` | Backend API URL |\n| `TODO_AI_DB_PATH` | No | `~/.todo-ai/todo-ai.sqlite` | Local SQLite DB path |\n| `TODO_AI_DIR` | No | `~/.todo-ai` | Data directory (DB, lock, last-sync) |\n| `CLAUDE_PROJECTS_DIR` | No | `~/.claude/projects` | Where to read transcripts from |\n\n## Development\n\n```bash\ngit clone https://github.com/ZedTechInfo/todo-ai.git\ncd todo-ai/mcp-server\nnpm install\nnpm run build      # tsc → dist/\nnpm test           # vitest\nnpm run dev        # tsc --watch\n```\n\n**Native module note:** this package depends on `better-sqlite3`, which ships N-API prebuilt binaries (Node 22+) for Linux, macOS and Windows on x64/arm64, so no compile step is needed on those platforms. Elsewhere, `npm install` builds from source and needs Python + a C/C++ toolchain.\n\n## License\n\n[MIT](LICENSE) - Gary Kamoto Mhone (cyb3rk1d)\n","readmeFilename":"README.md"}