ntfy-mcp-server

ntfy-mcp-server

cyanheads

Send push notifications from AI agents using ntfy service. Supports priorities, emojis, attachments, and delayed deliver

An MCP server that integrates with the ntfy push notification service, enabling LLMs and AI agents to send customizable push notifications to your devices.

15322 views6Local (stdio)

About ntfy-mcp-server

ntfy-mcp-server is a community-built MCP server published by cyanheads that provides AI assistants with tools and capabilities via the Model Context Protocol. Send push notifications from AI agents using ntfy service. Supports priorities, emojis, attachments, and delayed deliver It is categorized under communication. This server exposes 1 tool that AI clients can invoke during conversations and coding sessions.

How to install

You can install ntfy-mcp-server in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

License

ntfy-mcp-server is released under the Apache-2.0 license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

Tools (1)

send_ntfy

Sends a notification message via the ntfy service with support for priorities, emojis, attachments, actions, and delayed delivery

Ntfy MCP Server

TypeScript Model Context Protocol Version License Status GitHub

An MCP (Model Context Protocol) server designed to interact with the ntfy push notification service. It enables LLMs and AI agents to send notifications to your devices with extensive customization options.

Table of Contents

Overview

This server implements the Model Context Protocol (MCP), enabling standardized communication between LLMs and external systems. Specifically, it provides an interface to the ntfy push notification service.

Ntfy is a simple HTTP-based pub-sub notification service that allows you to send notifications to your phone or desktop via simple HTTP requests. With this MCP server, LLM agents like Claude can send notifications to you through ntfy without needing direct HTTP access.

┌───────────┐      ┌───────────┐      ┌───────────┐      ┌─────────┐
│ LLM Agent │ ────▶│ Ntfy MCP  │ ────▶│ Ntfy      │ ────▶│ Your    │
│ (Claude)  │      │ Server    │      │ Service   │      │ Devices │
└───────────┘      └───────────┘      └───────────┘      └─────────┘

Features

  • MCP Server Implementation: Built using the @modelcontextprotocol/sdk for seamless integration with LLM agents.
  • Ntfy Integration: Provides a tool (send_ntfy) to send notifications with support for:
    • Message prioritization (1-5 levels)
    • Emoji tags
    • Clickable actions and buttons
    • File attachments
    • Delayed delivery
    • Markdown formatting
  • Resource Exposure: Exposes the configured default ntfy topic as an MCP resource.
  • TypeScript: Modern, type-safe codebase with comprehensive type definitions.
  • Structured Logging: Uses winston and winston-daily-rotate-file for detailed and rotatable logs.
  • Configuration Management: Uses dotenv for easy environment-based configuration.
  • Utility Scripts: Includes scripts for cleaning build artifacts and generating directory structure documentation.
  • Error Handling & Security: Implements robust error handling, input sanitization (sanitize-html), and security filters (xss-filters).

Quick Start

  1. Prerequisites:

    • Node.js (v16+)
    • npm or yarn
    • An MCP-compatible client (Claude Desktop, Cline, etc.)
  2. Install and Run:

    # Option 1: Install via npm
    npm install -g ntfy-mcp-server
    
    # Option 2: Clone repository and build
    git clone https://github.com/cyanheads/ntfy-mcp-server.git
    cd ntfy-mcp-server
    npm install
    npm run build
    
    # Create .env file (optional but recommended)
    cp .env.example .env
    # Edit .env to set NTFY_DEFAULT_TOPIC
    
    # Start the server
    npm start
    
  3. Add to MCP Client Settings: Add the server to your MCP client settings file (see Configuration)

  4. Use the tool: Once connected, you can use the send_ntfy tool to send notifications.

Installation

Option 1: NPM Package (Recommended)

  1. Install the package globally:

    npm install -g ntfy-mcp-server
    

    This will install the server globally, making it available as a command-line tool.

  2. Or install locally in your project:

    npm install ntfy-mcp-server
    

    When installed locally, you can run it via npx or from node.

Option 2: From Source

  1. Clone the repository:

    git clone https://github.com/cyanheads/ntfy-mcp-server.git
    cd ntfy-mcp-server
    
  2. Install dependencies:

    npm install
    
  3. Build the project:

    npm run build
    

Configuration

Environment Variables

Create a .env file in the project root based on .env.example:

# Ntfy Configuration
NTFY_BASE_URL=https://ntfy.sh  # Optional: Base URL of your ntfy instance
NTFY_DEFAULT_TOPIC=your_default_topic # Optional: Default topic if none specified in requests

# Application Configuration
LOG_LEVEL=info # Optional: Logging level (debug, info, warn, error)
NODE_ENV=development # Optional: Environment (development, production)

MCP Client Settings

For Cline VSCode Extension

Add the following configuration to your Cline MCP settings file (usually located at ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json on macOS):

If installed globally:
{
  "mcpServers": {
    "ntfy": {
      "command": "ntfy-mcp-server",
      "env": {
        "NTFY_BASE_URL": "https://ntfy.sh",
        "NTFY_DEFAULT_TOPIC": "your_default_topic",
        "LOG_LEVEL": "info",
        "NODE_ENV": "production"
      }
    }
  }
}
If installed from source:
{
  "mcpServers": {
    "ntfy": {
      "command": "node",
      "args": ["/path/to/ntfy-mcp-server/dist/index.js"],
      "env": {
        "NTFY_BASE_URL": "https://ntfy.sh",
        "NTFY_DEFAULT_TOPIC": "your_default_topic",
        "LOG_LEVEL": "info",
        "NODE_ENV": "production"
      }
    }
  }
}

For Claude Desktop App

Add the following configuration to your Claude Desktop config file (usually located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

If installed globally:
{
  "mcpServers": {
    "ntfy": {
      "command": "ntfy-mcp-server",
      "env": {
        "NTFY_BASE_URL": "https://ntfy.sh",
        "NTFY_DEFAULT_TOPIC": "your_default_topic",
        "LOG_LEVEL": "info",
        "NODE_ENV": "production"
      }
    }
  }
}
If installed from source:
{
  "mcpServers": {
    "ntfy": {
      "command": "node",
      "args": ["/path/to/ntfy-mcp-server/dist/index.js"],
      "env": {
        "NTFY_BASE_URL": "https://ntfy.sh",
        "NTFY_DEFAULT_TOPIC": "your_default_topic",
        "LOG_LEVEL": "info",
        "NODE_ENV": "production"
      }
    }
  }
}

For source installation, replace /path/to/ntfy-mcp-server/dist/index.js with the actual absolute path to the built server file. Adjust env variables as needed for your setup.

Ntfy Setup

  1. Install the ntfy app on your devices from ntfy.sh or the app stores
  2. Subscribe to your topic in the app
  3. Use the same topic in your MCP server configuration

Project Structure

.
├── .env.example            # Example environment variables
├── .gitignore              # Git ignore patterns
├── LICENSE                 # Project license (Apache-2.0)
├── package.json            # Project metadata and dependencies
├── tsconfig.json           # TypeScript compiler configuration
├── docs/
│   └── tree.md             # Auto-generated directory structure
├── logs/                   # Runtime logs (created automatically)
├── scripts/                # Utility scripts
│   ├── clean.ts            # Cleans build artifacts and logs
│   └── tree.ts             # Generates the docs/tree.md file
└── src/                    # Source code
    ├── index.ts            # Main server entry point
    ├── config/             # Configuration loading
    ├── mcp-server/         # MCP server logic, tools, and resources
    │   ├── resources/      # MCP resource implementations
    │   ├── tools/          # MCP tool implementations
    │   └── utils/          # MCP-specific utilities
    ├── services/           # External service integrations (ntfy)
    ├── types-global/       # Global type definitions
    └── utils/              # General utility functions

Tools

send_ntfy

Sends a notification message via the ntfy service.

Key Arguments:

ParameterTypeRequiredDescription
topicstringYesThe ntfy topic to publish to.
messagestringYesThe main content of the notification (max 4096 bytes).
titlestringNoNotification title (max 250 bytes).
tagsstring[]NoEmojis or keywords for categorization (e.g., ["warning", "robot"]). Max 5.
priorityintegerNoMessage priority: 1=min, 2=low, 3=default, 4=high, 5=max.
clickstringNoURL to open when the notification is clicked.
actionsarrayNoAction buttons (view, http, broadcast). Max 3.
attachmentobjectNoURL and name of an attachment.
emailstringNoEmail address to forward the notification to.
delaystringNoDelay delivery (e.g., 30m, 1h, tomorrow).
cachestringNo

README truncated. View full README on GitHub.

Alternatives

Related Skills

Browse all skills
latex-posters

Create professional research posters in LaTeX using beamerposter, tikzposter, or baposter. Support for conference presentations, academic posters, and scientific communication. Includes layout design, color schemes, multi-column formats, figure integration, and poster-specific best practices for visual communication.

16
unity-editor-toolkit

Automate and control Unity Editor with 500+ commands, real-time WebSocket communication, and SQLite integration for efficient game development.

7
senior-data-scientist

World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics. Expertise in Python (NumPy, Pandas, Scikit-learn), R, SQL, statistical methods, A/B testing, time series, and business intelligence. Includes experiment design, feature engineering, model evaluation, and stakeholder communication. Use when designing experiments, building predictive models, performing causal analysis, or driving data-driven decisions.

7
internal-comms

A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).

5
email-composer

Draft professional emails for various contexts including business, technical, and customer communication. Use when the user needs help writing emails or composing professional messages.

5
protocol-reverse-engineering

Master network protocol reverse engineering including packet analysis, protocol dissection, and custom protocol documentation. Use when analyzing network traffic, understanding proprietary protocols, or debugging network communication.

5