prompt-time

prompt-time

Schedule Windows desktop reminders from Claude Desktop using PowerShell and Windows Task Scheduler. Supports one-time and recurring reminders that persist across reboots.

Category
访问服务器

README

prompt-time

CI

Schedule Windows desktop reminders directly from Claude Desktop. Zero dependencies — just PowerShell + Windows Task Scheduler.

What it does

Adds three tools to Claude Desktop:

Tool What it does
schedule_reminder Set a one-time or recurring desktop reminder
list_reminders Show every reminder currently scheduled
cancel_reminder Cancel a reminder by ID

Reminders persist across reboots and Claude restarts. There is no cloud surface — everything runs locally.

Install in 60 seconds

  1. Download prompt-time-v2.2.6.zip from the latest release.
  2. Right-click the zip → Extract All. Windows must extract — running install.bat from inside the zip preview window will not work.
  3. Open the extracted folder, double-click install.bat.
  4. If Claude Desktop is running, the installer will prompt to restart it. Accept — the MCP tools only show up after Claude Desktop is restarted.
  5. Done. The tools are live.

No Node, no npm, no admin rights, no internet required.

The extracted folder is disposable after install. v2.2.6+ copies both the MCP server and the watcher into the prompt-time data directory at install time, and points Claude Desktop's config + the scheduled task at the data-dir copies. You can move or delete the extracted folder afterwards without breaking anything. (Re-run install.bat from a fresh extract if you ever want to upgrade.)

Usage examples

Just talk to Claude:

"Remind me to send the weekly update at 4pm today" "Set a reminder every weekday at 9am to check my inbox" "Remind me about the board call next Monday at 2pm" "What reminders do I have set?" "Cancel reminder PROMPTTIME-A1B2C3D4"

Recurrence: once, daily, weekly, weekdays. Granularity is ~10 seconds (the watcher's poll interval).

How it works

Two pieces:

  1. MCP server (prompt_time.ps1) — runs inside Claude Desktop's process tree. Validates and enqueues reminders to a JSONL file on disk.
  2. Watcher daemon (prompt-time-watcher.ps1) — registered once at install as a Task Scheduler At LogOn task. Polls the queue, renders the toast popup in-process, and advances recurring entries.

The MCP server never talks to Task Scheduler at runtime, never spawns a process, and never displays UI. It only writes one JSONL line per reminder. Everything else is the watcher's job.

Why two processes — the MSIX boundary

Claude Desktop ships as an MSIX-packaged app. MSIX containers transparently virtualize file writes: a server running inside the package that calls Add-Content $env:APPDATA\prompt-time\queue.jsonl does not write to %APPDATA%\Roaming\prompt-time\queue.jsonl — it writes to a per-package shadow tree under %LOCALAPPDATA%\Packages\<package-family>\LocalCache\….

Anything Task Scheduler spawns runs outside the package, so a per-reminder schtasks task would look for files at the real path and find nothing.

prompt-time resolves this once: at startup, every component (prompt_time.ps1, prompt-time-watcher.ps1, install.ps1, uninstall.ps1) discovers the Claude AppX package and computes the same canonical data directory inside its LocalCache. Server writes and watcher reads land at the same physical file. The watcher renders the popup itself rather than asking Task Scheduler to do it, which keeps every state-bearing operation on the same side of the boundary.

The installer also pre-creates the queue file at the canonical path before the MCP server's first write — without that, MSIX file-virtualization redirects new file creation into the package shadow even though existing files at the real path are written through.

The same trap bites the Claude Desktop config itself. If MSIX-packaged Claude has ever written to its own claude_desktop_config.json (e.g. saving preferences), MSIX materializes a per-package shadow copy at %LOCALAPPDATA%\Packages\<family>\LocalCache\Roaming\Claude\claude_desktop_config.json and then reads from the shadow on every subsequent boot. An installer that writes only to %APPDATA% becomes invisible to Claude on those machines. v2.2.3+ reads shadow-first as the source of truth and writes the merged config to both paths atomically; uninstall removes from both. v2.2.4 adds post-write self-verify so install fails loudly with an actionable error if the entry doesn't survive (AV rollback, managed-policy override, etc.) instead of reporting a false success. Run diagnose.bat for a full breakdown.

Troubleshooting

Notifications muted by Focus Assist. Windows Focus Assist (Settings → System → Focus) silences toasts. Either turn it off or add powershell.exe to the Priority list.

Tools don't appear in Claude Desktop.

  1. Fully quit Claude Desktop (right-click tray icon → Quit) and reopen it. The "X" close button only minimizes; tools won't reload.
  2. Run diagnose.bat from the extracted folder. It reads your config, spawns prompt_time.ps1 the way Claude Desktop will, reads Claude Desktop's MCP logs, and prints an actionable hint for each failure. Most "install ran but nothing appeared" cases are diagnosed here without needing IT.
  3. If diagnose.bat says all checks pass but tools still don't show: run diagnose.bat -Json and attach the output when filing a bug.

install.bat closes immediately. Run it from a cmd prompt instead so you can read the error: install.bat from inside the unzipped folder. The installer also writes a debug log at %APPDATA%\prompt-time\prompt-time.debug.log (or the MSIX LocalCache equivalent) — check there.

Reminders not firing. Check the watcher task is running:

Get-ScheduledTask -TaskName PROMPTTIME-Watcher | Get-ScheduledTaskInfo

LastTaskResult should be 267009 (running) or 0 (success).

Uninstall

Double-click uninstall.bat. It removes the prompt-time entry from Claude Desktop's config, deletes the PROMPTTIME-Watcher scheduled task, and clears the data directory. Other MCP servers in your config are untouched.

Tests

.\tests\run.ps1

Installs Pester 5 if missing, runs the Pester suite, and emits NUnit XML at tests/pester-results.xml. CI runs the same harness plus Invoke-ScriptAnalyzer on every push.

Security

See SECURITY.md for the trust model, supply-chain story, and how to report a vulnerability. Short version: the trust boundary is your local Windows user; reminder titles and messages are stored on disk in cleartext (don't put secrets in them); prompt-time registers a logon-time scheduled task as a standard persistence primitive.

License

MIT — see LICENSE.


Built by Ryan Stewart

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选