Back to Browse

Notifyfan MCP Server

Developer ToolsModerate5.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Apprise notification fan-out: health, status, and tagged or one-off sends.

About

Apprise notification fan-out: health, status, and tagged or one-off sends.

Security Report

5.8
Moderate5.8Moderate Risk

notifyfan is a small, readable wrapper that forwards notification requests to a configured Apprise API server, with the optional bearer token read only from the environment and no hardcoded secrets, shell execution, or obfuscation. The main concerns are the notify_url action, which lets the calling model send messages to arbitrary destinations, and the default plaintext http base URL, which would expose the bearer token if a user configures it that way. Permissions (network_http, env_vars) match the server's notification purpose. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.

8 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

the Apprise API server base URL. Defaults toRequired

Environment variable: APPRISE_URL

optional. When the upstream requires bearer auth,Required

Environment variable: APPRISE_TOKEN

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cloudcorprecords-notifyfan": {
      "env": {
        "APPRISE_URL": "your-apprise-url-here",
        "APPRISE_TOKEN": "your-apprise-token-here"
      },
      "args": [
        "-y",
        "@reneturcios/notifyfan"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

notifyfan

notifyfan sends notifications through an Apprise API server. A single tool, apprise, fans a message out to the destinations Apprise is configured with: send to one configured tag (or to every configured service), fire a one-off send at raw Apprise URL schemas, and check that the upstream server is alive — all through one action argument instead of a tool per operation. One binary serves a command-line interface and a stdio MCP server.

Configuration

Two environment variables configure the upstream connection:

  • APPRISE_URL — the Apprise API server base URL. Defaults to http://localhost:8000.
  • APPRISE_TOKEN — optional. When the upstream requires bearer auth, set it and notifyfan sends Authorization: Bearer <token> on every upstream call. It is read from the environment only: it is never a CLI flag and never an MCP tool argument.

The help action works with nothing configured at all.

Install

npx @reneturcios/notifyfan health

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/notifyfan

The container defaults to the MCP server. Pass CLI arguments to use it as a CLI instead.

CLI

notifyfan health
notifyfan status
notifyfan help
notifyfan notify "Deployment succeeded" --tag ops --title "Deploy complete" --type success
notifyfan notify "Standup notes are posted"
notifyfan notify-url "mailto://user@example.com" "Build finished" --type info

notifyfan --version

notify needs only a body; omit --tag to send to all configured services. notify-url takes the Apprise URLs first (one string; separate several URLs with commas) and then the body. Exit codes: 0 on success, 1 when a call fails (validation or upstream error), 2 for usage errors.

MCP server

npx -y @reneturcios/notifyfan mcp

MCP client configuration:

{
  "mcpServers": {
    "notifyfan": {
      "command": "npx",
      "args": ["-y", "@reneturcios/notifyfan", "mcp"],
      "env": {
        "APPRISE_URL": "http://localhost:8000"
      }
    }
  }
}

Add APPRISE_TOKEN to the env block only when your Apprise API server requires it.

Tool

ToolInputWhat it does
appriseaction (string, required) plus the per-action parameters belowRuns the named action against the upstream Apprise API server.

Actions:

ActionRequiredOptionalWhat it does
health——Check Apprise API server health.
status——Return authenticated deployment and runtime status.
help——Return built-in markdown tool help. Makes no upstream call.
notifybodytag, title, typeSend to a configured Apprise tag, or to all configured services when tag is omitted.
notify_urlurls, bodytitle, typeSend a stateless one-off notification to one or more Apprise URL schemas. urls is a single string; separate multiple URLs with commas.

type is one of info (informational), success (successful operation), warning (non-critical warning), or failure (critical failure or error). Unknown actions, a missing body/urls, and an invalid type are errors raised before any upstream call.

Example call:

{
  "name": "apprise",
  "arguments": {
    "action": "notify",
    "body": "Deployment succeeded",
    "tag": "ops",
    "title": "Deploy complete",
    "type": "success"
  }
}

Upstream mapping and known gaps

The action catalogue above is the documented surface. The upstream paths are documented reconstructions from the standard Apprise API: notify posts {body, tag?, title?, type?} to POST /notify, and notify_url posts {urls, body, title?, type?} to the same endpoint — the stateless form; the upstream API has no separate /notify_url route. health reads GET / (the upstream root) and status reads GET /details. Payload fields that were not supplied are omitted, never sent empty. Upstream failures surface the HTTP status plus the upstream message or error string when one is present, and a non-JSON success body is returned as raw text.

  • The original's HTTP transport, OAuth, and send_alert prompt are not reproduced; this rebuild is stdio-only.
  • No live Apprise API server was used while building: every upstream behaviour is verified against a fake fetch in the test suite.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!