{
  "markdown": "# ProducerMCP\n\n<!-- mcp-name: io.github.AceDataCloud/mcp-producer -->\n\n[![PyPI version](https://img.shields.io/pypi/v/mcp-producer.svg)](https://pypi.org/project/mcp-producer/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/mcp-producer.svg)](https://pypi.org/project/mcp-producer/)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for AI music generation using [Producer/Riffusion](https://www.riffusion.com/) (FUZZ models) through the [AceDataCloud API](https://platform.acedata.cloud).\n\nGenerate AI music directly from Claude, VS Code, or any MCP-compatible client.\n\n## Features\n\n- **Text to Music** - Create AI-generated music from text prompts\n- **Custom Music** - Full control with custom lyrics, title, and style\n- **Song Extension** - Continue songs from any timestamp\n- **Cover/Remix** - Create covers in different genres and styles\n- **Variations** - Generate alternative versions of songs\n- **Vocal/Instrumental Swap** - Mix vocals and instrumentals between songs\n- **Section Replacement** - Re-generate specific sections of a song\n- **Stem Separation** - Split songs into vocal and instrumental tracks\n- **Lyrics Generation** - Generate structured lyrics from prompts\n- **Video Generation** - Create music videos for songs\n- **WAV Export** - Get lossless audio format\n- **8 FUZZ Models** - From FUZZ-0.8 to FUZZ-2.0 Pro\n\n## Tool Reference\n\n| Tool | Description |\n|------|-------------|\n| `producer_generate_music` | Generate AI music from a text prompt. |\n| `producer_generate_custom_music` | Generate music with custom lyrics, title, and style. |\n| `producer_extend_music` | Extend an existing song from a specific timestamp. |\n| `producer_cover_music` | Create a cover/remix version in a different style. |\n| `producer_variation_music` | Create a variation of an existing song. |\n| `producer_swap_vocals` | Swap vocals between two songs. |\n| `producer_swap_instrumentals` | Swap instrumentals between two songs. |\n| `producer_replace_section` | Replace a specific time range with new content. |\n| `producer_stems_music` | Separate a song into vocal and instrumental stems. |\n| `producer_generate_lyrics` | Generate structured song lyrics from a prompt. |\n| `producer_upload_audio` | Upload external audio for processing. |\n| `producer_generate_video` | Generate a music video for a song. |\n| `producer_generate_wav` | Get lossless WAV format of a song. |\n| `producer_get_task` | Query the status of a generation task. |\n| `producer_get_tasks_batch` | Query multiple generation tasks at once. |\n| `producer_list_models` | List all available FUZZ models. |\n| `producer_list_actions` | List all available actions and tools. |\n| `producer_get_lyric_format_guide` | Get lyrics formatting guide. |\n\n## Quick Start\n\n### 1. Get Your API Token\n\n1. Sign up at [AceDataCloud Platform](https://platform.acedata.cloud)\n2. Navigate to the API documentation\n3. Click **\"Acquire\"** to get your API token\n4. Copy the token for use below\n\n### 2. Use the Hosted Server (Recommended)\n\nAceDataCloud hosts a managed MCP server -- **no local installation required**.\n\n**Endpoint:** `https://producer.mcp.acedata.cloud/mcp`\n\nAll requests require a Bearer token. Use the API token from Step 1.\n\n#### Claude.ai\n\nConnect directly on [Claude.ai](https://claude.ai) with OAuth -- **no API token needed**:\n\n1. Go to Claude.ai **Settings > Integrations > Add More**\n2. Enter the server URL: `https://producer.mcp.acedata.cloud/mcp`\n3. Complete the OAuth login flow\n4. Start using the tools in your conversation\n\n#### Claude Desktop\n\nAdd to your config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Cursor / Windsurf\n\nAdd to your MCP config (`.cursor/mcp.json` or `.windsurf/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### VS Code (Copilot)\n\nAdd to your VS Code MCP config (`.vscode/mcp.json`):\n\n```json\n{\n  \"servers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\nOr install the [Ace Data Cloud MCP extension](https://marketplace.visualstudio.com/items?itemName=acedatacloud.acedatacloud-mcp) for VS Code, which registers the hosted MCP servers with one-click setup.\n\n#### JetBrains IDEs\n\n1. Go to **Settings > Tools > AI Assistant > Model Context Protocol (MCP)**\n2. Click **Add** > **HTTP**\n3. Paste:\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Claude Code\n\nClaude Code supports MCP servers natively:\n\n```bash\nclaude mcp add producer --transport http https://producer.mcp.acedata.cloud/mcp \\\n  -h \"Authorization: Bearer YOUR_API_TOKEN\"\n```\n\nOr add to your project's `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Cline\n\nAdd to Cline's MCP settings (`.cline/mcp_settings.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Amazon Q Developer\n\nAdd to your MCP configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Roo Code\n\nAdd to Roo Code MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Continue.dev\n\nAdd to `.continue/config.yaml`:\n\n```yaml\nmcpServers:\n  - name: producer\n    type: streamable-http\n    url: https://producer.mcp.acedata.cloud/mcp\n    headers:\n      Authorization: \"Bearer YOUR_API_TOKEN\"\n```\n\n#### Zed\n\nAdd to Zed's settings (`~/.config/zed/settings.json`):\n\n```json\n{\n  \"language_models\": {\n    \"mcp_servers\": {\n      \"producer\": {\n        \"url\": \"https://producer.mcp.acedata.cloud/mcp\",\n        \"headers\": {\n          \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### cURL Test\n\n```bash\n# Health check (no auth required)\ncurl https://producer.mcp.acedata.cloud/health\n\n# MCP initialize\ncurl -X POST https://producer.mcp.acedata.cloud/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json\" \\\n  -H \"Authorization: Bearer YOUR_API_TOKEN\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"1.0\"}}}'\n```\n\n### 3. Or Run Locally (Alternative)\n\nIf you prefer to run the server on your own machine:\n\n```bash\n# Install from PyPI\npip install mcp-producer\n# or\nuvx mcp-producer\n\n# Set your API token\nexport ACEDATACLOUD_API_TOKEN=\"your_token_here\"\n\n# Run (stdio mode for Claude Desktop / local clients)\nmcp-producer\n\n# Run (HTTP mode for remote access)\nmcp-producer --transport http --port 8000\n```\n\n#### Claude Desktop (Local)\n\n```json\n{\n  \"mcpServers\": {\n    \"producer\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-producer\"],\n      \"env\": {\n        \"ACEDATACLOUD_API_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\n#### Docker (Self-Hosting)\n\n```bash\ndocker pull ghcr.io/acedatacloud/mcp-producer:latest\ndocker run -p 8000:8000 ghcr.io/acedatacloud/mcp-producer:latest\n```\n\nClients connect with their own Bearer token -- the server extracts the token from each request's `Authorization` header.\n\n## Available Tools\n\n### Music Generation\n\n| Tool                             | Description                             |\n| -------------------------------- | --------------------------------------- |\n| `producer_generate_music`        | Generate music from a text prompt       |\n| `producer_generate_custom_music` | Generate with custom lyrics and style   |\n| `producer_extend_music`          | Extend a song from a timestamp          |\n| `producer_cover_music`           | Create a cover in a different style     |\n| `producer_variation_music`       | Create a variation of a song            |\n\n### Vocal/Instrumental\n\n| Tool                             | Description                             |\n| -------------------------------- | --------------------------------------- |\n| `producer_swap_vocals`           | Swap vocals between two songs           |\n| `producer_swap_instrumentals`    | Swap instrumentals between two songs    |\n| `producer_replace_section`       | Replace a time range with new content   |\n| `producer_stems_music`           | Separate into stems                     |\n\n### Lyrics\n\n| Tool                       | Description                      |\n| -------------------------- | -------------------------------- |\n| `producer_generate_lyrics` | Generate lyrics from a prompt    |\n\n### Media\n\n| Tool                       | Description                      |\n| -------------------------- | -------------------------------- |\n| `producer_upload_audio`    | Upload external audio            |\n| `producer_generate_video`  | Generate video for a song        |\n| `producer_generate_wav`    | Get lossless WAV format          |\n\n### Tasks\n\n| Tool                       | Description                      |\n| -------------------------- | -------------------------------- |\n| `producer_get_task`        | Query a single task status       |\n| `producer_get_tasks_batch` | Query multiple tasks at once     |\n\n### Information\n\n| Tool                              | Description                      |\n| --------------------------------- | -------------------------------- |\n| `producer_list_models`            | List available FUZZ models       |\n| `producer_list_actions`           | List available API actions       |\n| `producer_get_lyric_format_guide` | Lyric formatting guide           |\n\n## Usage Examples\n\n### Generate Music from Prompt\n\n```\nUser: Create a jazz song about rainy nights\n\nClaude: I'll generate a jazz song for you.\n[Calls producer_generate_music with prompt=\"Smooth jazz song about rainy nights, saxophone, piano, moody\"]\n```\n\n### Custom Song with Lyrics\n\n```\nUser: Here are my lyrics:\n[Verse] Walking in the rain...\n[Chorus] But I keep moving on...\n\nClaude: I'll create a song with your lyrics.\n[Calls producer_generate_custom_music with lyrics, title, and prompt]\n```\n\n### Extend a Song\n\n```\nUser: Make this song longer with another verse\n\nClaude: I'll extend the song from where it left off.\n[Calls producer_extend_music with audio_id, continue_at, and new lyrics]\n```\n\n### Create a Cover\n\n```\nUser: Make an acoustic version of this song\n\nClaude: I'll create an acoustic cover.\n[Calls producer_cover_music with audio_id and prompt=\"acoustic folk, gentle guitar\"]\n```\n\n## Available Models\n\n| Model            | Tier    | Description                                      |\n|------------------|---------|--------------------------------------------------|\n| FUZZ-2.0 Pro     | Pro     | Highest quality, best for professional production |\n| FUZZ-2.0         | Default | Recommended for most use cases (default)          |\n| FUZZ-2.0 Raw     | Raw     | Unprocessed output, for custom post-processing    |\n| FUZZ-1.1 Pro     | Pro     | High quality legacy model                         |\n| FUZZ-1.0 Pro     | Pro     | Professional legacy model                         |\n| FUZZ-1.0         | Default | Stable legacy model                               |\n| FUZZ-1.1         | Default | Improved legacy model                              |\n| FUZZ-0.8         | Legacy  | Original model, basic quality                      |\n\n## Configuration\n\n### Environment Variables\n\n| Variable                    | Description                 | Default                     |\n| --------------------------- | --------------------------- | --------------------------- |\n| `ACEDATACLOUD_API_TOKEN`    | API token from AceDataCloud | **Required**                |\n| `ACEDATACLOUD_API_BASE_URL` | API base URL                | `https://api.acedata.cloud` |\n| `ACEDATACLOUD_OAUTH_CLIENT_ID`  | OAuth client ID (hosted mode) | --                          |\n| `ACEDATACLOUD_PLATFORM_BASE_URL` | Platform base URL            | `https://platform.acedata.cloud` |\n| `PRODUCER_DEFAULT_MODEL`    | Default FUZZ model          | `FUZZ-2.0`                  |\n| `PRODUCER_REQUEST_TIMEOUT`  | Request timeout in seconds  | `1800`                      |\n| `LOG_LEVEL`                 | Logging level               | `INFO`                      |\n\n### Command Line Options\n\n```bash\nmcp-producer --help\n\nOptions:\n  --version          Show version\n  --transport        Transport mode: stdio (default) or http\n  --port             Port for HTTP transport (default: 8000)\n```\n\n## Development\n\n### Setup Development Environment\n\n```bash\n# Clone repository\ngit clone https://github.com/AceDataCloud/ProducerMCP.git\ncd ProducerMCP\n\n# Create virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # or `.venv\\Scripts\\activate` on Windows\n\n# Install with dev dependencies\npip install -e \".[dev,test]\"\n```\n\n### Run Tests\n\n```bash\n# Run unit tests\npytest\n\n# Run with coverage\npytest --cov=core --cov=tools\n\n# Run integration tests (requires API token)\npytest tests/test_integration.py -m integration\n```\n\n### Code Quality\n\n```bash\n# Format code\nruff format .\n\n# Lint code\nruff check .\n\n# Type check\nmypy core tools\n```\n\n### Build & Publish\n\n```bash\n# Install build dependencies\npip install -e \".[release]\"\n\n# Build package\npython -m build\n\n# Upload to PyPI\ntwine upload dist/*\n```\n\n## Project Structure\n\n```\nProducerMCP/\n├── core/                   # Core modules\n│   ├── __init__.py\n│   ├── client.py          # HTTP client for Producer API\n│   ├── config.py          # Configuration management\n│   ├── exceptions.py      # Custom exceptions\n│   ├── oauth.py           # OAuth 2.1 provider\n│   ├── server.py          # MCP server initialization\n│   ├── types.py           # Type definitions (models, actions)\n│   └── utils.py           # Utility functions\n├── tools/                  # MCP tool definitions\n│   ├── __init__.py\n│   ├── audio_tools.py     # Audio generation tools (9 tools)\n│   ├── lyrics_tools.py    # Lyrics generation\n│   ├── media_tools.py     # Upload, video, WAV tools\n│   ├── task_tools.py      # Task query tools\n│   └── info_tools.py      # Information tools\n├── prompts/                # MCP prompts\n│   └── __init__.py        # Prompt templates\n├── tests/                  # Test suite\n│   ├── conftest.py\n│   ├── test_client.py\n│   ├── test_config.py\n│   ├── test_integration.py\n│   └── test_utils.py\n├── deploy/                 # Deployment configs\n│   └── production/\n│       ├── deployment.yaml\n│       ├── ingress.yaml\n│       └── service.yaml\n├── .env.example           # Environment template\n├── .ruff.toml             # Ruff linter config\n├── CHANGELOG.md\n├── Dockerfile             # Docker image for HTTP mode\n├── docker-compose.yaml    # Docker Compose config\n├── LICENSE\n├── main.py                # Entry point\n├── pyproject.toml         # Project configuration\n└── README.md\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing`)\n5. Open a Pull Request\n\n## Documentation\n\n<!-- canonical-documentation -->\n[Documentation](https://platform.acedata.cloud/documents/producer)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Links\n\n- [AceDataCloud Platform](https://platform.acedata.cloud)\n- [Riffusion](https://www.riffusion.com/)\n- [Model Context Protocol](https://modelcontextprotocol.io)\n- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)\n\n---\n\nMade with love by [AceDataCloud](https://platform.acedata.cloud)\n",
  "bytes": 16845,
  "sha": "914b79c02577c8035f01a99ae8ace5c2c864fb6856c1bad794f6bf36285d8670",
  "repo_slug": "acedatacloud/producermcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_acedatacloud_mcp_producer_8464e8be/readme"
}