servers / ntfy-mcp-server

ntfy-mcp-server

communitystdiolocalwrite capablehealthy

Send, manage, and replay ntfy push notifications via MCP. STDIO or Streamable HTTP.


01Tools · 4

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
ntfy_fetch_messages
Poll cached messages from one or more ntfy topics with optional filters. Returns a snapshot, not a live stream — use it to confirm delivery, replay missed alerts, or audit topic activity. Multiple topics are passed as a comma-separated list. Long bodies are truncated client-side to keep list responses bounded; refetch with that message `id` to read one in full, or pass the `id` as `since` to page from that point.
readfalseunknown
ntfy_manage_message
Clear (mark read & dismiss) or delete a previously-sent ntfy notification by `sequence_id`. Append-only: the original message stays in cache and a `message_clear`/`message_delete` event is emitted to subscribers. Re-issuing the same operation is safe — message state does not change, but a fresh event fires each time. ntfy.sh accepts unknown sequence IDs without error; stricter ntfy variants surface a `not_found` failure. The first call always asks the user to confirm the topic, `sequence_id`, and operation and comes back requesting that input rather than a result; reissue the same call with the answer attached to carry it out. Declining fails the call with `consent_declined`.
readfalseunknown
ntfy_publish_message
Send or update a push notification on an ntfy topic. Topics are created on first publish — treat the topic name as a secret because anyone who knows it can publish or subscribe. Set `sequence_id` to update a previously-published message; otherwise the call creates a new one. Use `ntfy_search_emoji_tags` to look up emoji short codes for `tags`. A publish carrying `email`, `call`, or a `broadcast`/`http` action button reaches beyond the notification drawer, so that call always asks the user to confirm the specific target first and comes back requesting that input rather than a result; reissue the same call with the answer attached to send it. Declining fails the call with `consent_declined`. A plain notification publishes on the first call.
writetrueunknown
ntfy_search_emoji_tags
Look up ntfy emoji tag short codes. Use the returned `tag` strings in `ntfy_publish_message`'s `tags` field to render emojis on the recipient's device. Without a query, returns the first slice of the full reference; pass a substring (e.g., `warning`, `tada`, `cd`) to filter, and `offset` to page through matches beyond `limit`.
readfalseunknown

02Install & source
npx -y ntfy-mcp-server@latest
npx
docker run ghcr.io/cyanheads/ntfy-mcp-server:latest
docker

05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-09-07 17:20Z
next_check2026-09-07 20:20Z
cadenceevery 3h
verifiedmetadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed
index_statusindex8 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. ntfy-mcp-server MCP — as seen on mcpexplorer.com

[![ntfy-mcp-server MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/ntfy-mcp-server.svg)](https://mcpexplorer.com/servers/ntfy-mcp-server)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →
ntfy-mcp-server — MCPExplorer