NestDaddy

Ntfy Mcp Server

io.github.cyanheads/ntfy-mcp-server · v2.4.0

Send, manage, and replay ntfy push notifications via MCP.

Connect Runs on your machine

Terminal
claude mcp add ntfy-mcp-server -e NTFY_SERVERS=<NTFY_SERVERS> -e NTFY_BASE_URL=<NTFY_BASE_URL> -e NTFY_DEFAULT_TOPIC=<NTFY_DEFAULT_TOPIC> -e NTFY_AUTH_TOKEN=<NTFY_AUTH_TOKEN> -e NTFY_AUTH_USERNAME=<NTFY_AUTH_USERNAME> -e NTFY_AUTH_PASSWORD=<NTFY_AUTH_PASSWORD> -e NTFY_REQUEST_TIMEOUT_MS=<NTFY_REQUEST_TIMEOUT_MS> -e NTFY_MAX_RETRIES=<NTFY_MAX_RETRIES> -e NTFY_BLOCK_PRIVATE_HOSTS=<NTFY_BLOCK_PRIVATE_HOSTS> -e NTFY_ENABLE_EMOJI_TAGS=<NTFY_ENABLE_EMOJI_TAGS> -e MCP_LOG_LEVEL=<MCP_LOG_LEVEL> -e LOGS_DIR=<LOGS_DIR> -e OTEL_ENABLED=<OTEL_ENABLED> -- npx -y [email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "ntfy-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "NTFY_SERVERS": "<NTFY_SERVERS>",
        "NTFY_BASE_URL": "<NTFY_BASE_URL>",
        "NTFY_DEFAULT_TOPIC": "<NTFY_DEFAULT_TOPIC>",
        "NTFY_AUTH_TOKEN": "<NTFY_AUTH_TOKEN>",
        "NTFY_AUTH_USERNAME": "<NTFY_AUTH_USERNAME>",
        "NTFY_AUTH_PASSWORD": "<NTFY_AUTH_PASSWORD>",
        "NTFY_REQUEST_TIMEOUT_MS": "<NTFY_REQUEST_TIMEOUT_MS>",
        "NTFY_MAX_RETRIES": "<NTFY_MAX_RETRIES>",
        "NTFY_BLOCK_PRIVATE_HOSTS": "<NTFY_BLOCK_PRIVATE_HOSTS>",
        "NTFY_ENABLE_EMOJI_TAGS": "<NTFY_ENABLE_EMOJI_TAGS>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
        "LOGS_DIR": "<LOGS_DIR>",
        "OTEL_ENABLED": "<OTEL_ENABLED>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "ntfy-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "NTFY_SERVERS": "<NTFY_SERVERS>",
        "NTFY_BASE_URL": "<NTFY_BASE_URL>",
        "NTFY_DEFAULT_TOPIC": "<NTFY_DEFAULT_TOPIC>",
        "NTFY_AUTH_TOKEN": "<NTFY_AUTH_TOKEN>",
        "NTFY_AUTH_USERNAME": "<NTFY_AUTH_USERNAME>",
        "NTFY_AUTH_PASSWORD": "<NTFY_AUTH_PASSWORD>",
        "NTFY_REQUEST_TIMEOUT_MS": "<NTFY_REQUEST_TIMEOUT_MS>",
        "NTFY_MAX_RETRIES": "<NTFY_MAX_RETRIES>",
        "NTFY_BLOCK_PRIVATE_HOSTS": "<NTFY_BLOCK_PRIVATE_HOSTS>",
        "NTFY_ENABLE_EMOJI_TAGS": "<NTFY_ENABLE_EMOJI_TAGS>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
        "LOGS_DIR": "<LOGS_DIR>",
        "OTEL_ENABLED": "<OTEL_ENABLED>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "ntfy-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "NTFY_SERVERS": "<NTFY_SERVERS>",
        "NTFY_BASE_URL": "<NTFY_BASE_URL>",
        "NTFY_DEFAULT_TOPIC": "<NTFY_DEFAULT_TOPIC>",
        "NTFY_AUTH_TOKEN": "<NTFY_AUTH_TOKEN>",
        "NTFY_AUTH_USERNAME": "<NTFY_AUTH_USERNAME>",
        "NTFY_AUTH_PASSWORD": "<NTFY_AUTH_PASSWORD>",
        "NTFY_REQUEST_TIMEOUT_MS": "<NTFY_REQUEST_TIMEOUT_MS>",
        "NTFY_MAX_RETRIES": "<NTFY_MAX_RETRIES>",
        "NTFY_BLOCK_PRIVATE_HOSTS": "<NTFY_BLOCK_PRIVATE_HOSTS>",
        "NTFY_ENABLE_EMOJI_TAGS": "<NTFY_ENABLE_EMOJI_TAGS>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
        "LOGS_DIR": "<LOGS_DIR>",
        "OTEL_ENABLED": "<OTEL_ENABLED>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
NTFY_SERVERS
Optional
JSON array of `{ baseUrl, authToken? | authUsername?+authPassword? }` entries — one per ntfy server. First entry is the default base. Auth is scoped to the entry's `baseUrl`; per-call `base_url` overrides that match a registered base forward that server's auth. Takes precedence over the single-serv…
NTFY_BASE_URL
Optional
Single-server shorthand — base URL of the ntfy server (no trailing slash). Used when NTFY_SERVERS is unset.
NTFY_DEFAULT_TOPIC
Optional
Topic used when a tool call omits `topic`. Treat the topic name as a secret — anyone who knows it can publish or subscribe.
NTFY_AUTH_TOKEN
Optional
Bearer access token (`tk_…`) for the single-server shorthand. Mutually exclusive with NTFY_AUTH_USERNAME / NTFY_AUTH_PASSWORD.
NTFY_AUTH_USERNAME
Optional
Basic-auth username for the single-server shorthand — must be set together with NTFY_AUTH_PASSWORD.
NTFY_AUTH_PASSWORD
Optional
Basic-auth password for the single-server shorthand — must be set together with NTFY_AUTH_USERNAME.
NTFY_REQUEST_TIMEOUT_MS
Optional
Per-attempt HTTP timeout in milliseconds, covering the response body. Each call is also capped at 50 s across all attempts.
NTFY_MAX_RETRIES
Optional
Max retry attempts for transient upstream failures (5xx, network, 429).
NTFY_BLOCK_PRIVATE_HOSTS
Optional
When true, a per-call `base_url` override must resolve to a public address and its redirects are not followed. Servers registered under NTFY_SERVERS / NTFY_BASE_URL are exempt. Turn it on where callers you do not control can reach the server.
NTFY_ENABLE_EMOJI_TAGS
Optional
Set to false to disable the ntfy_search_emoji_tags tool: it leaves tools/list, and the server instructions and ntfy_publish_message stop pointing at it.
MCP_LOG_LEVEL
Optional
Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').
LOGS_DIR
Optional
Directory for file-based logs (Node only; ignored on Workers).
OTEL_ENABLED
Optional
Enable OpenTelemetry instrumentation (spans, metrics, completion logs).

Details

Package[email protected] (NPM, stdio)
Package[email protected] (NPM, streamable-http)
First published29 Oct 2026
Last updated29 Oct 2026
Registry nameio.github.cyanheads/ntfy-mcp-server

More other servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.