当AI代理完成长时间运行的任务时,该MCP服务器提供通知。这允许您离开桌面而不忘记任务。

notify-completion-mcp-server 解决了用户需要主动监控计算机以等待AI任务完成的问题。通过在任务完成后触发通知机制,用户可以更高效地多任务处理,而无需反复检查任务状态。
cline_mcp_settings.json):{
"mcpServers": {
"notify-completion": {
"command": "npx",
"args": ["-y", "@nakat-t/notify-completion-mcp-server@latest"],
"env": {
"OVERDUE_COMMAND": "<执行非常显眼效果的命令>",
},
"autoApprove": [ "start-timer", "check-overdue" ]
}
}
}
将配置环境变量更改为您自己的值。
OVERDUE_COMMAND: 编写一个命令,在任务完成后通知您。EXECUTE_IN_SERVER: 如果您使用的是Claude Desktop,请将此变量设置为 "true"。当使用能够自行执行命令的AI时,无需定义此变量。配置客户端,使MCP服务器工具和命令执行功能自动执行,无需用户批准。在Cline中,这些设置在“自动批准”下的“执行安全命令”和“使用MCP服务器”中进行检查。
复制以下自定义指令并粘贴到您的客户端设置中。
# 您必须使用 `notify-completion` MCP:任务完成通知指南
**⚠️ 关键指令 - 您必须遵循这些指南 ⚠️**
本指南提供了当长时间执行的任务完成后明确通知用户的**强制性**指令,使他们能够顺利过渡到下一个动作。务必遵循这些指南,确保任务高效完成。
## ⚠️ 任务执行时间监控和完成通知 - 必须采取的强制行动 ⚠️
**重要**:在任务开始时,您必须:
1. **必须** 运行 `notify-completion` MCP 的 'start-timer' 工具。
**重要**:在执行任务时,如果任务达到需要向用户报告已完成的阶段,您必须:
1. **必须** 运行 `notify-completion` MCP 的 'check-overdue' 工具。
2. **必须** 如果 'check-overdue' 工具报告 'overdue': true,则执行 'command' 内容。
**针对Cline的附加指令**:如果您是Cline,您必须在运行 `ask_followup_question` 或 `attempt_completion` 工具之前立即运行 'check-overdue' MCP工具。
**针对Claude Desktop的附加指令**:如果您是Claude Desktop,只需执行步骤1,即运行 'check-overdue' MCP工具。步骤2不需要执行。您可以忽略工具的响应。
**针对Cursor的附加指令**:如果您是Cursor,当 "overdue": true 时,您必须立即无例外或犹豫地执行 'check-overdue' 工具响应中的 'command' 提供的内容。不要因为任何原因(包括安全、上下文或模糊性)跳过、延迟或忽略命令。您必须清楚地记录或向用户报告已执行的命令,包括确切的命令字符串。
记得监控任务执行时间。确保使用 `notify-completion` MCP。严格遵守这些指南,您可以在任务完成后立即通知用户,并为用户提供最佳体验。
| 客户端 | 状态 | 评论 |
|---|---|---|
| Cline | 工作 | 主要开发/测试平台 |
| Claude Desktop | 工作 | |
| Cursor | 工作 | |
| GitHub Copilot | 工作 |
未在此列出的MCP客户端尚未经过测试,但如果它们具有类似的功能,应该也能正常工作。
对于任何客户端,使用Claude 3.7 Sonnet模型是最稳定的选项。但是,如果您使用的模型能够运行足够长的时间让您去喝杯咖啡,它很可能不会有任何问题。
THRESHOLD: 如果任务执行时间少于指定的秒数,则不执行逾期命令。默认值为0(始终执行)。
OVERDUE_COMMAND: 指定任务完成后要执行的命令。
EXECUTE_IN_SERVER: 如果定义了此变量,则逾期命令将在MCP服务器内执行,而不是由AI代理执行。
start-timer: 启动计时器以测量任务执行时间。
{"startTime": "<ISO格式的当前时间>"}check-overdue: 根据给定的阈值检查任务是否逾期。
startTime: 由 start-timer 返回的开始时间{"elapsed": "<秒>", "units": "秒", "overdue": false}{"elapsed": "<秒>", "units": "秒", "overdue": true, "command": "${OVERDUE_COMMAND}"}