An MCP server for ntfy that can publish, manage, and fetch push notifications on ntfy topics, plus look up emoji tag short codes for use in message tags. It supports STDIO and Streamable HTTP transports and exposes a topic snapshot resource.
From the registry: Send, manage, and replay ntfy push notifications via MCP.
Please install the `ntfy-mcp-server` MCP server into my current AI client (that's you).
Required prerequisites (do these first if not already done):
- **Install Bun or Node.js** — Install Bun v1.3.11+ or Node.js v24+ to run the package. The README's primary quick-start uses Bun via bunx. (https://bun.sh/)
- **Choose or create an ntfy topic** — You need an ntfy topic name. Public ntfy.sh works without an account for public topics.
Optional prerequisites:
- Create ntfy credentials for protected topics — If you will use protected topics or a self-hosted ntfy instance, create either a bearer access token or basic-auth credentials. For ntfy.sh tokens, generate one from the account page. (https://ntfy.sh/account)
Canonical MCP server config (stdio transport):
- command: `bunx`
- args: ["ntfy-mcp-server@latest"]
- required environment variables:
- `MCP_TRANSPORT_TYPE`: Transport mode for the MCP server. Set to stdio for client-managed subprocess use. (example: `stdio`)
- `NTFY_DEFAULT_TOPIC`: Default ntfy topic used when a tool call omits the topic. (example: `<your-topic-name>`)
- optional environment variables:
- `MCP_LOG_LEVEL`: Log level in RFC 5424 format. (example: `info`)
- `NTFY_SERVERS`: JSON array of ntfy server entries in the form { baseUrl, authToken? | authUsername? + authPassword? }. Use when you need multiple ntfy servers; takes precedence over single-server variables. (example: `<json-array-of-ntfy-servers>`)
- `NTFY_BASE_URL`: Base URL of the ntfy server for single-server mode, without a trailing slash. Defaults to the public ntfy.sh service. (example: `<your-ntfy-base-url>`)
- `NTFY_AUTH_TOKEN`: Bearer access token for single-server mode. Mutually exclusive with NTFY_AUTH_USERNAME and NTFY_AUTH_PASSWORD. (example: `<your-ntfy-access-token>`)
- `NTFY_AUTH_USERNAME`: Basic-auth username for single-server mode. Must be provided together with NTFY_AUTH_PASSWORD. (example: `<your-ntfy-username>`)
- `NTFY_AUTH_PASSWORD`: Basic-auth password for single-server mode. Must be provided together with NTFY_AUTH_USERNAME. (example: `<your-ntfy-password>`)
- `NTFY_REQUEST_TIMEOUT_MS`: Per-request HTTP timeout in milliseconds. (example: `<timeout-ms>`)
- `NTFY_MAX_RETRIES`: Maximum retry attempts for transient upstream failures. (example: `<max-retries>`)
- `MCP_SESSION_MODE`: HTTP session model. Relevant when using HTTP transport. (example: `auto`)
- `MCP_HTTP_HOST`: HTTP host to bind when using HTTP transport. (example: `<http-host>`)
- `MCP_HTTP_PORT`: HTTP port to bind when using HTTP transport. (example: `<http-port>`)
- `MCP_HTTP_ENDPOINT_PATH`: HTTP endpoint path when using HTTP transport. (example: `<http-endpoint-path>`)
- `MCP_AUTH_MODE`: Server auth mode: none, jwt, or oauth. (example: `none`)
- `LOGS_DIR`: Directory for file-based logs. (example: `<logs-directory>`)
- `OTEL_ENABLED`: Enable OpenTelemetry instrumentation. (example: `<true-or-false>`)
Note: README documents both stdio and Streamable HTTP transports. The simplest portable config shown is stdio via bunx, so that is extracted here. For protected topics, configure either NTFY_AUTH_TOKEN or the NTFY_AUTH_USERNAME/NTFY_AUTH_PASSWORD pair. If using NTFY_SERVERS, it overrides the single-server NTFY_BASE_URL/auth variables.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.NTFY_DEFAULT_TOPICrequiredDefault topic used when a tool call omits the topic.Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Trending hip-hop artist momentum scores across four cultural dimensions.
Web scraping with stealth HTTP, real browsers, and Cloudflare bypass. CSS selectors supported.