ntfy-mcp-server
Version:
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.
67 lines (66 loc) • 2.19 kB
TypeScript
import { NtfyAction, NtfyAttachment, NtfyPriority } from './types.js';
/**
* Options for publishing to ntfy topics
*/
export interface NtfyPublishOptions {
/** Base URL for the ntfy server */
baseUrl?: string;
/** Authentication token */
auth?: string;
/** Basic auth username */
username?: string;
/** Basic auth password */
password?: string;
/** Additional headers to include in requests */
headers?: Record<string, string>;
/** Message title */
title?: string;
/** Message tags (emojis) */
tags?: string[];
/** Message priority (1-5) */
priority?: NtfyPriority;
/** URL to open when notification is clicked */
click?: string;
/** Message actions (buttons, etc.) */
actions?: NtfyAction[];
/** Message attachment */
attachment?: NtfyAttachment;
/** Email addresses to send the notification to */
email?: string;
/** Delay the message for a specific time (e.g., 30m, 1h, tomorrow) */
delay?: string;
/** Cache the message for a specific duration (e.g., 10m, 1h, 1d) */
cache?: string;
/** Firebase Cloud Messaging (FCM) topic to forward to */
firebase?: string;
/** Unique ID for the message */
id?: string;
/** Message expiration (e.g., 10m, 1h, 1d) */
expires?: string;
/** Whether the message should be X-Forwarded */
markdown?: boolean;
}
/**
* Response from publishing to ntfy
*/
export interface NtfyPublishResponse {
/** Server-assigned message ID */
id: string;
/** Time the message was received */
time: number;
/** Message expiration timestamp (if set) */
expires?: number;
/** Topic the message was published to */
topic: string;
}
/**
* Publish a message to a ntfy topic
*
* @param topic - Topic to publish to
* @param message - Message to publish
* @param options - Publishing options
* @returns Promise resolving to the publish response
* @throws NtfyInvalidTopicError if the topic name is invalid
* @throws NtfyConnectionError if the connection fails
*/
export declare function publish(topic: string, message: string, options?: NtfyPublishOptions): Promise<NtfyPublishResponse>;