moab-notify
v0.1.1
Published
MCP server for moab.tools notifications (apprise.moab.tools) — manage notification recipients (Telegram + email) from an LLM.
Readme
moab-notify — MCP server for moab.tools notifications
Connect Claude Code (or any MCP client) to apprise.moab.tools and manage your notification
address book in natural language: list recipients, register or update a recipient's channels
(Telegram and/or email), remove a recipient, and send a test notification.
The server is a thin local stdio client: it forwards each tool call to the apprise.moab.tools
admin API with your Bearer token. No secrets live in the package — access is protected by Keycloak
and requires the apprise-admin role. (Applications send notifications through the gateway's
in-cluster API; this MCP only manages who-gets-what.)
Install
claude mcp add notify --scope user -- npx -y moab-notifyOn Windows, wrap with cmd /c (npx is a .cmd shim):
claude mcp add notify --scope user -- cmd /c npx -y moab-notify(notify is just the local name — call it whatever you like. Requires Node.js 20+.)
Sign in
On your first operation the server asks you to sign in. Run the login tool — it returns a link
and a short code; open the link in a browser, confirm via auth.moab.tools (the same corporate
account as the portal lk.moab.tools), then repeat your request. You need the apprise-admin
role. The token refreshes automatically; you won't need to sign in again while the session is active.
auth_status— who is signed in.auth_logout— sign out (removes stored tokens).
Tools
| Tool | Purpose |
|---|---|
| recipient_list | list the address book (recipients and their channels) |
| recipient_set | create or update a recipient by email id; set channels (Telegram chat_id and/or email). Given fields are overwritten, omitted ones are kept |
| recipient_remove | remove a recipient from the address book |
| notify_test | send a test notification to a recipient over their channels |
Identity & channels
A recipient is identified by email (the same person across all tools). Channels are an arbitrary
set: a Telegram chat_id and/or email delivery. Telegram-only = set just telegram_chat_id,
leave email_enabled off — the email is only an identifier then, nothing is mailed to it.
Getting a Telegram chat_id
The recipient presses Start in @MoabAlertsBot. Their numeric id (their Telegram user id, which
equals the private-chat id) is the chat_id. A future pending_starts tool will read it
automatically; for now obtain it out-of-band and pass it to recipient_set.
Examples
Ask in plain language, e.g.:
- "register [email protected] with telegram chat id 358024411"
- "show the address book"
- "also enable email for [email protected]"
- "send a test notification to [email protected]"
- "remove [email protected] from notifications"
Configuration (env, optional)
| Variable | Default |
|---|---|
| NOTIFY_API_BASE | https://apprise.moab.tools |
| KEYCLOAK_AUTHORITY | https://auth.moab.tools/realms/moab |
| KEYCLOAK_CLIENT | apprise-cli |
| MOAB_CONFIG_DIR | ~/.moab (tokens stored in ~/.moab/notify-mcp/credentials.json) |
