Mux MCPサーバーをClaudeにつなぎ、動画アセットと再生分析を会話で扱う
動画配信基盤MuxのMCPサーバーをClaude CodeとClaude Desktopに追加し、アセット一覧や再生分析を会話で引く手順です。2つのツールの仕組みと、読み取り専用トークンで書き込みを止める方法も扱います。
動画配信基盤MuxのMCPサーバーをClaudeにつなぐと、動画アセットの一覧、アップロード、ライブ配信の管理、再生品質の分析までを会話で頼めます。接続先はホスト型の https://mcp.mux.com です。OAuthに対応したクライアントなら、ログインして環境を選ぶだけで使い始められます。
このサーバーは、個別のAPIごとにツールを並べる作りではありません。エージェントに渡るのは2つのツールだけで、そのうち1つはエージェントが書いたTypeScriptを実行します。便利な反面、削除のような破壊的な操作も特別扱いされません。この記事では接続、最初の依頼、権限の絞り方の順に説明します。
Mux MCPサーバーのツールは2つだけ
Mux MCPサーバーは「Code Mode」と呼ばれるツールの構成を採っています。数百のエンドポイントを個別のツールにせず、次の2つだけを公開します。
search_docs: MuxのAPIとSDKのドキュメントを検索するexecute: エージェントがMux公式SDK(@mux/ts)を使って書いたTypeScriptを実行し、返した値や出力を結果として戻す
ホスト型では、execute の呼び出しごとに、Mux管理の隔離されたサンドボックスが新しく用意されます。ネットワークはMuxのAPIホストにしか出られません。
この構成には利点が2つあります。1つは、複数手順の作業をコードにまとめて決まった順序で実行できること。もう1つは、巨大なAPI定義をツール説明としてコンテキストに載せずに済むことです。SDKの全体に届くので、次のような領域が対象に入ります。
| 領域 | 触れるもの |
|---|---|
| Mux Video | 触れるものアセット、ダイレクトアップロード、再生ID、トラック、ライブ配信、配信使用量 |
| Mux Data | 触れるものメトリクス、ディメンション、フィルタ、リアルタイムデータ、ビュー、エクスポート |
| Mux Robots | 触れるものジョブ、ワークフロー、ディレクティブ |
| System | 触れるもの署名キー、whoami などのアカウント系 |
| Webhooks | 触れるものWebhookペイロードの検証と展開 |
対応範囲が広いことは、そのまま事故の範囲が広いことでもあります。ここは後の節で権限を絞る話につなげます。
接続前に用意するもの
前提は2つです。Muxのアカウントと、リモートMCPサーバーに対応したクライアント(Claude DesktopやCursorなど)の最新版です。Claude Codeは、リモートのHTTPサーバーを claude mcp add --transport http で追加できます。
認証は、接続の最初のリクエストから必要です。OAuth対応のクライアントでは、クライアントが次の2つを案内します。
- Muxダッシュボードにログインする(ログイン済みなら省略される)
- この接続で認可する環境(Environment)を選ぶ
アクセストークンをダッシュボードで発行する手間はありません。環境を選ぶ画面があるので、本番と検証を分けているアカウントでは、最初は検証側を選ぶのが無難です。
Claude Codeで追加する
リモートMCPの追加は、次のコマンドです。名前は任意で、ここでは mux にします。
claude mcp add --transport http mux https://mcp.mux.com追加したら、Claude Codeのセッション内でMCPの状態を開きます。
/mcpmux を選ぶと認証に進み、ブラウザでMuxのログインと環境の選択を済ませる流れです。完了後は、mux が接続済みになっているかを同じ画面で見られます。
Claude Desktopの場合は、コネクタの追加画面でURLに https://mcp.mux.com を入れます。Muxのドキュメントは、Claude・Claude Code・ChatGPTではMCPサーバーを「コネクタ」と呼ぶことがあると書いています。
最初に頼んでみる依頼
接続できたら、読み取りだけの依頼から始めます。Muxのドキュメントには、次のような依頼文が載っています。文頭か文中に「Mux MCPを使って」と添えると、エージェントが他のツールではなくMuxを選びやすくなります。
動画アセットの管理
- 動画アセットの一覧と現在の状態を出してほしい
- 直近にアップロードした動画の再生URLを教えてほしい
- アセットID
ASSET_IDの字幕トラックを生成してほしい - Muxに動画をアップロードできるWebページを作ってほしい
Mux Robots
- アセットID
ASSET_IDのチャプターを生成するRobotsジョブを実行してほしい - 直近の動画を要約して、タグ案を出してほしい
Mux Dataの分析
- 直近1か月で、配信成績のよい国はどこか
- 視聴数の多い動画の上位はどれか
- アカウントで多い動画エラーは何か
- 絞り込みに使えるディメンションの一覧を出してほしい
この中で、アップロード用のWebページを作る依頼は少し性質が違います。execute で完結せず、できあがるページのコードをローカルに書かせる作業になるからです。Claude Codeなら、生成したコードの置き場所と、使うトークンの権限を先に指定しておくと安全です。
実行結果を読む順番
execute はコードの返り値を結果にします。依頼が曖昧だと、エージェントは広い範囲を取得するコードを書きます。「直近の10件」「ステータスが errored のもの」のように、件数や条件を最初の依頼に含めるほうが、結果が小さく読みやすくなります。
書き込みを止める権限の絞り方
Muxのドキュメントは、サーバーが「破壊的な操作を特別扱いしない」と明記しています。サーバーにできることは、認可した環境とアクセストークンの権限で決まります。変更させたくないなら、権限を絞るしかありません。
選択肢は2つあります。
書き込みを止める2つの方法
Read権限だけのトークン
Basic認証で接続すると、トークン自体が読み取りしかできなくなります。ドキュメントが挙げる確実な方法です。
ローカル版で許可メソッドを限定
ローカルで動かすと、
--code-allow-http-getsのようなフラグで実行可能なメソッドを絞れます。
Read権限のトークンで接続する
OAuthを使わず、トークンを直接渡す形です。ダッシュボードのSettings → Access Tokensで、Read権限だけのトークンを作ります。次に、トークンIDとシークレットを TOKEN_ID:TOKEN_SECRET の形でつなぎ、Base64にしたものを Authorization ヘッダーに載せます。
# 値は自分のトークンに置き換える。履歴に残さないよう環境変数から作る
CRED=$(printf '%s:%s' "$MUX_TOKEN_ID" "$MUX_TOKEN_SECRET" | base64)
claude mcp add --transport http mux https://mcp.mux.com \
--header "Authorization: Basic $CRED"--header の使い方は、Claude Codeのドキュメントにある Authorization: Bearer の例と同じ形式です。設定JSONで書くクライアントなら、Muxの例のとおり、url と headers を持つ mux のエントリになります。トークンは設定ファイルに平文で残るので、秘密情報として扱ってください。リポジトリに入るプロジェクト設定に書かないことが前提です。
ローカル版でメソッドを絞る
クライアントがリモートMCPに対応していない場合や、メソッド単位で絞りたい場合は、ローカル版の @mux/mcp を使います。Claude Codeには次のコマンドで追加します。
claude mcp add mux \
--env MUX_TOKEN_ID="your_access_token_id" \
MUX_TOKEN_SECRET="your_secret_key" \
-- npx -y @mux/mcp@latest --code-allow-http-gets--code-allow-http-gets を付けると、HTTPのGETを行うメソッドだけが許可され、サーバーは読み取り専用になります。ほかに次のフラグがあります。
| フラグ | 働き |
|---|---|
--no-tools=code / --no-tools=docs | 働き片方のツールを無効にする |
--code-allowed-methods | 働き名前が正規表現に合うメソッドを許可する |
--code-blocked-methods | 働き許可されていても、名前が合うメソッドをブロックする |
資産管理だけを許して削除は止めたいときは、許可と拒否を組み合わせます。
"args": ["-y", "@mux/mcp@latest",
"--code-allowed-methods=^video.assets.",
"--code-blocked-methods=delete"]削除メソッドの名前にはすべて delete が含まれるため、delete だけでまとめて止められます、とドキュメントは説明しています。
ローカル版だけにある条件
ローカル版では、execute のコードは自分のマシン上の隔離されたDenoのサンドボックスで動きます。Deno 2.9以上が必要で、@mux/mcp はオプションのnpm依存として自分用のDenoを入れます。入らない環境(Alpineなど、--omit=optional で入れた場合など)では、Denoを自分で入れて DENO_PATH にパスを指定します。
Denoが無い、または古いと、サーバー自体は起動し search_docs も動きますが、execute だけが失敗します。「ドキュメント検索はできるのにアセットが取れない」という症状なら、まず deno --version を確かめてください。MCPクライアントはシェルの PATH を引き継がずに起動することがあるため、DENO_PATH は絶対パスで指定します。
つながったか確かめる
動作確認は、読み取りの依頼で行います。ローカル版のドキュメントは、次の依頼を勧めています。
直近に作成したMuxのビデオアセットの詳細を教えてほしい(Muxのツールを使って)
詳細が返れば、MuxのAPIまで届いています。返ってこないときは、切り分けの順番があります。
/mcpでmuxが接続済みか見る(未接続なら認証をやり直す)- トークン方式なら、IDとシークレットに余分な空白が無いか、権限が足りているかを見る
- ローカル版なら、
deno --versionとDENO_PATHを見る - Claude Desktopなら、JSONの文法とアプリの完全な再起動を見る
使いどころと向かない場面
Mux MCPは、ダッシュボードを開いて数クリックで終わる確認や、SDKの呼び出しを調べながら書く作業に向きます。たとえば再生エラーの多い動画を調べ、その動画のアセットの状態を見て、字幕トラックを足す、といった一連の作業です。これらは1つのコードにまとまるため、会話の往復が少なくて済みます。
向かないのは、本番環境の書き込みを無人で任せる運用です。削除が特別扱いされない以上、エージェントが誤ったアセットIDを選んだときの歯止めは、権限しかありません。本番の環境には読み取り専用のトークンを渡し、書き込みは検証環境で試してから、手で本番に反映する形が堅実です。
同じように、会話から外部サービスの管理画面相当の操作を行う記事には、JamfのMCPサーバーでMac管理を行う手順や、RenderでWebサービスとDBを管理する手順があります。権限を最小にしてから書き込み系を開ける考え方は、どちらにも共通します。動画を生成する側のAPIをアプリへ組み込む話は、Runway Devプラグインの記事が扱っています。
まとめ
Mux MCPは、search_docs と execute の2ツールでMuxのSDK全体に届きます。OAuthで環境を選んで使い始められる一方、削除も含めた権限はトークンと環境で決まります。まず検証環境で読み取りの依頼から始め、書き込みが必要になった時点で、権限を段階的に開けてください。