Skip to main content
Glama
README.md
# mux-mcp

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io)

MCP server for [Mux](https://mux.com), the video infrastructure platform. 5 tools for fetching assets, clipping videos into shorts, monitoring live streams, pulling viewer analytics, and triggering auto-captions. Built for AI agents working with video content.

As of May 2026, Mux has an official Node SDK MCP and there are a few small community attempts, but no production-ready Python MCP server lives at this address. This is the community-built rail to fill that gap on the Python side.

## The 5 tools

| Tool | Purpose |
|---|---|
| `get_asset` | Fetch a video asset's metadata, duration, status, and playback URLs |
| `create_clip` | Clip a long video at start and end timestamps to make a short |
| `list_live_streams` | List live streams with their current state (active, idle, disconnected) |
| `get_video_metrics` | Pull engagement and quality metrics from Mux Data (views, error rate, rebuffer percentage) |
| `trigger_transcription` | Generate auto-captions for a video asset in a target language |

## Install

```bash
pip install mux-mcp
```

## Configure

```bash
export MUX_TOKEN_ID="your-mux-token-id"
export MUX_TOKEN_SECRET="your-mux-token-secret"
```

Get a Mux Token ID + Secret at [dashboard.mux.com](https://dashboard.mux.com). Tokens scope to Video, Data, or both. The MCP server uses HTTP Basic Auth: it base64-encodes `MUX_TOKEN_ID:MUX_TOKEN_SECRET` and sends it as the Authorization header on every request.

## Use with Claude Desktop

```json
{
  "mcpServers": {
    "mux": {
      "command": "mux-mcp",
      "env": {
        "MUX_TOKEN_ID": "your-mux-token-id",
        "MUX_TOKEN_SECRET": "your-mux-token-secret"
      }
    }
  }
}
```

Restart Claude Desktop. The 5 Mux tools are now available.

## Use case: AI video editor + analytics assistant

Typical agent flow:

1. Call `get_asset(asset_id)` to pull a long-form video's metadata + duration
2. Call `create_clip(source_asset_id, start_time, end_time)` to cut a short from the source at specific timestamps
3. Call `trigger_transcription(asset_id, language_code)` to auto-generate captions on the new clip
4. For live operations: `list_live_streams(status="active")` to find active broadcasts
5. For analytics: `get_video_metrics(metric_id="video_views", video_id=...)` to pull engagement on a specific video

## Architecture

- Public MIT-licensed wrapper around the Mux REST API
- Async HTTP via `httpx`
- pydantic v2 input validation
- HTTP Basic Auth (base64-encoded token ID + secret), server-side only
- Separates Mux Video endpoints (assets, live streams, tracks) from Mux Data endpoints (metrics)
- Rate-limit aware (429 returns a clean error, agent retries upstream)

## Security note

Mux API endpoints do not support CORS. Requests must run server-side. This MCP keeps the token secret vaulted in environment variables and never exposes them to client code or agent context.

## Development

```bash
git clone https://github.com/NoBanks/mux-mcp.git
cd mux-mcp
pip install -e ".[dev]"
pytest
```

## License

MIT. See [LICENSE](LICENSE).

## Author

Ryan Hammer (NoBanks). Solo founder + engineer. Built this and 7 other MCP servers as part of a sprint to expose AI agent rails for the products and platforms shipping daily.

- GitHub: [@NoBanks](https://github.com/NoBanks)
- X/Twitter: [@livingagentic](https://x.com/livingagentic)
- Site: [livingagentic.me](https://livingagentic.me), [nohumannearby.com](https://nohumannearby.com)

Open to AI engineering roles, contract or full-time, remote-only.