<p align="center">
  <a href="https://bizmuse.ai"><img src="https://bizmuse.ai/logo.png" width="84" alt="BizMuse AI"></a>
</p>

<h1 align="center">BizMuse MCP Server</h1>

<p align="center">Give AI agents a structured music video generation workflow.</p>

<p align="center">
  <a href="https://www.npmjs.com/package/bizmuse-mcp"><img src="https://img.shields.io/npm/v/bizmuse-mcp?color=111111" alt="npm version"></a>
  <a href="https://bizmuse.ai/mcp"><img src="https://img.shields.io/badge/docs-bizmuse.ai-22c55e" alt="Documentation"></a>
  <a href="https://registry.modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP_Registry-listed-2563eb" alt="MCP Registry"></a>
  <a href="https://smithery.ai/servers/bizmuse-ai/bizmuse"><img src="https://img.shields.io/badge/Smithery-listed-f97316" alt="Smithery"></a>
  <img src="https://img.shields.io/badge/MCP-stdio-7c3aed" alt="MCP stdio">
  <img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License">
</p>

The official [Model Context Protocol](https://modelcontextprotocol.io) server for [BizMuse AI](https://bizmuse.ai). It connects Claude, Cursor, Codex, Windsurf, and compatible clients to one asynchronous music video workflow.

## Run

```bash
npx -y bizmuse-mcp
```

For MCPB-compatible directories and desktop clients, build a portable bundle with:

```bash
npm run bundle:mcpb
```

The generated artifact is written to `artifacts/bizmuse-mcp-<version>.mcpb` and can be published as a local stdio server on Smithery.

The package is registered as `ai.bizmuse/bizmuse` in the official MCP Registry. Namespace ownership is verified directly through `bizmuse.ai`; no maintainer's personal GitHub identity is exposed as the publisher namespace.

## Configure

Set your API key outside the conversation history:

```bash
export BIZMUSE_API_KEY=sk_your_api_key_here
```

`BIZMUSE_API_URL` is optional and defaults to `https://bizmuse.ai`.

The server can initialize and expose its tool catalog without credentials so MCP clients and directories can inspect its capabilities. Any tool that calls the BizMuse API still requires `BIZMUSE_API_KEY` and returns an actionable authentication error when it is missing.

### Claude Desktop

Add this server to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "bizmuse": {
      "command": "npx",
      "args": ["-y", "bizmuse-mcp"],
      "env": {
        "BIZMUSE_API_KEY": "sk_your_api_key_here"
      }
    }
  }
}
```

## Tool Catalog

| Tool | Purpose |
|---|---|
| `upload_audio` | Upload a local audio file or retain a direct public audio URL |
| `upload_image` | Upload 1-7 local reference images |
| `list_models` | Discover available music video models |
| `generate_music_video` | Submit an asynchronous BizMuse MV task |
| `get_task_status` | Refresh task progress |
| `get_task_result` | Retrieve the completed video and cover |
| `get_credit_balance` | Check the authenticated account balance |

The safe sequence is `upload_audio` → `upload_image` → `generate_music_video` → `get_task_status` → `get_task_result`.

## Privacy

The MCP process runs locally and communicates with `bizmuse.ai`. Local files are uploaded only when an upload tool is invoked. API keys are read from the process environment and are never returned as tool output.

## Links

- [Product](https://bizmuse.ai)
- [MCP documentation](https://bizmuse.ai/mcp)
- [Official MCP Registry](https://registry.modelcontextprotocol.io)
- [Smithery directory](https://smithery.ai/servers/bizmuse-ai/bizmuse)
- [Smithery agent skill](https://smithery.ai/skills/bizmuse-ai/bizmuse-music-video)
- [npm package](https://www.npmjs.com/package/bizmuse-mcp)
- [Source code](https://github.com/BizMuse-AI/mcp)
- [CLI documentation](https://bizmuse.ai/cli)
- [Agent Skill documentation](https://bizmuse.ai/skill)
- [Agent Skills repository](https://github.com/BizMuse-AI/skills)
- [Support](https://github.com/BizMuse-AI/mcp/issues)

## License

[MIT](LICENSE) © BizMuse AI
