Oh My Cassette について
Oh My Cassette は、コーディングエージェントと Cassette の動画編集サービスをつなぐローカル MCP ブリッジで、会話を通じて動画を編集するユーザー向けです。編集ツールはサービス側が提供し、ブリッジはローカルメディアの準備・アップロードと書き出しのダウンロードを担います。
主な機能
- 01Cassette エージェントとの対話による動画編集
- 02ローカルメディアの準備とアップロード
- 03書き出しファイルのローカル保存
- 04ワークスペース単位のプロジェクト関連付け
- 05切断後の再接続と転送再開
活用シーン
- 01テキスト指示で動画クリップを読み込み編集
- 02編集内容の修正や取り消し
- 03完成動画のローカル書き出し
- 04会話を通じた Cassette プロジェクトの操作
MCP 対応
ローカルの stdio MCP サーバーとして HTTP 経由で Cassette MCP service に接続し、同サービスの編集ツールをコーディングエージェントに中継します。ローカルメディアのアップロードと書き出しのダウンロードも処理します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx oh-my-cassetteCASSETTE_MCP_URLOptional explicit target override; normally use the target saved by oh-my-cassette login.CASSETTE_AUTH_TOKENシークレットAdvanced compatibility override. Normally use oh-my-cassette login and the operating-system keyring.CASSETTE_FFMPEGPath to ffmpeg, used to prepare local video before upload (default: from PATH)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
1掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
Oh My Cassette
Claude Code、Codex、OpenCode、またはHermesからCassetteエージェントに話しかけて、動画を編集できます。
PyPIで提供されている小さなMCPブリッジです。編集ツールはCassette MCPサービスから提供されるため、プラグインを更新しなくても常に最新の状態を保てます。
Claude Codeでの1回のセッションを、そのまま入力した内容でお見せします。 5本の4K旅行動画(合計10分半の映像)と1曲を読み込み、4文の指示と1行の修正を一言一句そのままCassetteエージェントに伝えると、30秒の1080p MP4が
cassette-exports/に出力されます。待ち時間は早送りしています。実際には、読み込みに4分半、最初の編集に9分半、修正に3分半、書き出しに1分かかりました。
この5本の動画から、Pamgaea.mp3のビートに合わせたトルコの30秒の予告編を作ってください。カッパドキアで夜明けに気球が明るく浮かび上がる場面から始め、古代遺跡から海へと移動し、各地名を初めて登場する場面で表示して、霧に包まれた湖にタイトル「TURKEY」を表示して終えてください。
遺跡のパートが長すぎます。エフェソスのベストショットを2つだけ残し、気球のすぐ後にラクダを入れてください。
作成された予告編を見る(MP4、30秒、音声付き)以下をご覧ください。
30秒でインストール
uv(初回起動時にPythonとパッケージを取得します)と、動画の読み込みに使う ffmpegが必要です。
# Claude Code
claude plugin marketplace add Cassette-Editor/oh-my-cassette
claude plugin install oh-my-cassette@cassette-editor
# Codex
codex plugin marketplace add https://github.com/Cassette-Editor/oh-my-cassette.git
codex plugin add oh-my-cassette@cassette-editor
# Hermes
hermes mcp add cassette --command uvx --args oh-my-cassette==0.6.0
OpenCodeやその他のMCPホストについては、以下のインストールをご覧ください。uvx oh-my-cassette==0.6.0 loginを実行し、ブラウザーでメールコードを使ったサインインを完了してください。その後、ツール一覧を更新できない場合はエージェントを再起動して、次のように依頼します。
Cassetteの新しいプロジェクトを開始して、./footage内のクリップを読み込み、冒頭にタイトルを入れた30秒の旅行動画を編集してください。
0.4 からのアップグレード
0.5 は全面的に書き直されています。0.4 のプラグインは独自の編集ランタイム、音楽検索、Hermes ゲートウェイを備えていましたが、0.5 は Cassette MCP サービスへの薄いブリッジであり、エージェントに表示されるツールはサービスのものです。
- 再度サインインしてください。
uvx oh-my-cassette==0.6.0 loginを実行します。0.4 のパスワードとトークンは使用されません。 - ツールが一新されています。 プロジェクト、編集ターン、質問、プラン、取り消し、メディア、分析、エクスポートは、それぞれ独自の説明とともにサービスから提供されます。0.4 のツール名(
cassette_run_job、cassette_ingest_media、cassette_match_bgm、…)はなくなりました。プラグインを再インストールするか、ホスト設定をuvx oh-my-cassette==0.6.0に変更してください。 - プロジェクトは Cassette アカウントに保存されます。 ウェブや Cassette for Mac で開くものと同じプロジェクトで、各回答に含まれるエディターリンクから、作業中のプロジェクトを開けます。0.4 のセッションは引き継がれません。
- Hermes は通常の MCP ホストになりました。0.4 のゲートウェイプラグインを削除してください。
プロジェクトと保持期間
ブリッジが開始したプロジェクトはクラウドプロジェクトです。Cassette は、3 日間操作がないとメディアとともに削除します。使用するたびに削除期限が延長され、各回答には期限(retention_expires_at)が示されます。エクスポートされたファイルはすでにマシン上の cassette-exports/ にあり、そのまま残ります。Cassette for Mac で作成したプロジェクトは保持されます。Mac がオンラインであれば、ブリッジからそのプロジェクトを開いて編集し、エクスポートできます。ただし、メディアはアプリ内でインポートされます。
概要
Oh My Cassette は、コーディングエージェントを Cassette 編集エージェントに接続します。ローカルの stdio MCP サーバーとして Cassette MCP サービス(CASSETTE_MCP_URL)に中継し、サービスはさらに Cassette バックエンドを呼び出します。
Claude Code / Codex / OpenCode / Hermes ──stdio──▶ oh-my-cassette ──HTTP──▶ Cassette MCP service ──▶ Cassette backend
- ツールはサービスのものです。 サービスが一覧表示するもの(プロジェクト、編集ターン、質問、取り消し、エクスポート)が、サービス独自の説明やワークフローの指示とともにエージェントに表示されます。Cassette が変わればツールも変わるため、プラグインをリリースする必要はありません。
- ブリッジが追加するのは、マシン上で処理する必要があるものだけです。 呼び出しで指定されたローカルファイルは、まず準備してアップロードされます(ワークスペース内のメディアファイルのみ)。動画は ffmpeg で、サービスが指定する形式にトランスコードされます。また、そのままでは取り込めない音声や画像は変換されます。ファイルの準備中に前のファイルをアップロードし、転送は一度に 4 件行います。アップロードが中断されたファイルを再度インポートすると、以前のインポートから再開します。エクスポートされたファイルは
cassette-exports/にダウンロードされます。各呼び出しにはワークスペースの識別情報が含まれるため、サービスはディレクトリごとにプロジェクトを記憶できます。 - 長時間の処理でホストがタイムアウトすることはありません。 各呼び出しは上限時間まで待機します。ローカルでの準備に時間がかかる場合は
preparingを返してバックグラウンドで処理を続け、次回の同じ呼び出しで処理を再開します。 - デプロイ後も動作を継続します。 自動で再接続し、接続が切断された場合やサービスに拒否された場合には、リクエスト名を指定して呼び出しを再送します。中断されたダウンロードを再開し、
retryableフラグ付きのbridge.*エラーを報告します(サービスから指定があった場合はretry_after_secondsも含まれます)。サービスに接続できない場合やトークンが拒否された場合には、理由を示すcassette_bridge_statusツールを 1 つだけ一覧表示します。
プラグインとサービス間のルールは
src/oh_my_cassette/contract.py で定義されています。oh-my-cassette check を実行すると、サービスがルールに準拠しているか確認できます。
要件
- 招待済みの Cassette アカウントと、コントラクト v1 を実装した Cassette MCP サービスが必要です。
uvx oh-my-cassette==0.6.0 check --url <endpoint>で確認してください。サービスに接続できない場合、またはトークンが拒否された場合は、cassette_bridge_statusのみが一覧表示されます。 - uv 0.5 以降が必要です。
uvx oh-my-cassette==0.6.0は Python 3.11 以降を自動的に解決します。 - 動画をインポートするには、ffmpeg(ffprobe を含む)が必要です。
brew install ffmpeg、sudo apt install ffmpeg、またはwinget install ffmpegを実行してください。動画はアップロード前にお使いのマシンでトランスコードされます。zscaleを含むビルドでは、HDR 映像も適切にトーンマッピングされます。
各ツールが受け付ける形式とアップロード前のファイルの準備方法は、サービスで宣言されています(動画、音声、画像の形式が対象です)。
設定
oh-my-cassette login で一度サインインします。プロジェクトで使用する Cassette アカウントを使ってください。ブラウザーでメールに届いたコードを入力し、同意します。一度サインインすると、Web 上で作成したプロジェクトも Cassette for Mac で作成したプロジェクトも含め、アカウント内のすべてのプロジェクトにアクセスできます。メディアが Mac 上にあるプロジェクトは、その Mac 上のアプリで開きます。写真や音声の読み込み、エクスポートにはその Mac がオンラインである必要があり、メディアはその Mac でインポートされます。ログイン、ステータス確認、ログアウトにはオペレーティングシステムのキーリングを使用するため、トークンをコピーする必要はありません。以下の環境変数は任意の上書き設定です。
| 変数 | デフォルト | 説明 |
|---|---|---|
CASSETTE_MCP_URL | 保存済みの接続先。それ以外の場合は https://mcp.trycassette.online/mcp | MCP エンドポイントの明示的な上書き設定です。 |
CASSETTE_AUTH_TOKEN | 未設定 | 上級者向けのベアラートークン上書き設定です。通常は login を使用してください。同じアカウント、スコープ、リソースの確認が適用されます。共有設定には絶対に含めないでください。 |
CASSETTE_WORKSPACE | ホストがサーバーを起動するディレクトリ | 相対パスの基準となる場所、ローカルファイルを取得できる場所、およびサービスがプロジェクトを記憶できるディレクトリです。ホストがディスク全体またはホームフォルダーでサーバーを起動する場合、この設定または CASSETTE_ALLOWED_ROOTS を指定するまで、読み取り可能なファイルはありません。 |
CASSETTE_ALLOWED_ROOTS | 未設定 | ローカルファイルを取得できる追加ディレクトリ(区切り文字は :。Windows では ;)です。 |
CASSETTE_DOWNLOAD_DIR | <workspace>/cassette-exports | エクスポートしたファイルの保存先です。デフォルトではワークスペース内にする必要があります。別の場所を指す cassette-exports シンボリックリンクは拒否されます。 |
CASSETTE_MAX_UPLOAD_MB / CASSETTE_MAX_DOWNLOAD_MB | 4096 / 16384 | ファイルごとのサイズ上限です。 |
CASSETTE_UPLOAD_ANY_TYPE | オフ | ツールが受け付ける場合、メディア以外のファイルのアップロードを許可します。 |
CASSETTE_LOCAL_WAIT_SEC | 240 | ローカルでの準備とアップロードを待ってから、preparing を返すまでの時間です。 |
CASSETTE_FFMPEG / CASSETTE_FFPROBE | PATH から取得 | ローカルメディアの準備に使用する ffmpeg および ffprobe プログラムです。 |
CASSETTE_TEMP_DIR | システムの一時ディレクトリ | 各アップロードで、準備済みファイルをアップロードするまで保存する専用ディレクトリ(oh-my-cassette-job-*)を作成する場所です。 |
CASSETTE_CONNECT_TIMEOUT_SEC | 10 | 接続時にサービスを待つ時間です。 |
CASSETTE_MCP_HOST | 未設定 | ホストが自身を識別しない場合にサービスへ送信するホスト名です。 |
OH_MY_CASSETTE_LOG | WARNING | 標準エラー出力に表示するログレベルです。 |
インストール
Claude Code
プラグイン(推奨):冒頭にある 2 つのコマンドを実行してください。プラグインは oh-my-cassette login で保存した接続先を使用し、ツールのタイムアウトを 10 分に設定して uvx oh-my-cassette==0.6.0 を起動します。
プラグインを使用せずにプロジェクトのスコープで設定する場合は、.mcp.json をプロジェクトにコピーするか、次を実行してください。
claude mcp add --transport stdio cassette -- uvx oh-my-cassette==0.6.0
スキルは skills/cassette-video-edit/SKILL.md にあり、プラグインに同梱されています。
Codex
プラグイン:冒頭にある2つのコマンドを使います(.codex-plugin/plugin.json では、サーバーを tool_timeout_sec: 600 とともにインラインで宣言し、シェルから CASSETTE_* 変数を引き継ぎます)。または、サーバーを直接追加します:
codex mcp add cassette -- uvx oh-my-cassette==0.6.0
OpenCode
opencode.json(プロジェクト内、または ~/.config/opencode/opencode.json)に追加します:
{
"mcp": {
"cassette": {
"type": "local",
"command": ["uvx", "oh-my-cassette==0.6.0"],
"timeout": 600000
}
}
}
次に、OpenCode が読み込めるようにスキルをコピーします:
mkdir -p ~/.config/opencode/skills/cassette-video-edit
curl -fsSL https://raw.githubusercontent.com/Cassette-Editor/oh-my-cassette/v0.6.0/skills/cassette-video-edit/SKILL.md \
-o ~/.config/opencode/skills/cassette-video-edit/SKILL.md
OpenCode は MCP のエリシテーションに対応していませんが、問題ありません。編集エージェントからの質問は通常のツール結果として返され、サービスのツールに回答方法が記載されています。
Hermes
hermes mcp add cassette --command uvx --args oh-my-cassette==0.6.0
mkdir -p ~/.hermes/skills/cassette-video-edit
curl -fsSL https://raw.githubusercontent.com/Cassette-Editor/oh-my-cassette/v0.6.0/skills/cassette-video-edit/SKILL.md \
-o ~/.hermes/skills/cassette-video-edit/SKILL.md
呼び出しの制限付き待機時間に収まるよう、~/.hermes/config.yaml で mcp_servers.cassette.timeout: 600 を設定します。ここでの Hermes は通常の MCP ホストです。0.4 のゲートウェイ/プラグインレイヤーはなくなりました。
その他の MCP ホスト
コマンドに uvx、引数に ["oh-my-cassette==0.6.0"]、トランスポートに stdio、ツールのタイムアウトに10分を設定し、上記の環境変数を指定します。uv がない場合は、pipx run oh-my-cassette==0.6.0 でも動作します。
ターンの流れ
you: Import intro.mp4 and beach.mov, then make a 20-second cut with the title "Kota Kinabalu".
agent: (calls the service's import tool with ["intro.mp4", "beach.mov"])
bridge: transcodes both videos, uploads them, passes the service media references
(calls the service's editing tool with your sentence, verbatim; progress streams while it runs)
"Done. Added a 20 s cut from both clips with the title at the start (v0→v3). Open it: <editor link>"
you: Export it.
agent: (calls the service's export tool)
bridge: downloads the MP4 to cassette-exports/kota-kinabalu.mp4
エディターのリンクはサービスから取得します。ブラウザーで開くと実行状況をリアルタイムで確認でき、手動で引き継ぐこともできます。
サービスを確認する
uvx oh-my-cassette==0.6.0 check --url http://127.0.0.1:8790/mcp --upload \
--arguments '{"project_id": "<a test project>"}'
各チェック(トランスポートとトークン、コントラクト宣言、手順、ツールスキーマ、ローカルファイルと prepare の宣言、さらに --upload を指定した場合は実際のアップロードの往復)について1行ずつ出力し、失敗があれば終了コード1で終了します。--arguments はそのファイルツールに渡すその他の引数です。--json を指定すると、サービスの CI 用に機械可読な出力を生成します。サービスは MCP 2026-07-28 に対応している必要があります。ハンドシェイク時代の initialize にしか応答しないサービスはトランスポートチェックに失敗し、ブリッジは bridge.protocol_unsupported で拒否します。
更新
ホスト設定のバージョン固定(oh-my-cassette==<new version>)を更新するか、プラグインを再インストールします。uvx は次回起動時に新しい wheel を取得します。リリース情報:CHANGELOG.md。
開発
git clone https://github.com/Cassette-Editor/oh-my-cassette && cd oh-my-cassette
uv sync --group dev
uv run pytest -q # reference service on loopback, no network; needs ffmpeg
uv run oh-my-cassette # the bridge itself (stdio)
uv run oh-my-cassette check --url <endpoint> # conformance check
tests/reference_remote.py は、コントラクトの実行可能なリファレンスサービスです。RELEASING.md に PyPI のリリース手順が記載されています。
クレジット
デモ映像は yasin ilcebay によるもので、Wikimedia Commons から提供され、CC BY 3.0 のライセンスで公開されています: Aizanoi Temple of Zeus、 Cappadocia、 Datça、 Ephesus、および Gölcük Lake。ティーザーでは映像をトリミングして並べ替え、地名、タイトル、音楽を追加しています。
音楽は Kevin MacLeod (incompetech.com) の「Pamgaea」です
Creative Commons:表示 4.0 ライセンス
https://creativecommons.org/licenses/by/4.0/
ティーザーでは一部を使用しています。
ライセンス
コードは MIT ライセンスです。Oh My Cassette はクライアントであり、Cassette サービスには独自の利用規約があります。
デモ録画(assets/demo-claude-code.gif)、ティーザーのフレーム(assets/turkey-teaser.jpg)、およびリリースに添付されたティーザー動画には、上記でクレジットした作品が含まれています。これらは MIT ライセンスの対象ではなく、それぞれのライセンス(映像は CC BY 3.0、音楽は CC BY 4.0)のままです。
MCP レジストリ:mcp-name: io.github.Cassette-Editor/oh-my-cassette
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。