Skip to main content
Glama

mcp-ntfy

MCP server for ntfy push notifications. Send and poll notifications from any MCP-compatible client.

Installation

npx mcp-ntfy

Related MCP server: ntfy-mcp

Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ntfy": {
      "command": "npx",
      "args": ["-y", "mcp-ntfy"],
      "env": {
        "NTFY_URL": "https://ntfy.sh",
        "NTFY_TOKEN": "tk_...",
        "NTFY_TOPIC": "my-notifications"
      }
    }
  }
}

Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "ntfy": {
      "command": "npx",
      "args": ["-y", "mcp-ntfy"],
      "env": {
        "NTFY_URL": "https://ntfy.sh",
        "NTFY_TOKEN": "tk_...",
        "NTFY_TOPIC": "my-notifications"
      }
    }
  }
}

Environment Variables

Variable

Required

Default

Description

NTFY_URL

No

https://ntfy.sh

ntfy server base URL

NTFY_TOKEN

No

—

Bearer token for authentication

NTFY_TOPIC

No

—

Default topic (used when tool calls omit topic)

Tools

publish

Send a push notification to an ntfy topic.

Parameter

Type

Required

Description

topic

string

No*

Topic name (*required if NTFY_TOPIC not set)

message

string

Yes

Notification body

title

string

No

Notification title

priority

number

No

1=min, 2=low, 3=default, 4=high, 5=urgent

tags

string[]

No

Emoji shortcodes, e.g. ["warning", "skull"]

click

string

No

URL to open on tap

attach

string

No

File URL to attach

filename

string

No

Attachment filename

icon

string

No

Notification icon URL

delay

string

No

Delay: "30m", "2h", "tomorrow 9am"

markdown

boolean

No

Enable Markdown formatting

actions

Action[]

No

Up to 3 action buttons

poll

Poll for cached messages from an ntfy topic.

Parameter

Type

Required

Description

topic

string

No*

Topic to poll (*required if NTFY_TOPIC not set)

since

string

No

Duration ("10m"), timestamp, ID, "all", or "latest"

scheduled

boolean

No

Include scheduled messages

id

string

No

Filter by message ID

message

string

No

Filter by message text

title

string

No

Filter by title

priority

string

No

Filter by priority (comma-separated)

tags

string

No

Filter by tags (comma-separated, AND logic)

server_health

Check ntfy server health status and message statistics. No parameters.

License

MIT

Available Tools

3 tools
pollPoll MessagesB

Poll for cached messages from an ntfy topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFilter by message ID
tagsNoFilter by tags (comma-separated, AND logic, e.g. "warning,skull")
sinceNoFilter: duration ("10m"), Unix timestamp, message ID, "all", or "latest"
titleNoFilter by title
topicNoTopic to use. Required (no default NTFY_TOPIC configured).
serverNontfy server URL. Defaults to "https://ntfy.sh" if omitted.
messageNoFilter by message text
priorityNoFilter by priority (comma-separated, e.g. "4,5" for high+urgent)
scheduledNoInclude scheduled/delayed messages

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It communicates that the tool reads cached messages, but it does not disclose return format, blocking behavior, timeout semantics, side effects, or how 'cached messages' are selected or delivered. This is minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler, repetition, or irrelevant detail. 'Poll', 'cached messages', and 'ntfy topic' all add meaningful information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich and fully covers parameters, but there is no output schema and no annotations, and the description omits context about the returned messages or behavioral traits of polling. It is adequate for basic invocation, but not fully complete for a 9-parameter tool with no additional structured context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all nine parameters are already documented in the schema, including filters, the server default, and the effectively required topic. The description adds no parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Poll for cached messages from an ntfy topic.' It clearly identifies the tool as a retrieval operation and is distinct in intent from the publish sibling. However, it does not explicitly differentiate itself from server_health or name an alternative, so it falls just short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus publish or server_health, nor are any exclusions or prerequisites given. The verb 'poll' implies retrieval, but the agent is left to infer the appropriate use case without direct support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publishPublish NotificationA

Send a push notification to an ntfy topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNoURL of notification icon (PNG/JPEG)
tagsNoEmoji tags (shortcodes without colons), e.g. ["warning","rotating_light"]
clickNoURL to open when notification is clicked
delayNoDelay delivery: duration ("30m", "2h"), timestamp, or natural language ("tomorrow 9am")
titleNoNotification title
topicNoTopic to use. Required (no default NTFY_TOPIC configured).
attachNoURL of file to attach to the notification
serverNontfy server URL. Defaults to "https://ntfy.sh" if omitted.
actionsNoUp to 3 action buttons (view, http, broadcast)
messageYesNotification message body
filenameNoFilename for the attachment
markdownNoEnable Markdown formatting in the message body
priorityNoPriority: 1=min, 2=low, 3=default, 4=high, 5=urgent

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without mentioning any side effects, authentication requirements, rate limits, idempotency, or failure behavior. For a tool that sends a notification, this is minimal but not misleading; still, critical behavioral context is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that states the core purpose without any filler. It is front-loaded with the key action and resource, making it easy to scan. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 13 parameters, but the schema documents all of them thoroughly. The description provides the basic operation context, and the schema covers parameter semantics. However, there is no mention of typical usage patterns, error handling, or the requirement that 'topic' is effectively required (noted in the schema but not in the description). For a simple send operation, this is adequate but not fully complete given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% parameter descriptions, so the description does not need to add parameter details. The description adds no extra meaning beyond the schema, which is acceptable given the comprehensive schema coverage. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Send a push notification to an ntfy topic.' It uses a specific verb (send), a resource (push notification), and a target (ntfy topic), which distinguishes it from sibling tools 'poll' and 'server_health' without needing further context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (when a notification needs to be sent) but does not explicitly state when to use this tool versus alternatives. There are no exclusionary notes or references to sibling tools. The purpose is self-evident, but explicit guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_healthServer HealthB

Check ntfy server health status and message statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNontfy server URL. Defaults to "https://ntfy.sh" if omitted.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action and does not mention side effects, network behavior, error handling, or authentication requirements. For a read-only health check, this may be acceptable, but the description provides no additional context beyond the core function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately states the tool's purpose. It is front-loaded with the key action and resource, with no unnecessary words or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, no nested objects), the description is reasonably complete. However, it leaves the exact meaning of 'message statistics' unspecified, and does not clarify whether the health check returns a boolean, a structured report, or something else. This is a minor gap for a health-check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single optional 'server' parameter with 100% coverage, so the description does not need to repeat it. However, the description adds no additional meaning or context about the parameter, such as its impact on the health check or examples of valid values, keeping it at the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks server health status and message statistics, using a specific verb and resource. It is easily distinguished from sibling tools publish and poll, which have different purposes, though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the alternatives. It is implied that this is for health checks, but there are no explicit conditions, exclusions, or references to other tools, leaving the agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.1.0
    • First observedpoll
    • First observedpublish
    • First observedserver_health

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct operation: publishing notifications, polling cached messages, and checking server health. There is no overlap or ambiguity between them.

Naming Consistency4/5

publish and poll follow a clear verb pattern, while server_health is a noun phrase rather than a verb-based action. The naming is mostly consistent and intuitive, with only a minor deviation.

Tool Count5/5

Three tools is well-scoped for an ntfy integration: send, receive, and health check. Each tool earns its place without unnecessary bulk.

Completeness4/5

The core notification lifecycle is covered: publishing, retrieving messages, and verifying server status. Real-time subscription is not included, but polling cached messages covers the main retrieval use case adequately.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP server for sending Gotify push notifications to your devices.
    1
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server for sending notifications to ntfy.sh or self-hosted ntfy instances.
    2
    12 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A lightweight MCP server for sending push notifications via ntfy.sh, supporting customizable titles, priorities, tags, and action buttons.
    1
    6 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server and CLI for Gotify that lets agents send push notifications, check server health, list messages, and manage Gotify apps and clients over stdio or streamable HTTP, with authentication support.
    2
    AGPL 3.0