sound-mcp
sound-mcp is a lightweight MCP server that lets AI agents play notification sounds and display desktop toasts on Linux — ideal for 'poll X until Y, then ping me' workflows.
List available sounds (
list_sounds): Retrieve all registered sound names (built-in and custom) and the current default sound.Play a sound (
play_sound): Play a sound by registered name, absolute file path, or the configured default. Built-in sounds includecomplete,bell,warning,error, andalarm.Desktop notification with sound (
notify): Display a desktop toast and play an optional sound simultaneously. Supports customizing title, message, urgency level (low,normal,critical— critical toasts are sticky), and timeout in milliseconds.Set default sound (
set_default_sound): Persist a new default sound (by name or path) across restarts, also configurable via theSOUND_MCP_DEFAULTenvironment variable.Custom sounds: Drop audio files (
.oga,.ogg,.wav,.mp3,.flac) into the configured sounds directory (set viaSOUND_MCP_SOUNDS_DIR); each is available by filename stem and overrides built-ins on name collision.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sound-mcp Poll tailscale status every 10 seconds and notify when myserver is online."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sound-mcp
A small FastMCP server that lets the agent play a notification sound, and optionally pop a desktop toast, when something finishes. Useful for "poll X until Y, then ping me" workflows.
Tools
list_sounds(): show every available sound name and the current default.play_sound(name=None): play a registered sound, an absolute file path, or the default.set_default_sound(name_or_path): persist a new default (registered name or absolute path) to~/.config/sound-mcp/default. Survives restarts. Overridden at runtime bySOUND_MCP_DEFAULTif it is set inmcp.json.notify(message, title="Claude", sound=None, urgency="normal", expire_ms=0): desktop toast + sound.urgency=critical: makes the toast sticky on most desktops.
Related MCP server: mcp-notifications
Requirements
Linux with paplay (PulseAudio/PipeWire) and notify-send (libnotify-bin).
Builtin sounds come from sound-theme-freedesktop, preinstalled on Ubuntu.
You only need uv and Python ≥ 3.11.
Quick start
Claude Code
claude mcp add sound-mcp -- uvx --from git+https://github.com/giuliocapecchi/sound-mcp sound-mcpOther MCP clients (Claude Desktop, Codex, OpenCode, …)
Add this block to your client's MCP config file:
{
"mcpServers": {
"sound-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/giuliocapecchi/sound-mcp", "sound-mcp"]
}
}
}Common config locations:
Client | Config file |
Claude Desktop |
|
Codex (OpenAI) |
|
OpenCode |
|
Configuration
All settings are read from environment variables, so you set them in the env
block of your mcp.json (or equivalent):
{
"mcpServers": {
"sound-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/giuliocapecchi/sound-mcp", "sound-mcp"],
"env": {
"SOUND_MCP_DEFAULT": "warning",
"SOUND_MCP_SOUNDS_DIR": "/home/you/.config/sound-mcp/sounds"
}
}
}
}Variable | Default | Purpose |
|
| Sound played when |
|
| Directory scanned for user sound files. |
Custom sounds
Builtin names: complete, bell, warning, error, alarm.
Drop audio files (.oga, .ogg, .wav, .mp3, .flac) into your sounds
directory and each becomes a sound keyed by its filename stem. For example
tada.wav → play_sound("tada"). User files override builtins on name collision.
You can also pass an absolute path directly: play_sound("/tmp/horn.wav").
Example prompt
Poll
tailscale statusevery 10 seconds. When nodemyservershows as online, call thenotifytool withtitle="Tailscale"andmessage="myserver is back".
Local development
git clone https://github.com/giuliocapecchi/sound-mcp
cd sound-mcp
uv venv && uv pip install -e .
uv run fastmcp dev src/sound_mcp/server.py # opens MCP InspectorLicense
MIT.
Available Tools
3 toolslist_soundsA
List every sound name the user can pick from, plus the current default.
Inputs: no named parameters. Returns: object
notifyA
Show a desktop notification AND play a sound.
urgency: low | normal | critical (critical toasts are sticky on most desktops). expire_ms: notification timeout in ms; 0 = desktop default.
Inputs: message (required), title, sound, urgency, +1 more. Returns: result
play_soundA
Play a notification sound.
name can be a registered sound (see list_sounds) or an absolute path to
an audio file. If omitted, plays the configured default.
Inputs: name. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
The tools have distinct purposes but notify and play_sound both involve playing a sound, which could cause confusion. However, the descriptions clarify the differences, so disambiguation is good overall.
Two tools follow verb_noun pattern (list_sounds, play_sound), while notify is a single verb. This is a minor inconsistency but not chaotic.
Three tools is reasonable for a focused sound server. It covers core operations without being excessive, though it's on the smaller side.
The tool set covers listing sounds, playing sounds, and notifications. Missing management of sound library (add/remove) but this is acceptable for the stated purpose.
Maintenance
Related MCP Connectors
Push notifications for AI agents - send instant iPhone notifications from any MCP client.
Let agents send content-free push notifications to a paired phone via MCP.
Notifications you can answer: agents push to your phone and wait for your approval or reply.
Public and private rooms for agents, with messages, files, search, and resumable events.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that allows AI agents to play notification sounds when tasks are completed.167 npm14Apache 2.0
- AlicenseDqualityDmaintenanceEnables MCP agents to send desktop notifications for completed tasks, failures, and important updates, providing visible and reliable feedback.144 npm2Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents and applications to send audio notifications with text-to-speech, message streaming, agent-to-agent conversations, and web push notifications through a persistent message store and MCP integration.100 npm1MIT
- AlicenseNot gradedqualityDmaintenanceSends desktop notifications when agents complete tasks, supporting local and remote agents.5 npmMIT