{"_id":"@daveremy/tickler-mcp","_rev":"2-d1cb16d106afc6fe036d134096e938c0","name":"@daveremy/tickler-mcp","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@daveremy/tickler-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","tickler","reminder","cli","agent","claude"],"license":"MIT","_id":"@daveremy/tickler-mcp@1.0.0","maintainers":[{"name":"daveremy","email":"email@daveremy.com"}],"homepage":"https://github.com/daveremy/tickler-mcp#readme","bugs":{"url":"https://github.com/daveremy/tickler-mcp/issues"},"bin":{"tickler":"dist/cli.js","tickler-mcp":"dist/mcp.js"},"dist":{"shasum":"59a3eabfc391beff1149cae923afe0839bfc9fb7","tarball":"https://registry.npmjs.org/@daveremy/tickler-mcp/-/tickler-mcp-1.0.0.tgz","fileCount":15,"integrity":"sha512-cj66RTYiXeJELk89FfYp5JkiyDV/HHarOpcF8rPvmiOi2VjYIuE1q9Ks4t7BvOSvM4d9yc6/DQvyKryKGeOFcg==","signatures":[{"sig":"MEUCIQD92jE0XWvL/jOTv8+W4xi3gYyRFnViGd8L/YKy3uCzyQIgaWI6yWc6N01GMLaMXhZm0zGuA6uruDYqdvd1UyFKZIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25582},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e94dd699f9a63ede18abf0c3282cb64252262c16","scripts":{"dev":"tsx src/cli.ts","build":"tsc && chmod +x dist/cli.js dist/mcp.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"daveremy","email":"email@daveremy.com"},"repository":{"url":"git+https://github.com/daveremy/tickler-mcp.git","type":"git"},"_npmVersion":"11.12.0","description":"Persistent tickler/reminder MCP server for Claude Code and any MCP client","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^3.25.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tickler-mcp_1.0.0_1774548774678_0.6720023059390361","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@daveremy/tickler-mcp","version":"1.0.1","description":"Persistent tickler/reminder MCP server for Claude Code and any MCP client","type":"module","license":"MIT","engines":{"node":">=18.0.0"},"keywords":["mcp","model-context-protocol","tickler","reminder","cli","agent","claude"],"repository":{"type":"git","url":"git+https://github.com/daveremy/tickler-mcp.git"},"bin":{"tickler":"dist/cli.js","tickler-mcp":"dist/mcp.js"},"scripts":{"build":"tsc && chmod +x dist/cli.js dist/mcp.js","prepublishOnly":"npm run build","dev":"tsx src/cli.ts"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","commander":"^14.0.3","zod":"^3.25.0"},"devDependencies":{"@types/node":"^22.0.0","tsx":"^4.21.0","typescript":"^5.7.0"},"gitHead":"e94dd699f9a63ede18abf0c3282cb64252262c16","_id":"@daveremy/tickler-mcp@1.0.1","bugs":{"url":"https://github.com/daveremy/tickler-mcp/issues"},"homepage":"https://github.com/daveremy/tickler-mcp#readme","_nodeVersion":"25.8.1","_npmVersion":"11.12.0","dist":{"integrity":"sha512-2uHvjiVK+g3vS16M1GV0jNrjxY5MjEDdz5ukkvZzBsvNareXBcIsK2BD2W5umxyb7eoqQL5w+5j36d3Y4jWWoA==","shasum":"74bb364d39e06041415440db040611855b910bc7","tarball":"https://registry.npmjs.org/@daveremy/tickler-mcp/-/tickler-mcp-1.0.1.tgz","fileCount":15,"unpackedSize":25578,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYIeCY1go985XjXCz3ZkIMlVqFXHS/hpXOA0mi+87+UAIgeQtrx1mgYt4DrR25LinLq7LePhy75ciLeU6EWywKDBk="}]},"_npmUser":{"name":"daveremy","email":"email@daveremy.com"},"directories":{},"maintainers":[{"name":"daveremy","email":"email@daveremy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tickler-mcp_1.0.1_1774548801646_0.6195809555813161"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-26T18:12:54.540Z","modified":"2026-03-26T18:13:21.932Z","1.0.0":"2026-03-26T18:12:54.851Z","1.0.1":"2026-03-26T18:13:21.801Z"},"bugs":{"url":"https://github.com/daveremy/tickler-mcp/issues"},"license":"MIT","homepage":"https://github.com/daveremy/tickler-mcp#readme","keywords":["mcp","model-context-protocol","tickler","reminder","cli","agent","claude"],"repository":{"type":"git","url":"git+https://github.com/daveremy/tickler-mcp.git"},"description":"Persistent tickler/reminder MCP server for Claude Code and any MCP client","maintainers":[{"name":"daveremy","email":"email@daveremy.com"}],"readme":"# tickler-mcp\n\nPersistent ticklers/reminders for Claude Code agents and any MCP client. Ticklers are stored in a local JSON file — they survive session restarts, reconnects, and machine reboots.\n\n**The core problem it solves:** Claude agents run in sessions. When a session ends, in-memory state is gone. If an agent wants to follow up on something in 3 days, it has no place to put that intention. tickler-mcp is that place.\n\n## Install\n\n### As an MCP server (recommended)\n\n```bash\n# npx — no install required\nnpx -y @daveremy/tickler-mcp\n\n# or install globally\nnpm install -g @daveremy/tickler-mcp\n```\n\n### Claude Code plugin\n\n```bash\nclaude plugin add @daveremy/tickler-mcp\n```\n\nOr add manually to `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"tickler-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@daveremy/tickler-mcp\"]\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"tickler-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@daveremy/tickler-mcp\"]\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to your MCP config under `mcpServers` — same format as Claude Desktop above.\n\n## Storage\n\nDefault: `~/.tickler/ticklers.json`\n\nOverride with an environment variable:\n\n```json\n{\n  \"mcpServers\": {\n    \"tickler-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@daveremy/tickler-mcp\"],\n      \"env\": {\n        \"TICKLER_STORAGE_PATH\": \"/path/to/your/ticklers.json\"\n      }\n    }\n  }\n}\n```\n\n## MCP Tools\n\n| Tool | Description |\n|---|---|\n| `tickler_create` | Create a new tickler |\n| `tickler_check` | Return past-due pending ticklers (use in cron/morning review) |\n| `tickler_list` | List all ticklers, optionally filtered by status or tag |\n| `tickler_complete` | Mark a tickler done |\n| `tickler_delete` | Permanently remove a tickler |\n| `tickler_snooze` | Push due date forward by a duration: \"1d\", \"3h\", \"1w\", \"30m\" |\n\n## CLI\n\nAfter installing globally or via npx:\n\n```bash\n# Check what's due\ntickler check\n\n# List all\ntickler list\ntickler list --status pending\ntickler list --tag projects\n\n# Create\ntickler create \"Follow up on invoice\" --due \"2026-04-01T09:00:00-07:00\" --body \"Invoice #1042 sent March 26\"\ntickler create \"Weekly review\" --due \"2026-03-30T08:00:00-07:00\" --tags \"recurring,review\"\n\n# Complete\ntickler complete <id>\n\n# Delete\ntickler delete <id>\n\n# Snooze (duration string: 30m, 3h, 1d, 1w)\ntickler snooze <id> 3d\ntickler snooze <id> 4h\n```\n\n## Integration Patterns\n\n### Morning review polling\n\nIn your daily review routine, call `tickler_check` first. If anything is returned, surface it to the user before proceeding with the rest of the review.\n\n### Agent cron jobs\n\nAgents running on a schedule (via `CronCreate`) can call `tickler_check` at startup. This is the primary use case — an agent sets a tickler, the session ends, and a future session picks it up automatically.\n\nExample prompt:\n```\nAt the start of each session, call tickler_check. If any past-due ticklers are found,\nsurface them to the user and ask what to do.\n```\n\n### Creating follow-ups from within a session\n\n```\nUser: \"Remind me to follow up on this in a week\"\nAgent: [calls tickler_create with due = now + 7 days]\n```\n\n### Snoozing instead of completing\n\nIf the user isn't ready to act on a tickler but doesn't want it cluttering the list:\n\n```\nAgent: [calls tickler_snooze with id: \"...\", duration: \"3d\"]\n```\n\n## Future: Push Notifications via MCP Sampling\n\nThe MCP specification includes a Sampling capability that would allow servers to proactively notify clients — essentially push notifications from the MCP server to the agent. When client support for Sampling matures, tickler-mcp can be extended to push overdue reminders without requiring a polling step.\n\nFor now, polling via `tickler_check` in cron jobs and morning reviews is the reliable pattern.\n\n## Development\n\n```bash\ngit clone https://github.com/daveremy/tickler-mcp.git\ncd tickler-mcp\nnpm install\nnpm run build\n\n# Test CLI\nnode dist/cli.js create \"Test\" --due \"2026-04-01T00:00:00Z\" --body \"testing\"\nnode dist/cli.js list\n\n# Test MCP (stdio)\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}' | node dist/mcp.js\n```\n\nSee `CLAUDE.md` for full dev guide.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}