MCP server for Minimax AI APIs providing text-to-speech, voice cloning, video generation, and image generation capabilities
The server defines 3 tools with generally clear naming (verb_noun pattern) and comprehensive parameter schemas. However, descriptions are verbose and contain example values that LLMs may literalize. Parameter constraints are present in schemas but some descriptions lack actionable format guidance. Output schemas are not formally documented. Error handling exists but lacks recovery guidance. The tool set is reasonably well-composed for a TTS/voice-cloning domain, but several pattern violations limit quality.
List all voices available. Args: voice_type (str, optional): The type of voices to list. Values range ["all", "system", "voice_cloning"], with "all" being the default. Returns: Text content with the list of voices.
Convert text to audio with a given voice and save the output audio file to a given directory. Directory is optional, if not provided, the output file will be saved to $HOME/Desktop. Voice id is optional, if not provided, the default voice will be used. COST WARNING: This tool makes an API call to Minimax which may incur costs. Only use when explicitly requested by the user. Args: text (str): The text to convert to speech. voice_id (str, optional): The id of the voice to use. For example, "male-qn-qingse"/"audiobook_female_1"/"cute_boy"/"Charming_Lady"... model (string, optional): The model to use. speed (float, optional): Speed of the generated audio. Controls the speed of the generated speech. Values range from 0.5 to 2.0, with 1.0 being the default speed. vol (float, optional): Volume of the generated audio. Controls the volume of the generated speech. Values range from 0 to 10, with 1 being the default volume. pitch (int, optional): Pitch of the generated audio. Controls the speed of the generated speech. Values range from -12 to 12, with 0 being the default speed. emotion (str, optional): Emotion of the generated audio. Controls the emotion of the generated speech. Values range ["happy", "sad", "angry", "fearful", "disgusted", "surprised", "neutral"], with "happy" being the default emotion. sample_rate (int, optional): Sample rate of the generated audio. Controls the sample rate of the generated speech. Values range [8000,16000,22050,24000,32000,44100] with 32000 being the default sample rate. bitrate (int, optional): Bitrate of the generated audio. Controls the bitrate of the generated speech. Values range [32000,64000,128000,256000] with 128000 being the default bitrate. channel (int, optional): Channel of the generated audio. Controls the channel of the generated speech. Values range [1, 2] with 1 being the default channel. format (str, optional): Format of the generated audio. Controls the format of the generated speech. Values range ["pcm", "mp3","flac"] with "mp3" being the default format. language_boost (str, optional): Language boost of the generated audio. Controls the language boost of the generated speech. Values range ['Chinese', 'Chinese,Yue', 'English', 'Arabic', 'Russian', 'Spanish', 'French', 'Portuguese', 'German', 'Turkish', 'Dutch', 'Ukrainian', 'Vietnamese', 'Indonesian', 'Japanese', 'Italian', 'Korean', 'Thai', 'Polish', 'Romanian', 'Greek', 'Czech', 'Finnish', 'Hindi', 'auto'] with "auto" being the default language boost. output_directory (str): The directory to save the audio to. Returns: Text content with the path to the output file and name of the voice used.
Descriptions contain example values (e.g., 'male-qn-qingse', 'audiobook_female_1', 'cute_boy', 'Charming_Lady') which LLMs tend to literalize in actual calls instead of adapting to context. Replace examples with enum constraints in schemas.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields when return structure is implicit. Descriptions state 'Returns: Text content with...' but do not formalize field names and types.
Error handling present in code (MinimaxAPIError, MinimaxRequestError) but does not provide actionable recovery guidance in error messages. LLMs see raw exceptions without context on retryability or next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Clone a voice using provided audio files. The new voice will be charged upon first use. COST WARNING: This tool makes an API call to Minimax which may incur costs. Only use when explicitly requested by the user. Args: voice_id (str): The id of the voice to use. file (str): The path to the audio file to clone or a URL to the audio file. text (str, optional): The text to use for the demo audio. is_url (bool, optional): Whether the file is a URL. Defaults to False. output_directory (str): The directory to save the demo audio to. Returns: Text content with the voice id of the cloned voice.
text_to_audio description is 1,100+ characters, far exceeding recommended 10 - 1024 character range (baseline avg 194 chars). Excessive verbosity wastes tokens and buries key details. Compress to ~150 - 200 chars covering WHAT, WHEN, and key constraints.
Parameter descriptions list enumerated values as prose ('Values: happy, sad, angry...') instead of relying on JSON Schema enum declarations visible to LLMs. This splits constraint definition and invites hallucinated values. Use enums in schema only; reference them in descriptions.
voice_clone requires 'file' parameter (audio file path or URL) but description and parameter do not clearly state format expectations (MP3, WAV, bit depth), length limits, or sample rate requirements. LLMs may pass invalid formats.
All tools carry COST WARNING in descriptions to discourage frivolous use. However, no tool declares a 'cost' or 'estimated_cost' field in output, and no tool offers a dry-run or confirmation pattern. Agents cannot make cost-aware decisions.
output_directory parameter default is `null` for text_to_audio and voice_clone, and descriptions state 'if not provided, saves to $HOME/Desktop.' Server-side logic handles this, but parameter description should explicitly state the default behavior (e.g., 'Defaults to $HOME/Desktop if omitted').