A Model Context Protocol (MCP) server that provides comprehensive sound playback capabilities for macOS. This server allows AI assistants and other MCP clients to play system sounds, text-to-speech, and custom audio files for rich audio feedback.
- π Simple Sound Methods: Pre-configured info, warning, and error sounds
- π΅ Custom System Sounds: Play any of the 14 built-in macOS sounds
- π£οΈ Text-to-Speech: Convert text to speech with customizable voices
- π File Playback: Play custom audio files from disk
- π Built with TypeScript and the MCP SDK
- πͺΆ Lightweight and easy to integrate
- π macOS (uses
afplayand system sounds) - π’ Node.js 18+
- π TypeScript
- Clone this repository:
git clone <repository-url>
cd mcp-make-sound- Install dependencies:
npm install- Build the project:
npm run buildStart the MCP server:
npm startFor development with auto-reload:
npm run devHere's how you can set up the MCP sound server to provide audio feedback when AI tasks complete in Warp terminal:
Configuration Rule: "When AI is done, use mcp-make-sound to play a sound. The MCP supports error, info and success. Play the right sound based on AI task outcome."
This setup allows you to:
- π Hear a pleasant chime when tasks complete successfully
β οΈ Get an alert sound for warnings or partial completions- β Receive clear audio feedback for errors or failures
The audio feedback helps you stay focused on other work while knowing immediately when your AI assistant has finished processing your requests.
The server provides four tools:
- Description: Play an informational system sound
- Parameters: None
- Sound: Glass.aiff
- Description: Play a warning system sound
- Parameters: None
- Sound: Purr.aiff
- Description: Play an error system sound
- Parameters: None
- Sound: Sosumi.aiff
- Description: Play various types of sounds with customizable parameters
- Parameters:
type(required):"system","tts", or"file"- Additional based on type (see examples below)
Play any of the 14 built-in macOS sounds:
{
"name": "play_sound",
"arguments": {
"type": "system",
"name": "Basso"
}
}Available system sounds:
Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink
Convert text to speech with optional voice selection:
{
"name": "play_sound",
"arguments": {
"type": "tts",
"text": "Hello, this is a test message",
"voice": "Albert"
}
}Without voice (uses system default):
{
"name": "play_sound",
"arguments": {
"type": "tts",
"text": "Task completed successfully"
}
}Supported voices:
- English:
Albert,Alice,Bad News,Bahh,Bells,Boing,Bruce,Bubbles,Cellos,Daniel,Deranged,Fred,Good News,Hysterical,Junior,Kathy,Pipe Organ,Princess,Ralph,Trinoids,Whisper,Zarvox - International:
Anna,AmΓ©lie,Daria,Eddy,Fiona,Jorge,Juan,Luca,Marie,Moira,Nora,Rishi,Samantha,Serena,Tessa,Thomas,Veena,Victoria,Xander,Yelda,Zosia
Note: If an unsupported voice is specified, the system will gracefully fall back to the default voice and continue playback.
Play audio files from disk:
{
"name": "play_sound",
"arguments": {
"type": "file",
"path": "/Users/username/Music/notification.mp3"
}
}Supports common audio formats: .aiff, .wav, .mp3, .m4a, etc.
- System Sounds: Only the 14 official macOS sounds are allowed
- Text-to-Speech:
- Text limited to 1000 characters maximum
- Voice validation with graceful fallback to system default
- Curated list of 43+ supported voices for security
- File Playback: Requires absolute paths and validates file existence
This server can be integrated with any MCP-compatible client, such as:
- π€ Claude Desktop
- π οΈ Custom MCP clients
- π§ AI assistants that support MCP
Add this to your MCP client configuration:
{
"mcp-make-sound": {
"command": "node",
"args": [
"/Users/nocoo/Workspace/mcp-make-sound/dist/index.js"
],
"env": {},
"working_directory": "/Users/nocoo/Workspace/mcp-make-sound",
"start_on_launch": true
}
}Example tool calls:
{
"name": "play_info_sound",
"arguments": {}
}{
"name": "play_sound",
"arguments": {
"type": "system",
"name": "Hero"
}
}mcp-make-sound/
βββ src/
β βββ index.ts # Main server implementation
β βββ __tests__/ # Unit tests
β βββ sound.test.ts # Sound system tests
βββ dist/ # Compiled JavaScript output
βββ eslint.config.js # ESLint configuration
βββ vitest.config.ts # Vitest test configuration
βββ package.json # Project configuration
βββ tsconfig.json # TypeScript configuration
βββ README.md # This file
npm run build- π¨ Compile TypeScript to JavaScriptnpm start-βΆοΈ Run the compiled servernpm run dev- π Development mode with auto-rebuild and restartnpm run kill- π Stop all running MCP server instances
npm run lint- π Check code style and errorsnpm run lint:fix- π§ Fix auto-fixable linting issuesnpm run test- π§ͺ Run tests in watch modenpm run test:run- β Run tests oncenpm run test:ui- ποΈ Run tests with interactive UI
- The server implements the MCP protocol using the official SDK
- It exposes four tools for different sound capabilities
- When a tool is called, it uses macOS commands:
afplayfor audio file playback (system sounds and custom files)sayfor text-to-speech synthesis
- System sounds are located in
/System/Library/Sounds/ - The server communicates over stdio transport
- π Transport: Standard I/O (stdio)
- π‘ Protocol: Model Context Protocol (MCP)
- π§ Audio Backend: macOS
afplayandsaycommands - π΅ Sound Files: System .aiff files, custom audio files, and synthesized speech
The server includes comprehensive error handling:
- Validates tool names and parameters
- Handles
afplayandsaycommand failures - Validates required parameters for each sound type
- Returns appropriate error messages to clients
- Graceful server shutdown on errors
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.
- π Info: Glass.aiff - A pleasant chime sound
β οΈ Warning: Purr.aiff - A gentle alert sound- β Error: Sosumi.aiff - A distinctive error sound
- π΅ 14 System Sounds: All built-in macOS sounds available
- π£οΈ 50+ TTS Voices: Multiple languages and character voices
- π Custom Files: Support for .aiff, .wav, .mp3, .m4a, and more
These capabilities provide rich audio feedback options for any application need.