Skip to main content

ntfy push notification MCP Server — publish, poll, topic and token management

Project description

ntfy Blade MCP

Token-efficient MCP server for ntfy push notifications. Publish alerts, poll topics, manage tokens and reservations.

Requirements

  • Python 3.12+
  • A ntfy server (self-hosted or ntfy.sh)
  • Optional: bearer token for authenticated access

Quick Start

# Install
uv sync

# Configure
export NTFY_BASE_URL=https://ntfy.sh
export NTFY_TOKEN=tk_your_token_here
export NTFY_DEFAULT_TOPIC=my-alerts
export NTFY_WRITE_ENABLED=true

# Run
uv run ntfy-blade-mcp

Tools (10)

Tool Type Description
ntfy_info read Server health + capabilities + stats (3-in-1)
ntfy_account read Usage limits, reserved topics, active tokens
ntfy_poll read Poll topic(s) for cached messages
ntfy_publish write Send notification (priority, tags, actions, markdown, delay)
ntfy_cancel write Cancel a scheduled message
ntfy_reserve write Reserve a topic (set ACL)
ntfy_unreserve write Release a topic reservation
ntfy_token_create write Create a new API token
ntfy_token_extend write Extend/relabel a token
ntfy_token_revoke write Revoke a token

Security Model

  1. Environment gate — all write tools require NTFY_WRITE_ENABLED=true
  2. Per-call confirmation — every write tool requires confirm=true
  3. Token redaction — tokens are truncated in output (full token shown only on create)
  4. PII scrubbing — bearer tokens and API keys redacted from error messages
  5. No admin endpoints — user management excluded by design

Token Efficiency

  • ntfy_info collapses 3 API calls (health + config + stats) into 1 tool call
  • Pipe-delimited output, null-field omission, truncation at 200 chars
  • Default priority (3) omitted from poll output
  • NTFY_DEFAULT_TOPIC eliminates per-call topic specification

Environment Variables

Variable Required Secret Description
NTFY_BASE_URL yes no ntfy server URL
NTFY_TOKEN no yes Bearer token (tk_...)
NTFY_DEFAULT_TOPIC no no Default topic for publish/poll
NTFY_WRITE_ENABLED no no Enable write operations
TRANSPORT no no stdio (default) or http
NTFY_MCP_PORT no no HTTP port (default: 8773)
NTFY_MCP_API_TOKEN no yes HTTP transport bearer auth

Development

make install-dev   # Install with dev deps
make test          # Run unit tests
make check         # Lint + format + typecheck
make test-cov      # Tests with coverage

Architecture

src/ntfy_blade_mcp/
├── __init__.py
├── __main__.py      # Entry point
├── server.py        # FastMCP + 10 @mcp.tool definitions
├── client.py        # httpx async client for ntfy API
├── formatters.py    # Pipe-delimited token-efficient output
└── models.py        # Config, gates, constants, exceptions

Sidereal Marketplace

Contract: notifications-push-v1 — see sidereal-plugin.yaml.

Licence

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ntfy_blade_mcp-0.2.0.tar.gz (91.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ntfy_blade_mcp-0.2.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file ntfy_blade_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: ntfy_blade_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 91.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ntfy_blade_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b8b4cbada6248ddf0eaf3e2713ff618ce5a890effb2550df0f8e6ee123501861
MD5 441bf0da0a688967886439c7c171a5bc
BLAKE2b-256 122b9332937f035d8951cc8856d53f12b6a9f1f9a4e935e071b90a26a5e3e929

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntfy_blade_mcp-0.2.0.tar.gz:

Publisher: publish.yml on Groupthink-dev/ntfy-blade-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ntfy_blade_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ntfy_blade_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ntfy_blade_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b25e9ec6eab30d73790d1ced6632641f4fbf24f8f7a4a5b1e925efd8ed461f3
MD5 1a1be4b8a0953268a4bbabd01788dbbc
BLAKE2b-256 cfb7d7042500d48ab728950024512dd9e8a10448492962d8b66125c76baab2e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntfy_blade_mcp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Groupthink-dev/ntfy-blade-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page