ntfy-me-mcp

ntfy-me-mcp

Send real-time notifications from AI assistants to your devices using ntfy and the Model Context Protocol.

48
Stars
11
Forks
48
Watchers
0
Issues
ntfy-me-mcp implements a streamlined Model Context Protocol (MCP) server, enabling AI assistants to send real-time notifications to user devices through the ntfy service. It supports both public and self-hosted ntfy instances with token authentication, allowing integration into various AI workflows. The server automatically detects URLs for interactive actions and applies smart markdown formatting to craft rich notifications suitable for important events and task updates.

Key Features

Model Context Protocol (MCP) compliant server implementation
Send notifications through ntfy (public or self-hosted)
Supports token authentication for private/protected ntfy topics
Automatic URL detection for interactive notification actions
Smart markdown formatting detection for enhanced message presentation
Real-time delivery to connected devices
Integration-ready with AI assistants and workflows
Run via NPM, NPX, or Docker with flexible deployment options
Minimal and advanced configuration support
Badge and catalog integration with major AI assistant platforms

Use Cases

Notifying users when AI tasks are completed
Alerting on AI workflow errors or exceptions
Providing real-time milestone updates for long-running processes
Delivering actionable links and content from AI agents
Integrating into automated pipelines for status updates
Enabling device push notifications for organizational bots
Self-hosted notifications for privacy-sensitive contexts
Token-protected topic alerts for secure environments
Enhancing AI model UX with direct communication to end-users
Receiving alerts from background AI tasks without constant monitoring

README

ntfy-me-mcp

TypeScript Model Context Protocol NPM Version Docker Image Version License GitHub

A streamlined Model Context Protocol (MCP) server for sending notifications via ntfy service (public or selfhosted with token support) 📲

Overview

ntfy-me-mcp provides AI assistants with the ability to send real-time notifications to your devices through the ntfy service (either public or selfhosted with token support). Get notified when your AI completes tasks, encounters errors, or reaches important milestones - all without constant monitoring.

The server includes intelligent features like automatic URL detection for creating view actions and smart markdown formatting detection, making it easier for AI assistants to create rich, interactive notifications without extra configuration.

Available via:

Name Link / Badge
Glama.ai
Smithery.ai smithery badge
MseeP.ai
Archestra.ai Trust Score

Table of Contents

Features

  • 🚀 Quick Setup: Run with npx or docker!
  • 🔔 Real-time Notifications: Get updates on your phone/desktop when tasks complete
  • 🎨 Rich Notifications: Support for topic, title, priorities, emoji tags, and detailed messages
  • 🔍 Notification Fetching: Fetch and filter cached messages from your ntfy topics
  • 🎯 Smart Action Links: Automatically detects URLs in messages and creates view actions
  • 📄 Intelligent Markdown: Auto-detects and enables markdown formatting when present
  • 🔒 Secure: Optional authentication with access tokens
  • 🔑 Input Masking: Securely store your ntfy token in your vs config!
  • 🌐 Self-hosted Support: Works with both ntfy.sh and self-hosted ntfy instances

(Coming soon...)

  • 📨 Email: Send notifications to email (requires ntfy email server configuration)
  • 🔗 Click urls: Ability to customize click urls
  • 🖼️ Image urls: Intelligent image url detection to automatically include image urls in messages and notifications
  • 🏁 and more!

Quickstart - MCP Server Configuration

NPM / NPX (Recommended Method)

  • Requires npm / npx installed on your system.
  • This method is recommended for most users as it provides a simple & lightweight method to set up the server.

For the easiest setup with MCP-compatible assistants, add this to your MCP configuration:

Minimal configuration (for public topics on ntfy.sh)

json
{
  "ntfy-me-mcp": {
    "command": "npx",
    "args": ["ntfy-me-mcp"],
    "env": {
      "NTFY_TOPIC": "your-topic-name"
    }
  }
}

Full configuration (for private servers or protected topics)

Option 1: Direct token in configuration

json
{
  "ntfy-me-mcp": {
    "command": "npx",
    "args": ["ntfy-me-mcp"],
    "env": {
      "NTFY_TOPIC": "your-topic-name",
      "NTFY_URL": "https://your-ntfy-server.com",
      "NTFY_TOKEN": "your-auth-token" // Use if using a protected topic/server
    }
  }
}

Option 2: Using VS Code inputs for secure token handling (recommended)

Add this to your VS Code settings.json file:

json
"mcp": {
  "inputs": [
    { // Add this to your inputs array
      "type": "promptString",
      "id": "ntfy_token",
      "description": "Ntfy Token",
      "password": true
    }
  ],
  "servers": {
    // Other servers...
    "ntfy-me-mcp": {
      "command": "npx",
      "args": ["ntfy-me-mcp"],
      "env": {
        "NTFY_TOPIC": "your-topic-name",
        "NTFY_URL": "https://your-ntfy-server.com",
        "NTFY_TOKEN": "${input:ntfy_token}", // Use the input id variable for the token
        "PROTECTED_TOPIC": "true" // Prompts for token and masks it in your config
      }
    }
  }
}

With this setup, VS Code will prompt you for the token when starting the server and the token will be masked when entered.

Docker

Using with MCP in Docker

  • Requires Docker installed on your system.
  • This method is useful for running the server in a containerized environment.
  • You can use the official Docker images available on Docker Hub or GitHub Container Registry.

Docker Images:

  • gitmotion/ntfy-me-mcp:latest (Docker Hub)
  • ghcr.io/gitmotion/ntfy-me-mcp:latest (GitHub Container Registry)

In your MCP configuration (e.g., VS Code settings.json):

json
"mcp": {
  "servers": {
    "ntfy-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NTFY_TOPIC",
        "-e",
        "NTFY_URL",
        "-e",
        "NTFY_TOKEN",
        "-e",
        "PROTECTED_TOPIC",
        "gitmotion/ntfy-me-mcp", // OR use ghcr.io/gitmotion/ntfy-me-mcp:latest
      ],
      "env": {
        "NTFY_TOPIC": "your-topic-name",
        "NTFY_URL": "https://your-ntfy-server.com",
        "NTFY_TOKEN": "${input:ntfy_token}",
        "PROTECTED_TOPIC": "true"
      }
    }
  }
}

Installation

If you need to install and run the server directly (alternative to the MCP configuration above):

Option 1: Install globally

bash
npm install -g ntfy-me-mcp

Option 2: Run with npx

bash
npx ntfy-me-mcp

Option 3: Install locally

bash
# Clone the repository
git clone https://github.com/gitmotion/ntfy-me-mcp.git
cd ntfy-me-mcp

# Install dependencies
npm install

# Copy the example environment file and configure it
cp .env.example .env
# Edit .env with your preferred editor and update the variables
# nano .env  # or use your preferred editor

# Build the project
npm run build

# Start the server
npm start

Option 4: Build and use locally with node command

If you're developing or customizing the server, you might want to run it directly with node:

bash
# Clone the repository
git clone https://github.com/gitmotion/ntfy-me-mcp.git
cd ntfy-me-mcp

# Install dependencies
npm install

# Copy the example environment file and configure it
cp .env.example .env
# Edit the .env file to set your NTFY_TOPIC and other optional settings
# nano .env  # or use your preferred editor

# Build the project
npm run build

# Run using node directly
npm start

Using locally built server with MCP

When configuring your MCP to use a locally built version, specify the node command and path to the built index.js file:

json
{
  "ntfy-me": {
    "command": "node",
    "args": ["/path/to/ntfy-mcp/build/index.js"],
    "env": {
      "NTFY_TOPIC": "your-topic-name"
      //"NTFY_URL": "https://your-ntfy-server.com", // Use if using a self-hosted server
      //"NTFY_TOKEN": "your-auth-token" // Use if using a protected topic/server
    }
  }
}

Remember to use the absolute path to your build/index.js file in the args array.

Option 5: MCP Marketplace installations

Installing via Smithery

To install ntfy-me-mcp for Claude Desktop automatically via Smithery:

bash
npx -y @smithery/cli install @gitmotion/ntfy-me-mcp --client claude

Configuration

Environment Variables

Create a .env file in your project directory by copying the provided example:

bash
# Copy the example file
cp .env.example .env

# Edit the file with your preferred editor
nano .env  # or vim, code, etc.

Your .env file should contain these variables:

# Required
NTFY_TOPIC=your-topic-name

# Optional - Configure these if using a private/protected ntfy server
# NTFY_URL=https://ntfy.sh  # Default is ntfy.sh, change to your self-hosted ntfy server URL if needed
                            # Include port if needed, e.g., https://your-ntfy-server.com:8443
# NTFY_TOKEN=your-access-token  # Required for authentication with protected topics/servers
# PROTECTED_TOPIC=false  # Set to "true" if your topic requires authentication (helps prevent auth errors)

Note: The PROTECTED_TOPIC flag helps the application determine whether authentication is required for your topic. When set to "true" and no token is provided, you'll be prompted to enter one. This prevents authentication failures with protected topics.

Usage

Authentication

This server supports both authenticated and unauthenticated ntfy endpoints:

  • Public Topics: When using public topics on ntfy.sh or other public servers, no authentication is required.
  • Protected Topics: For protected topics or private servers, you need to provide an access token.

If authentication is required but not provided, you'll receive a clear error message explaining how to add your token.

Setting Up the Notification Receiver

  1. Install the ntfy app on your device
  2. Subscribe to your chosen topic (the same as your NTFY_TOPIC setting)

Sending Notifications (ntfy_me tool)

This section covers all functionality related to sending notifications using the ntfy_me tool.

Using Natural Language

When working with your AI assistant, you can use natural phrases like:

"Send me a notification when the build is complete"
"Notify me when the task is done"
"Alert me after generating the code"
"Message me when the process finishes"
"Send an alert with high priority"

Message Parameters

The tool accepts these parameters:

Parameter Description Required
taskTitle The notification title Yes
taskSummary The notification body Yes
priority Message priority: min, low, default, high, max No
tags Array of notification tags (supports emoji shortcodes) No
markdown Boolean to enable markdown formatting (true/false) No
actions Array of view action objects for clickable links No

Example:

javascript
{
  taskTitle: "Code Generation Complete",
  taskSummary: "Your React component has been created successfully with proper TypeScript typing.",
  priority: "high",
  tags: ["check", "code", "react"]
}

This will send a high-priority notification with a checkmark emoji.

Action Links

You can add clickable action buttons to your notifications using the actions parameter, or let the server automatically detect URLs in your message.

Automatic URL Detection

When URLs are present in the message body, the server automatically creates up to 3 view actions (ntfy's maximum limit) from the first detected URLs. This makes it easy to include clickable links without manually specifying the actions array.

For example, this message:

javascript
{
  taskTitle: "Build Complete",
  taskSummary: "Your PR has been merged! View the changes at https://github.com/org/repo/pull/123 or check the deployment at https://staging.app.com"
}

Will automatically generate view actions for both URLs, making them easily clickable in the notification.

Manual Action Configuration

For more control, you can manually specify actions:

Property Description Required
action Must be "view" Yes
label Button text to display Yes
url URL to open when clicked Yes
clear Whether to clear notification on click (optional) No

Example with action links:

javascript
{
  taskTitle: "Pull Request Review",
  taskSummary: "Your code has been reviewed and is ready for final checks",
  priority: "high",
  tags: ["check", "code"],
  actions: [
    {
      action: "view",
      label: "View PR",
      url: "https://github.com/org/repo/pull/123"
    },
    {
      action: "view",
      label: "View Changes",
      url: "https://github.com/org/repo/pull/123/files",
      clear: true
    }
  ]
}

Emoji Shortcodes

You can use emoji shortcodes in your tags for visual indicators:

  • warning → ⚠️
  • check → ✅
  • rocket → 🚀
  • tada → 🎉

See the full list of supported emoji shortcodes.

Markdown Formatting

Your notifications support rich markdown formatting with intelligent detection! When you include markdown syntax in your taskSummary, the server automatically detects it and enables markdown parsing - no need to set markdown: true explicitly.

Automatic Detection

The server checks for common markdown patterns like:

  • Headers (#, ##, etc.)
  • Lists (-, *, numbers)
  • Code blocks (```)
  • Links (text)
  • Bold/italic (text, text)

When these patterns are detected, markdown parsing is automatically enabled for the message.

Manual Override

While automatic detection works in most cases, you can still explicitly control markdown parsing:

javascript
{
  taskTitle: "Task Complete",
  taskSummary: "Regular plain text message",
  markdown: false  // Force disable markdown parsing
}

Retrieving Messages (ntfy_me_fetch tool)

This section covers all functionality related to fetching and filtering messages using the ntfy_me_fetch tool.

Using Natural Language

AI assistants understand various ways to request message fetching:

"Show me my recent notifications"
"Get messages from the last hour"
"Find notifications with title 'Build Complete'"
"Search for messages with the test_tube tag"
"Show notifications from the updates topic from the last 24hr"
"Check my latest alerts"

Message Parameters

The tool accepts these parameters:

Parameter Description Required
ntfyTopic Topic to fetch messages from (defaults to NTFY_TOPIC env var) No
since How far back to retrieve messages ('10m', '1h', '1d', timestamp, message ID, or 'all') No
messageId Find a specific message by its ID No
messageText Find messages containing exact text content No
messageTitle Find messages with exact title/subject No
priorities Find messages with specific priority levels No
tags Find messages with specific tags No

Examples

  1. Fetch Recent Messages
javascript
{
  since: "30m"; // Get messages from last 30 minutes
}
  1. Filter by Title and Priority
javascript
{
  messageTitle: "Build Complete",
  priorities: "high",
  since: "1d"
}
  1. Search Different Topic with Tags
javascript
{
  ntfyTopic: "updates",
  tags: ["error", "warning"],
  since: "all"
}
  1. Find Specific Message
javascript
{
  messageId: "xxxxXXXXxxxx";
}

Messages are returned with full details including:

  • Message ID and timestamp
  • Topic and title
  • Content and priority
  • Tags and attachments
  • Action links and expiration

Note: Message history availability depends on your ntfy server's cache settings. The public ntfy.sh server typically caches messages for 12 hours.

Development & Contributions

Building from Source

bash
git clone https://github.com/gitmotion/ntfy-me-mcp.git
cd ntfy-me-mcp
npm install
npm run build

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Contributing

Contributions are welcome! Please follow these guidelines:

  • Point your pull requests to the dev or testing branches (not main).
  • For all logging, use the Logger class abstraction:
    • Replace any console.log, console.warn, or console.error with logger.info, logger.warn, or logger.error.
  • Ensure your code is clean, well-documented, and passes all tests.
  • Clearly describe your changes in the PR description.
  • For local testing:
    • Build the project with npm run build.
    • Run the server locally using npm start or node build/index.js.
    • Test your changes before submitting a PR.

Thank you for helping improve ntfy-me-mcp!


Made with ❤️ by gitmotion

Star History

Star History Chart

Repository Owner

gitmotion
gitmotion

User

Repository Details

Language JavaScript
Default Branch main
Size 79 KB
Contributors 5
License GNU General Public License v3.0
MCP Verified Nov 11, 2025

Programming Languages

JavaScript
73.23%
TypeScript
24.47%
Dockerfile
2.3%

Tags

Topics

agent ai claude docker llm llm-agent mcp modelcontextprotocol notifications npm npx ntfy ntfy-mcp ntfy-mcp-server ntfy-me-mcp ntfymcp ntfysh vscode

Join Our Newsletter

Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.

We respect your privacy. Unsubscribe at any time.

Related MCPs

Discover similar Model Context Protocol servers

  • ntfy-mcp

    ntfy-mcp

    Task completion notifications for AI assistants via ntfy.

    ntfy-mcp integrates with the Model Context Protocol to provide real-time notifications via ntfy when AI assistants complete tasks. It serves as an MCP server, keeping users informed without needing to constantly monitor progress. The application supports flexible configuration, is built in Node.js, and works seamlessly with the ntfy mobile app for simple, customizable push alerts.

    • 43
    • MCP
    • teddyzxcv/ntfy-mcp
  • Taskade MCP

    Taskade MCP

    Tools and server for Model Context Protocol workflows and agent integration

    Taskade MCP provides an official server and tools to implement and interact with the Model Context Protocol (MCP), enabling seamless connectivity between Taskade’s API and MCP-compatible clients such as Claude or Cursor. It includes utilities for generating MCP tools from any OpenAPI schema and supports the deployment of autonomous agents, workflow automation, and real-time collaboration. The platform promotes extensibility by supporting integration via API, OpenAPI, and MCP, making it easier to build and connect agentic systems.

    • 90
    • MCP
    • taskade/mcp
  • dbt MCP Server

    dbt MCP Server

    Bridge dbt projects and AI agents with rich project context.

    dbt MCP Server provides an implementation of the Model Context Protocol for dbt projects, enabling seamless integration between dbt and AI agents. It allows agents to access and understand the context of dbt Core, dbt Fusion, and dbt Platform projects. The tool supports connection to external AI products and offers resources for building custom agents. Documentation and examples are provided to facilitate adoption and integration.

    • 420
    • MCP
    • dbt-labs/dbt-mcp
  • deploy-mcp

    deploy-mcp

    Universal Deployment Tracker for AI Assistants

    deploy-mcp offers a universal tool for tracking and monitoring deployments across various platforms within AI conversation environments. It eliminates the need for dashboard navigation by integrating deployment status and management directly into AI assistants via a standardized protocol. The tool supports multiple platforms such as Vercel, Netlify, and Cloudflare Pages, allowing for real-time monitoring and multi-platform configuration using secure tokens. Its streamlined setup enables users to check deployment status, view logs, and monitor progress through conversational commands.

    • 3
    • MCP
    • alexpota/deploy-mcp
  • Airtable MCP Server

    Airtable MCP Server

    Advanced AI-powered server enabling enterprise-grade automation and analytics for Airtable through MCP.

    Airtable MCP Server is an AI-enhanced MCP-compliant server designed to provide seamless integration with Airtable databases. It offers intelligent automation, predictive analytics, natural language querying, and comprehensive schema management, powered by a robust TypeScript architecture. The solution is equipped with multi-base support, enterprise-level security, and advanced governance, making it suitable for diverse workflow automation and analytics scenarios.

    • 45
    • MCP
    • rashidazarang/airtable-mcp
  • Notion MCP Server

    Notion MCP Server

    Enable LLMs to interact with Notion using the Model Context Protocol.

    Notion MCP Server allows large language models to interface with Notion workspaces through a Model Context Protocol server, supporting both data retrieval and editing capabilities. It includes experimental Markdown conversion to optimize token usage for more efficient communication with LLMs. The server can be configured with environment variables and controlled for specific tool access. Integration with applications like Claude Desktop is supported for seamless automation.

    • 834
    • MCP
    • suekou/mcp-notion-server
  • Didn't find tool you were looking for?

    Be as detailed as possible for better results