UNPKG

mmaudio-mcp

Version:

MMAudio Desktop Extension - AI-powered video-to-audio and text-to-audio generation

387 lines (269 loc) • 9.8 kB
# MMAudio MCP [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/) [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-blue)](https://modelcontextprotocol.io/) AI-powered video-to-audio and text-to-audio generation using MMAudio's advanced AI technology. This Desktop Extension implements the Model Context Protocol (MCP) to provide seamless integration with Cursor, Claude Desktop, and other MCP-compatible clients. ## 🌟 Features - **Video-to-Audio Generation**: Transform video content into synchronized audio with AI-powered analysis - **Text-to-Audio Generation**: Create professional audio content from text descriptions - **API Key Validation**: Verify MMAudio API credentials and check account status - **MCP Protocol**: Full Model Context Protocol implementation for universal compatibility - **Error Handling**: Comprehensive error handling with detailed feedback - **Type Safety**: Full TypeScript support with Zod schema validation - **Configurable**: Flexible configuration options for different use cases ## šŸš€ Quick Start ### Prerequisites - Node.js >= 18.0.0 - MMAudio API key ([Get one here](https://mmaudio.net/dashboard/api-keys)) - MCP-compatible client (Cursor, Claude Desktop, etc.) ### Installation 1. **Clone or download this extension**: ```bash cd mcp npm install ``` 2. **Configure your API key**: ```bash # Set environment variable export MMAUDIO_API_KEY="sk-your-api-key-here" # Or create a config.js file (copy from config.example.js) cp config.example.js config.js # Edit config.js with your API key ``` 3. **Test the installation**: ```bash npm start ``` 4. **Link the package**: ```bash npm link ``` ### Usage with Cursor 1. **Add to your Cursor MCP configuration**: ```json { "mcpServers": { "mmaudio": { "command": "npx", "args": ["-y", "mmaudio-mcp"], "env": { "MMAUDIO_API_KEY": "sk-your-api-key-here" } } } } ``` 2. **Restart Cursor** and the MMAudio tools will be available in your AI assistant. ### Usage with Claude Desktop 1. **Add to your Claude Desktop configuration** (`claude_desktop_config.json`): ```json { "mcpServers": { "mmaudio": { "command": "npx", "args": ["-y", "mmaudio-mcp"], "env": { "MMAUDIO_API_KEY": "sk-your-api-key-here" } } } } ``` 2. **Restart Claude Desktop** to load the extension. ## šŸ› ļø Available Tools ### 1. Video-to-Audio Generation Generate AI-powered audio from video content. **Tool Name**: `video_to_audio` **Parameters**: - `video_url` (required): URL of the video file - `prompt` (required): Description of the audio you want to generate - `negative_prompt` (optional): What to avoid in the generated audio - `duration` (optional): Audio duration in seconds (1-30, default: 8) - `num_steps` (optional): Number of inference steps (1-50, default: 25) - `cfg_strength` (optional): Guidance strength (1-10, default: 4.5) - `seed` (optional): Random seed for reproducible results **Example**: ``` Generate audio for this video: https://example.com/video.mp4 with the prompt "peaceful forest sounds with birds chirping and gentle wind" ``` ### 2. Text-to-Audio Generation Create audio content from text descriptions. **Tool Name**: `text_to_audio` **Parameters**: - `prompt` (required): Description of the audio you want to generate - `duration` (optional): Audio duration in seconds (1-30, default: 8) - `num_steps` (optional): Number of inference steps (1-50, default: 25) - `cfg_strength` (optional): Guidance strength (1-10, default: 4.5) - `negative_prompt` (optional): What to avoid in the generated audio - `seed` (optional): Random seed for reproducible results **Example**: ``` Create audio with the description "coffee shop ambiance with gentle chatter and espresso machine sounds" ``` ### 3. API Key Validation Validate your MMAudio API key and check account status. **Tool Name**: `validate_api_key` **Parameters**: - `api_key` (optional): API key to validate (uses configured key if not provided) **Example**: ``` Validate my MMAudio API key ``` ## āš™ļø Configuration ### Environment Variables | Variable | Description | Required | Default | | ------------------ | ------------------------------------ | -------- | --------------------- | | `MMAUDIO_API_KEY` | Your MMAudio API key | Yes | - | | `MMAUDIO_BASE_URL` | Base URL for MMAudio API | No | `https://mmaudio.net` | | `MMAUDIO_TIMEOUT` | Request timeout in milliseconds | No | `60000` | | `LOG_LEVEL` | Log level (error, warn, info, debug) | No | `error` | | `DEBUG` | Enable debug mode | No | `false` | ### Configuration File You can also use a `config.js` file for configuration: ```javascript export const config = { apiKey: "sk-your-api-key-here", baseUrl: "https://mmaudio.net", timeout: 60000, // ... other options }; ``` ## šŸ“ Example Usage ### Video-to-Audio Example ```javascript // In your MCP client (Cursor, Claude Desktop, etc.) "Please generate audio for this video URL: https://example.com/nature_video.mp4"; "I want forest sounds with birds chirping and a gentle breeze"; "Duration should be 10 seconds"; ``` ### Text-to-Audio Example ```javascript // Create ambient audio "Generate 15 seconds of coffee shop ambiance with gentle background chatter"; // Create sound effects "Create the sound of rain falling on a wooden roof for 8 seconds"; // Create atmospheric audio "Generate futuristic sci-fi ambient sounds for a space station"; ``` ## šŸ”§ Development ### Project Structure ``` mcp/ ā”œā”€ā”€ server/index.js # Main MCP server implementation ā”œā”€ā”€ package.json # Node.js dependencies and scripts ā”œā”€ā”€ manifest.json # DXT extension manifest ā”œā”€ā”€ config.example.js # Configuration example └── README.md # This file ``` ### Testing 1. **Test the server directly**: ```bash npm start ``` 2. **Test with a simple MCP client**: ```bash echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | npm start ``` ### Development Mode Run the server in development mode with debugging: ```bash npm run dev ``` This enables additional logging and the Node.js inspector for debugging. ## 🚨 Troubleshooting ### Common Issues #### 1. "API key is required" Error **Problem**: The extension can't find your API key. **Solution**: - Ensure you've set the `MMAUDIO_API_KEY` environment variable - Or create a `config.js` file with your API key - Verify the API key is correct and active #### 2. "Connection refused" or Network Errors **Problem**: Can't connect to MMAudio API. **Solution**: - Check your internet connection - Verify the base URL is correct - Check if there are any firewall restrictions #### 3. "Insufficient credits" Error **Problem**: Your MMAudio account doesn't have enough credits. **Solution**: - Check your account balance at [mmaudio.net/dashboard](https://mmaudio.net/dashboard) - Purchase additional credits if needed - Use the `validate_api_key` tool to check your account status #### 4. MCP Client Not Detecting Extension **Problem**: Your MCP client (Cursor, Claude Desktop) doesn't show MMAudio tools. **Solution**: - Verify the configuration path in your MCP client settings - Ensure Node.js is in your PATH - Check the server logs for errors - Restart your MCP client ### Debug Mode Enable debug mode for detailed logging: ```bash DEBUG=true MMAUDIO_API_KEY=your-key node server/index.js ``` ### Logs The server logs to stderr. You can redirect logs to a file: ```bash node server/index.js 2> mmaudio.log ``` ## šŸ“„ API Reference ### Response Format All tools return responses in this format: ```json { "content": [ { "type": "text", "text": "{\"success\": true, \"message\": \"...\", \"result\": {...}}" } ] } ``` ### Success Response Example ```json { "success": true, "message": "Audio generated successfully from text", "result": { "audio_url": "https://example.com/generated_audio.wav", "content_type": "audio/wav", "file_name": "generated_audio.wav", "file_size": 1024000, "duration": 8, "prompt": "coffee shop ambiance" } } ``` ### Error Response Example ```json { "success": false, "error": "Invalid API key. Please check your MMAudio API key.", "code": "INVALID_REQUEST" } ``` ## šŸ”’ Security - API keys are handled securely and not logged - All requests use HTTPS - The extension runs in a sandboxed environment - No sensitive data is stored locally ## šŸ“– Related Documentation - [MMAudio API Documentation](https://mmaudio.net/docs) - [Model Context Protocol Specification](https://modelcontextprotocol.io/) - [Cursor MCP Integration Guide](https://docs.cursor.sh/mcp) - [Claude Desktop MCP Setup](https://claude.ai/docs/mcp) ## šŸ¤ Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## šŸ“ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## šŸ’¬ Support - [MMAudio Support](mailto:support@mmaudio.net) - [GitHub Issues](https://github.com/mmaudio/mmaudio-mcp/issues) - [Documentation](https://mmaudio.net/dashboard/api-key) --- **Made with ā¤ļø by the MMAudio Team**