Skip to main content
Glama

Resemble AI Voice Generation MCP Server

by obaid
README.md10.4 kB
# Resemble AI Voice Generation MCP Server A server implementation for the [Resemble AI](https://www.resemble.ai/) voice generation API that integrates with [Claude](https://www.anthropic.com/claude) and [Cursor](https://cursor.sh/) using the Model Context Protocol (MCP). ## Features - Generate voice audio from text using Resemble AI's voices - List available voice models - Return audio as local file or base64 encoded string - Multiple connection methods: - **SSE Transport** - Network-based Server-Sent Events (default) - **StdIO Transport** - Direct process communication ## Setup Instructions ### Prerequisites - Python 3.10 or higher - Resemble AI API key (sign up at [Resemble AI](https://www.resemble.ai/)) ### Environment Setup #### Option 1: Using Conda (Recommended) ```bash # Run the setup script ./scripts/setup_environment.sh # Activate the environment conda activate resemble_mcp ``` #### Option 2: Using Virtual Environment ```bash # Run the setup script ./scripts/setup_venv.sh # Activate the environment source venv/bin/activate ``` ### Configuration Set your Resemble AI API key as an environment variable: ```bash export RESEMBLE_API_KEY="your_api_key_here" ``` Alternatively, create a `.env` file in the project root with the following content: ``` RESEMBLE_API_KEY=your_api_key_here ``` ## Running the Server ### Using the Run Script (Recommended) Choose your preferred implementation: ```bash # Run the MCP SDK implementation with SSE transport (default) ./run_server.sh mcp 8083 # Run the HTTP implementation ./run_server.sh http 8083 # Run with StdIO transport (for direct process communication) ./run_server.sh stdio ``` ### Using the CLI Directly ```bash # Run the MCP SDK implementation with SSE transport python -m src.cli --implementation mcp --port 8083 # Run with StdIO transport python -m src.cli --implementation stdio ``` ## Connecting to Claude Desktop ### SSE Transport Connection Create a `claude_desktop_config.json` file: ```json { "mcpServers": { "resemble-ai": { "sseUrl": "http://localhost:8083/sse" } } } ``` ### StdIO Transport Connection Create a `claude_desktop_config.json` file: ```json { "mcpServers": { "resemble-ai": { "command": "python", "args": ["-m", "src.cli", "--implementation", "stdio"], "env": { "RESEMBLE_API_KEY": "your_api_key_here" }, "disabled": false, "autoApprove": [] } } } ``` ## Connecting to Cursor ### SSE Transport Connection 1. Go to Settings → AI → MCP Servers 2. Click "Add Server" 3. Select "SSE" as the connection type 4. Set the URL to: `http://localhost:8083/sse` ### StdIO Transport Connection 1. Go to Settings → AI → MCP Servers 2. Click "Add Server" 3. Select "Subprocess" as the connection type 4. Set the command to: `python -m src.cli --implementation stdio` 5. Optionally add environment variables: - `RESEMBLE_API_KEY`: Your Resemble AI API key ## Available Tools ### `list_voices` Lists available voice models from Resemble AI. ### `generate_tts` Generates voice audio from text. Parameters: - `text`: The text to convert to speech - `voice_id`: ID of the voice to use - `return_type`: How to return the audio: 'file' or 'base64' (optional, default: 'file') - `output_filename`: Filename for the output without extension (optional) ## Implementation Details The project includes several implementations: - `src/resemble_mcp_server.py`: Uses the MCP SDK with SSE transport - `src/resemble_stdio_server.py`: Uses StdIO transport for direct process communication - `src/resemble_http_server.py`: HTTP implementation with SSE (fallback) - `src/resemble_ai_server.py`: Direct API implementation - `src/resemble_ai_sdk_server.py`: Implementation using the official Resemble SDK ## Troubleshooting ### MCP SDK Import Errors If you encounter issues importing the MCP SDK, the server will automatically fall back to the HTTP implementation with SSE transport. ### Connection Issues If Claude or Cursor cannot connect to the server: 1. Check that the server is running 2. Verify the correct URL is configured 3. Check that your API key is valid 4. Look for errors in the server logs ### StdIO vs. SSE Transport - Use **SSE Transport** when you want to run the server separately, or on a different machine - Use **StdIO Transport** when you want Claude/Cursor to manage the server process for you ## Examples Example usage can be found in the `examples/` directory. ## 📁 Repository Structure ``` . ├── src/ # Source code for the server implementations │ ├── resemble_mcp_server.py # MCP SDK implementation (recommended) │ ├── resemble_http_server.py # HTTP API implementation │ ├── resemble_ai_server.py # Direct API implementation │ ├── resemble_ai_sdk_server.py # Resemble SDK implementation │ └── cli.py # CLI tool for running the server ├── tests/ # Test scripts ├── docs/ # Documentation ├── examples/ # Example usage and tools ├── scripts/ # Setup and utility scripts ├── output/ # Generated audio output directory ├── .env.example # Example environment configuration ├── requirements.txt # Python dependencies └── README.md # This file ``` ## 🚀 Quick Setup Two setup scripts are provided to make installation easy: ### Using Conda (Recommended) ```bash # Make the script executable chmod +x scripts/setup_environment.sh # Run the setup script ./scripts/setup_environment.sh ``` ### Using Python venv ```bash # Make the script executable chmod +x scripts/setup_venv.sh # Run the setup script ./scripts/setup_venv.sh ``` Either script will: 1. Create a Python 3.10+ environment 2. Install all required dependencies 3. Set up a template .env file 4. Create the output directory for audio files ## Manual Installation If you prefer to set up manually: 1. Create a Python 3.10+ environment: ```bash # Using conda conda create -n resemble_mcp python=3.10 conda activate resemble_mcp # OR using venv (with Python 3.10+ already installed) python3.10 -m venv venv source venv/bin/activate ``` 2. Install dependencies: ```bash pip install uvicorn fastapi python-dotenv requests pydantic httpx sse-starlette pip install git+https://github.com/modelcontextprotocol/python-sdk.git ``` 3. Set up your environment variables: ```bash cp .env.example .env ``` Edit the `.env` file and add your Resemble AI API key: ``` RESEMBLE_API_KEY=your_api_key_here ``` Optional: Customize audio output settings ``` OUTPUT_DIR=./output AUDIO_FORMAT=mp3 ``` 4. Create output directory: ```bash mkdir -p output ``` ## 🚀 Running the Server You can run the server using our new CLI tool which supports all implementations: ```bash # Activate your environment if not already activated conda activate resemble_mcp # OR source venv/bin/activate # Run the MCP SDK implementation (recommended) python -m src.cli --implementation mcp --port 8083 # Other implementations: # HTTP API implementation python -m src.cli --implementation http --port 8083 # Direct API implementation python -m src.cli --implementation direct --port 8083 # Resemble SDK implementation python -m src.cli --implementation sdk --port 8083 ``` ## 🔌 Integrating with Cursor AI Cursor can interact with the Resemble AI voice generation server through the SSE interface: 1. In Cursor, go to Settings → AI → MCP Servers 2. Click "Add Server" and enter the SSE URL: `http://localhost:8083/sse` (adjust port if needed) 3. Save the configuration ## 🔌 Integrating with Claude Desktop 1. Configure the MCP Server in Claude Desktop settings: ```json { "mcpServers": { "resemble-ai": { "command": "python", "args": ["-m", "src.cli", "--implementation", "mcp"], "env": { "RESEMBLE_API_KEY": "your_api_key_here" }, "disabled": false, "autoApprove": [] } } } ``` ## 🛠️ Tool Documentation ### list_voices Lists all available voice models from Resemble AI. **Parameters:** None **Returns:** - `voices`: List of available voice models with IDs, names, genders, languages, accents, and descriptions ### generate_tts Generates voice audio from text. **Parameters:** - `text` (string, required): The text to convert to speech - `voice_id` (string, required): The ID of the voice to use - `return_type` (string, optional): How to return the audio: 'file' or 'base64' (default: 'file') - `output_filename` (string, optional): Filename for the output without extension (default: auto-generated name) **Returns:** - `success` (boolean): Whether the operation was successful - `message` (string): Status message - `audio_data` (string, optional): Base64-encoded audio data (if return_type is 'base64') - `file_path` (string, optional): Path to the saved audio file (if return_type is 'file') ## 💬 Example Prompts Once connected to Cursor or Claude Desktop, you can use prompts like: **Listing available voices:** ``` List all available voice models from Resemble AI. ``` **Generating voice audio:** ``` Generate audio of the text "Hello, this is a test of the Resemble AI voice generation system" using a male English voice. ``` ## ⚠️ Troubleshooting - **Python Version Issues**: The MCP package requires Python 3.10 or newer. Use the provided setup scripts to create the correct environment. - **API Connection Issues**: Make sure you're using the correct API endpoint. The Resemble AI API endpoint is `https://app.resemble.ai/api/v2/`. - **Authentication Errors**: Verify your API key is correct and not expired. - **Missing Projects**: The API requires at least one project in your Resemble account. Create a project through the Resemble AI dashboard if needed. - **Cursor SSE Connection Errors**: If Cursor fails to connect via SSE, make sure: - The server is running on the specified port - You're using the correct `/sse` endpoint - No firewall is blocking the connection - Try restarting both the server and Cursor ## 📚 Additional Documentation For more detailed documentation, see the files in the `docs/` directory. ## 📄 License MIT

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/obaid/resemble-mcp'

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