Skip to main content
Glama

MCP Make Sound

by nocoo
README.md8.21 kB
# 🔊 MCP Make Sound 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. <a href="https://glama.ai/mcp/servers/@nocoo/mcp-make-sound"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@nocoo/mcp-make-sound/badge" alt="Make Sound MCP server" /> </a> ## ✨ Features - **🔔 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 ## 📋 Requirements - 🍎 macOS (uses `afplay` and system sounds) - 🟢 Node.js 18+ - 📝 TypeScript ## 🚀 Installation 1. Clone this repository: ```bash git clone <repository-url> cd mcp-make-sound ``` 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` ## 💡 Usage ### 🎵 Running the Server Start the MCP server: ```bash npm start ``` For development with auto-reload: ```bash npm run dev ``` ### 🎯 Example: Claude Integration with Warp Terminal Here'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. ### 🛠️ Available Tools The server provides four tools: #### Simple Sound Methods (Legacy) #### `play_info_sound` - **Description**: Play an informational system sound - **Parameters**: None - **Sound**: Glass.aiff #### `play_warning_sound` - **Description**: Play a warning system sound - **Parameters**: None - **Sound**: Purr.aiff #### `play_error_sound` - **Description**: Play an error system sound - **Parameters**: None - **Sound**: Sosumi.aiff #### Advanced Sound Method #### `play_sound` - **Description**: Play various types of sounds with customizable parameters - **Parameters**: - `type` (required): `"system"`, `"tts"`, or `"file"` - Additional based on type (see examples below) ### 📖 Usage Examples #### System Sounds Play any of the 14 built-in macOS sounds: ```json { "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` #### Text-to-Speech Convert text to speech with optional voice selection: ```json { "name": "play_sound", "arguments": { "type": "tts", "text": "Hello, this is a test message", "voice": "Albert" } } ``` Without voice (uses system default): ```json { "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. #### Custom Audio Files Play audio files from disk: ```json { "name": "play_sound", "arguments": { "type": "file", "path": "/Users/username/Music/notification.mp3" } } ``` Supports common audio formats: `.aiff`, `.wav`, `.mp3`, `.m4a`, etc. ### 🔒 Security & Limitations - **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 ### 🔗 Integration with MCP Clients This server can be integrated with any MCP-compatible client, such as: - 🤖 Claude Desktop - 🛠️ Custom MCP clients - 🧠 AI assistants that support MCP #### MCP Configuration Example Add this to your MCP client configuration: ```json { "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: ```json { "name": "play_info_sound", "arguments": {} } ``` ```json { "name": "play_sound", "arguments": { "type": "system", "name": "Hero" } } ``` ## 🛠️ Development ### 📁 Project Structure ``` 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 ``` ### 📜 Scripts #### Build & Run - `npm run build` - 🔨 Compile TypeScript to JavaScript - `npm start` - ▶️ Run the compiled server - `npm run dev` - 🔄 Development mode with auto-rebuild and restart - `npm run kill` - 🛑 Stop all running MCP server instances #### Code Quality & Testing - `npm run lint` - 🔍 Check code style and errors - `npm run lint:fix` - 🔧 Fix auto-fixable linting issues - `npm run test` - 🧪 Run tests in watch mode - `npm run test:run` - ✅ Run tests once - `npm run test:ui` - 🎛️ Run tests with interactive UI ### ⚙️ How It Works 1. The server implements the MCP protocol using the official SDK 2. It exposes four tools for different sound capabilities 3. When a tool is called, it uses macOS commands: - `afplay` for audio file playback (system sounds and custom files) - `say` for text-to-speech synthesis 4. System sounds are located in `/System/Library/Sounds/` 5. The server communicates over stdio transport ## 🔧 Technical Details - **🔌 Transport**: Standard I/O (stdio) - **📡 Protocol**: Model Context Protocol (MCP) - **🎧 Audio Backend**: macOS `afplay` and `say` commands - **🎵 Sound Files**: System .aiff files, custom audio files, and synthesized speech ## 🚨 Error Handling The server includes comprehensive error handling: - Validates tool names and parameters - Handles `afplay` and `say` command failures - Validates required parameters for each sound type - Returns appropriate error messages to clients - Graceful server shutdown on errors ## 📄 License MIT License ## 🤝 Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## 🎼 Sound Capabilities ### Simple Methods (Legacy) - **🔔 Info**: Glass.aiff - A pleasant chime sound - **⚠️ Warning**: Purr.aiff - A gentle alert sound - **❌ Error**: Sosumi.aiff - A distinctive error sound ### Advanced Method (play_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.

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/nocoo/mcp-make-sound'

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