io.github.cyanheads/ntfy-mcp-server
Officialby cyanheads · TypeScript
Send, manage, and replay ntfy push notifications via MCP.
Send, manage, and replay push notifications through ntfy service.
Topics
README not available yet.
Install
Configuration
NTFY_SERVERSJSON 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-server NTFY_BASE_URL / NTFY_AUTH_* shorthand.
NTFY_BASE_URLdefault https://ntfy.shSingle-server shorthand — base URL of the ntfy server (no trailing slash). Used when NTFY_SERVERS is unset.
NTFY_DEFAULT_TOPICTopic used when a tool call omits `topic`. Treat the topic name as a secret — anyone who knows it can publish or subscribe.
NTFY_AUTH_TOKENBearer access token (`tk_…`) for the single-server shorthand. Mutually exclusive with NTFY_AUTH_USERNAME / NTFY_AUTH_PASSWORD.
NTFY_AUTH_USERNAMEBasic-auth username for the single-server shorthand — must be set together with NTFY_AUTH_PASSWORD.
NTFY_AUTH_PASSWORDBasic-auth password for the single-server shorthand — must be set together with NTFY_AUTH_USERNAME.
NTFY_REQUEST_TIMEOUT_MSdefault 15000Per-request HTTP timeout in milliseconds.
NTFY_MAX_RETRIESdefault 3Max retry attempts for transient upstream failures (5xx, network, 429).
MCP_LOG_LEVELdefault infoSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
LOGS_DIRdefault ./logsDirectory for file-based logs (Node only; ignored on Workers).
OTEL_ENABLEDdefault falseEnable OpenTelemetry instrumentation (spans, metrics, completion logs).
MCP_SESSION_MODEdefault autoHTTP session model: 'stateless', 'stateful', or 'auto'.
MCP_HTTP_HOSTdefault 127.0.0.1The hostname for the HTTP server.
MCP_HTTP_PORTdefault 3010The port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHdefault /mcpThe endpoint path for the MCP server.
MCP_AUTH_MODEdefault noneAuthentication mode to use: 'none', 'jwt', or 'oauth'.
claude_desktop_config.json
{
"mcpServers": {
"ntfy-mcp-server": {
"command": "npx",
"args": [
"-y",
"ntfy-mcp-server@2.1.1",
"run",
"start:stdio"
],
"env": {
"NTFY_SERVERS": "<YOUR_NTFY_SERVERS>",
"NTFY_BASE_URL": "https://ntfy.sh",
"NTFY_DEFAULT_TOPIC": "<YOUR_NTFY_DEFAULT_TOPIC>",
"NTFY_AUTH_TOKEN": "<YOUR_NTFY_AUTH_TOKEN>",
"NTFY_AUTH_USERNAME": "<YOUR_NTFY_AUTH_USERNAME>",
"NTFY_AUTH_PASSWORD": "<YOUR_NTFY_AUTH_PASSWORD>",
"NTFY_REQUEST_TIMEOUT_MS": "15000",
"NTFY_MAX_RETRIES": "3",
"MCP_LOG_LEVEL": "info",
"LOGS_DIR": "./logs",
"OTEL_ENABLED": "false"
}
}
}
}