omni-notify-mcp 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -1
- package/dist/ui/server.js +31 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -171,7 +171,13 @@ const server = new McpServer({ name: "notify-mcp", version: "1.2.0" }, {
|
|
|
171
171
|
instructions: "This is the stdio bridge for notify-mcp. It pushes unsolicited user " +
|
|
172
172
|
"messages to the agent via `notifications/claude/channel` when the host " +
|
|
173
173
|
"supports Channels (Claude Code v2.1.80+). Otherwise call `wait_for_inbox` " +
|
|
174
|
-
"as a long-poll to reliably receive user messages as tool results
|
|
174
|
+
"as a long-poll to reliably receive user messages as tool results.\n\n" +
|
|
175
|
+
"ALWAYS call `notify` when: (a) a task that took >60s of wall-clock time " +
|
|
176
|
+
"just finished (success or failure), (b) you have a question or need a " +
|
|
177
|
+
"decision, (c) something important happened the user needs to know right " +
|
|
178
|
+
"now. Idle/DND gating is handled server-side — fire notify and let the " +
|
|
179
|
+
"server decide routing. Err on the side of notifying: a wrong-call gets " +
|
|
180
|
+
"silently downgraded by idle gating; a missed notify costs the user hours.",
|
|
175
181
|
});
|
|
176
182
|
// Thin proxy: forward a tool call to the HTTP server and return its content
|
|
177
183
|
// block array verbatim. Error shape matches what the SDK expects from tool
|
package/dist/ui/server.js
CHANGED
|
@@ -1116,12 +1116,37 @@ channels are in use — just call 'notify' or 'ask' with a generic message.
|
|
|
1116
1116
|
|
|
1117
1117
|
BEHAVIORAL RULES for every client that connects:
|
|
1118
1118
|
|
|
1119
|
-
1.
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1119
|
+
1. ALWAYS call 'notify' in these three situations — idle or not, DND or not,
|
|
1120
|
+
the server decides routing, you decide whether to fire:
|
|
1121
|
+
|
|
1122
|
+
(a) LONG PROCESSING FINISHED. Any single task that took more than ~60
|
|
1123
|
+
seconds of wall-clock time (long build, test run, backtest, migration,
|
|
1124
|
+
big refactor, multi-step plan) gets a 'notify' the moment it completes
|
|
1125
|
+
— success OR failure. Rule of thumb: if the user could have reasonably
|
|
1126
|
+
walked away to grab coffee while you ran, they need a ping on the way
|
|
1127
|
+
back. Don't try to guess whether they were watching. Just notify.
|
|
1128
|
+
|
|
1129
|
+
(b) YOU HAVE A QUESTION OR NEED A DECISION. Any time you're about to ask
|
|
1130
|
+
the user something — "should I delete these?", "which branch?",
|
|
1131
|
+
"proceed with plan B?" — fire 'notify' (or 'ask' for blocking
|
|
1132
|
+
two-way). Silent questions in the terminal get missed; a notification
|
|
1133
|
+
does not.
|
|
1134
|
+
|
|
1135
|
+
(c) SOMETHING IMPORTANT HAPPENED that the user needs to know about right
|
|
1136
|
+
now. Examples: a test suddenly failed after being green, a destructive
|
|
1137
|
+
operation is about to run, you found a security issue, a deploy
|
|
1138
|
+
succeeded, a production service looks degraded, you hit an
|
|
1139
|
+
unrecoverable error. When in doubt on importance, ERR ON THE SIDE OF
|
|
1140
|
+
NOTIFYING — the server's idle gating will automatically downgrade a
|
|
1141
|
+
mis-judged 'normal' to a silent desktop banner if the user is active,
|
|
1142
|
+
so the cost of over-notifying is near zero. The cost of missing a
|
|
1143
|
+
real event is that the user finds out 4 hours later.
|
|
1144
|
+
|
|
1145
|
+
The SERVER handles all routing (DND, idle threshold, channel selection,
|
|
1146
|
+
priority escalation). You do NOT need to pre-flight with
|
|
1147
|
+
'get_idle_seconds' before these three triggers — fire 'notify' and let
|
|
1148
|
+
the server decide. get_idle_seconds is the HEARTBEAT primitive (rule 6),
|
|
1149
|
+
not a gate on legitimate milestones.
|
|
1125
1150
|
|
|
1126
1151
|
2. Use priority correctly:
|
|
1127
1152
|
- 'low' = email only — for low-stakes status (background completion).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omni-notify-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "An MCP server that lets AI agents (Claude, Cursor, etc.) reach you on any channel — desktop, Telegram, SMS, email — with two-way ask/reply, real-time inbox push, Do Not Disturb, idle gating, multi-session routing, and a one-page web UI for setup. Zero config code; configure once, agents call notify/ask.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|