Skip to main content
Glama
pinkpixel-dev

Notifications MCP Server

✨ Notifications MCP Server ✨

Dream it, Pixel it. Made with ❤️ by Pink Pixel.

License Model Context Protocol npm version

TypeScript Node.js npm

NPM Downloads GitHub Stars GitHub Issues PRs Welcome

Platform Support Built with Love Pink Pixel

Overview

A Model Context Protocol server that allows AI agents to play notification sounds when tasks are completed. This TypeScript-based MCP server provides a simple, configurable notification system with bundled sounds that work out of the box with npx!

Related MCP server: ntfy-mcp-server

✨ Features

🔧 Tools

  • notify - Show a desktop toast notification and/or play a sound when tasks complete (Recommended for summaries)

    • message (required): The notification message/summary of the completed task

    • title (optional): The title for the toast notification (defaults to "Task Completed")

    • mode (optional): "toast" | "sound" | "both" (defaults to "both")

    • sound (optional): Name of the sound to play, which overrides default settings

    • Fully supports Windows, macOS, and Linux out of the box!

  • play_notification - Play a notification sound to indicate task completion

    • Takes an optional message parameter to log/display with the notification

    • Supports cross-platform sound playback (Windows, macOS, and Linux)

    • Works with bundled sounds - no manual downloads required!

🎵 Built-in Sound Library

5 high-quality notification sounds bundled with the package:

  • cosmic - Space-themed notification 🌌

  • fairy - Magical, whimsical tone 🧚‍♀️

  • gentle - Soft, pleasant default sound (default) 🔔

  • pleasant - Balanced, professional tone 📞

  • retro - Nostalgic, vintage-style notification 🕹️

  • random - Randomly plays one of the 5 sounds 🎲

🚀 Quick Start

Just run it with npx - sounds included!

{
  "mcpServers": {
    "notifications": {
      "command": "npx",
      "args": ["-y", "@pinkpixel/notification-mcp"]
    }
  }
}

Option 2: Choose a Different Bundled Sound

{
  "mcpServers": {
    "notifications": {
      "command": "npx",
      "args": ["-y", "@pinkpixel/notification-mcp"],
      "env": {
        "MCP_NOTIFICATION_SOUND": "cosmic"
      }
    }
  }
}

Option 3: Random Sound Each Time 🎲

{
  "mcpServers": {
    "notifications": {
      "command": "npx",
      "args": ["-y", "@pinkpixel/notification-mcp"],
      "env": {
        "MCP_NOTIFICATION_SOUND": "random"
      }
    }
  }
}

Option 4: Use Your Own Custom Sound

{
  "mcpServers": {
    "notifications": {
      "command": "npx",
      "args": ["-y", "@pinkpixel/notification-mcp"],
      "env": {
        "MCP_NOTIFICATION_SOUND_PATH": "C:\\path\\to\\your\\sound.mp3"
      }
    }
  }
}

⚙️ Configuration

The notification sound can be configured using environment variables:

Environment Variables

Variable

Description

Default

MCP_NOTIFICATION_SOUND

Choose from bundled sounds: cosmic, fairy, gentle, pleasant, retro, random

gentle

MCP_NOTIFICATION_SOUND_PATH

Absolute path to your own MP3 file (overrides bundled sounds)

null

Priority Order

  1. Custom Path (MCP_NOTIFICATION_SOUND_PATH) - highest priority

  2. Bundled Sound (MCP_NOTIFICATION_SOUND) - choose from 5 included sounds

  3. Default - gentle chime if nothing is specified

💻 Usage

Once configured, your MCP client can call either the unified notify tool or the audio-only play_notification tool:

await client.request({
  method: "tools/call",
  params: {
    name: "notify",
    arguments: {
      title: "Build Succeeded",
      message: "Antigravity successfully tested the package version 0.2.0! 🚀",
      mode: "both", // "toast", "sound", or "both"
      sound: "cosmic" // optional override
    }
  }
});

2. Audio-Only Notification

await client.request({
  method: "tools/call",
  params: {
    name: "play_notification",
    arguments: {
      message: "Task completed successfully! 🎉"
    }
  }
});

🛠️ Development

Local Development Setup

# Clone the repository
git clone https://github.com/pinkpixel-dev/notification-mcp.git
cd notification-mcp

# Install dependencies
npm install

# Build the server
npm run build

# For development with auto-rebuild
npm run watch

Local Development Configuration

{
  "mcpServers": {
    "notifications": {
      "command": "node",
      "args": ["./build/index.js"],
      "env": {
        "MCP_NOTIFICATION_SOUND": "retro"
      }
    }
  }
}

Debugging

Use the MCP Inspector for interactive debugging:

npm run inspector

The Inspector provides a web interface to test your MCP server in your browser.

📦 Installation Methods

No installation required - sounds are bundled automatically:

npx @pinkpixel/notification-mcp

Global Install

npm install -g @pinkpixel/notification-mcp
notification-mcp

Local Install

npm install @pinkpixel/notification-mcp
npx notification-mcp

🎵 Sound Files

All sound files are located in the sounds/ directory and are automatically included when you install the package:

  • Cosmic: sounds/cosmic_chime.mp3 - 🌌 Space-themed

  • Fairy: sounds/fairy_chime.mp3 - 🧚‍♀️ Magical

  • Gentle: sounds/gentle_chime.mp3 - 🔔 Default (soft)

  • Pleasant:sounds/pleasant_chime.mp3 - 📞 Professional

  • Retro: sounds/retro_chime.mp3 - 🕹️ Vintage

  • Random: Set MCP_NOTIFICATION_SOUND=random - 🎲 Surprise me!

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

📄 License

This project is dual-licensed under the MIT and Apache 2.0 Licenses - see the LICENSE file for details.

🌟 About Pink Pixel


Made with ❤️ by Pink Pixel

Available Tools

1 tool
play_notificationB

Play a notification sound to indicate task completion

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional message to display with notification

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool plays a sound but doesn't describe what kind of sound, whether it's audible to all users, if it requires specific permissions, or any side effects. For a notification tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple tool with one optional parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple notification tool with one optional parameter and no output schema, the description covers the basic purpose adequately. However, without annotations or behavioral details, it leaves important questions unanswered about how the notification actually works in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, so the parameter 'message' is already documented as 'Optional message to display with notification.' The description adds no additional parameter context beyond what's in the schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Play') and resource ('notification sound') with a specific purpose ('to indicate task completion'). It's unambiguous about what the tool does, though it doesn't need to distinguish from siblings since none exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance - it suggests using the tool 'to indicate task completion' but offers no explicit when-to-use rules, alternatives, or exclusions. No context about when this is appropriate versus other notification methods is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools, as there are no other tools to compare it against. The tool's purpose is clearly defined and stands alone without ambiguity.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect; there are no other tool names to compare it to, and it follows a clear verb_noun pattern (play_notification). No inconsistencies can exist in a single-tool set.

Tool Count2/5

A single tool for a 'Notifications MCP Server' feels thin and under-scoped, as it only provides a basic playback function without supporting operations like listing, creating, or managing notifications. This minimal set limits functionality and may not fully cover the expected domain of notifications.

Completeness2/5

The tool surface is severely incomplete for a notifications server, lacking essential operations such as creating, listing, updating, or deleting notifications. With only a playback tool, agents cannot perform basic CRUD or lifecycle management, leading to significant gaps in functionality.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol service that sends desktop notifications and alert sounds when AI agent tasks are completed, integrating with various LLM clients like Claude Desktop and Cursor.
    1
    54
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol server enabling AI systems to send real-time notifications to phones, desktops, and other devices through the ntfy publish/subscribe service.
    1,025
    20
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that plays notification sounds when AI coding assistants like Windsurf or Cursor require user attention, such as when coding is complete or when user approval is needed.
    16
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pinkpixel-dev/notification-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server