You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
✨ New
Feature
What it does
How to use
Ref
NTFY_TOPICS_ALLOWLIST
Lets the agent choose only among the topics you subscribe to. Both tools offer topic as a list of NTFY_TOPIC plus these topics. Any other topic is rejected before a request is made. It takes precedence over NTFY_ALLOW_TOPIC_OVERRIDE.
This release changes some defaults. Read the upgrade notes below before updating.
⚠️ Upgrade notes (behaviour changes)
Change
What you'll notice
What to do
Ref
Topic and server are locked by default
The tools no longer offer topic and url. Every notification and fetch goes to NTFY_TOPIC on NTFY_URL.
To let the agent choose again, set NTFY_ALLOW_TOPIC_OVERRIDE=true and/or NTFY_ALLOW_URL_OVERRIDE=true. Or allow specific topics with NTFY_TOPICS_ALLOWLIST.
Unresolved token placeholders stop the server at startup
An NTFY_TOKEN of ${input:…}, ${env:…}, ${NAME} or any other ${…} makes the server exit with a clear error. Before, it either prompted on stdio, which broke the MCP connection, or sent the placeholder as the token, which servers with auth enabled (such as ntfy.sh) reject with a 401.
Set NTFY_TOKEN to the token itself, or to a reference your MCP client resolves.
A missing or invalid NTFY_TOPIC, or an NTFY_URL that isn't http(s) or contains user:pass@, makes the server exit with an error naming the variable. Credentials in NTFY_URL are no longer written to the log.
Emoji titles failed before anything was sent. Accented (Latin-1) text arrived mangled, e.g. Caf� cr�me. This affected titles, tags, action labels and the fetch filters.
Header values are RFC 2047-encoded, which ntfy decodes, so text arrives intact. The server uses Node's native fetch instead of node-fetch.
Both notifications were sent to the public ntfy.sh/ntfy-me test topic. The one from v1.5.0 shows accents, emoji, markdown, emoji tags, a click link (Copy/Open link) and an action button with a non-ASCII label. The one from v1.4.2 shows the mangled accents. Its emoji title never arrived, because v1.4.2 failed before sending it.
🔒 Security
Area
Change
Ref
MCP SDK advisory
@modelcontextprotocol/sdk 1.29.0 → 1.32.0 clears the high-severity advisory GHSA-6qxp-vccf-f47h. npm audit is clean.
npm run test:e2e runs the built server over MCP stdio against real ntfy servers in Docker: one open, one deny-all with auth. The ntfy image is pinned by digest.
CI now type-checks the tests and checks that the committed build/ matches a clean rebuild. It enforces a coverage floor of 75% (about 84% today) and runs the e2e tests as their own job.
Refreshed to match current behaviour. AGENTS.md is the single source of agent guidance, with CLAUDE.md and .github/copilot-instructions.md as symlinks to it.