← Back to search

io.github.cyanheads/ntfy-mcp-server

cyanheads Scanned 27d ago

An MCP (Model Context Protocol) server designed to interact with the ntfy push notification service. It enables LLMs and AI agents to send notifications to your devices with extensive customization options.

C
70.8 / 100

Versions

No versions found.

PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 4

ntfy_search_emoji_tags
annotations: verified low

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`.

totalCount number
readOnlyHint true openWorldHint false
ntfy_publish_message
annotations: verified low

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.

openWorldHint true
ntfy_manage_message
annotations: verified low

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`.

openWorldHint true idempotentHint true destructiveHint true
ntfy_fetch_messages
annotations: verified low

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.

count number since string
readOnlyHint true openWorldHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 22

info
Tool 'ntfy_search_emoji_tags' annotations are consistent annotation_checker · 80%
info
Tool 'ntfy_publish_message' annotations are consistent annotation_checker · 80%
info
Tool 'ntfy_manage_message' annotations are consistent annotation_checker · 80%
info
Tool 'ntfy_fetch_messages' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: ntfy_search_emoji_tags manifest_parser · 75%
info
Tool: ntfy_publish_message manifest_parser · 75%
info
Tool: ntfy_manage_message manifest_parser · 75%
info
Tool: ntfy_fetch_messages manifest_parser · 75%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (14) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'ntfy_manage_message': Cross-tool prerequisite: 'first call/use' poisoning · 85%
info
SBOM generated: 11 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-ntfy-mcp-server-a0d09b9/framework-skills/api-utils/references/security.md secret_scanner · 65%
high
Authorization Bearer Token found in cyanheads-ntfy-mcp-server-a0d09b9/docs/ntfy/publish.md secret_scanner · 70%
high
Hardcoded Password found in cyanheads-ntfy-mcp-server-a0d09b9/docs/ntfy/publish.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%