mcpField
O
Oh My Cassette

Oh My Cassette

ローカル
github.comメディア・デザイン1302 日前に更新

Oh My Cassette について

Oh My Cassette は、コーディングエージェントと Cassette の動画編集サービスをつなぐローカル MCP ブリッジで、会話を通じて動画を編集するユーザー向けです。編集ツールはサービス側が提供し、ブリッジはローカルメディアの準備・アップロードと書き出しのダウンロードを担います。

主な機能

  1. 01Cassette エージェントとの対話による動画編集
  2. 02ローカルメディアの準備とアップロード
  3. 03書き出しファイルのローカル保存
  4. 04ワークスペース単位のプロジェクト関連付け
  5. 05切断後の再接続と転送再開

活用シーン

  1. 01テキスト指示で動画クリップを読み込み編集
  2. 02編集内容の修正や取り消し
  3. 03完成動画のローカル書き出し
  4. 04会話を通じた Cassette プロジェクトの操作

MCP 対応

ローカルの stdio MCP サーバーとして HTTP 経由で Cassette MCP service に接続し、同サービスの編集ツールをコーディングエージェントに中継します。ローカルメディアのアップロードと書き出しのダウンロードも処理します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cassette-editor-oh-my-cassette": {
"command": "uvx",
"args": [
"oh-my-cassette"
],
"env": {
"CASSETTE_MCP_URL": "<CASSETTE_MCP_URL>",
"CASSETTE_AUTH_TOKEN": "<CASSETTE_AUTH_TOKEN>",
"CASSETTE_FFMPEG": "<CASSETTE_FFMPEG>"
}
}
}
}
起動コマンドuvx oh-my-cassette
設定が必要な環境変数
CASSETTE_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypioh-my-cassette0.6.0

ツール

1

掲載時のツール一覧 · 1 日前に更新

このツールにパラメーターはありません。

詳細

Oh My Cassette

Oh My Cassette

Claude Code、Codex、OpenCode、またはHermesからCassetteエージェントに話しかけて、動画を編集できます。
PyPIで提供されている小さなMCPブリッジです。編集ツールはCassette MCPサービスから提供されるため、プラグインを更新しなくても常に最新の状態を保てます。

PyPI MIT Discord 中文


Claude Codeでの1回のセッション:5本の4K動画と1曲を読み込み、30秒の予告編を依頼して修正し、書き出す

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つだけ残し、気球のすぐ後にラクダを入れてください。

作成された予告編のフレーム:夜明けの気球、ラクダ、エフェソスの2つのショット、ダトチャの海岸、タイトル「TURKEY」と霧に包まれた湖
作成された予告編を見る(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/mcpMCP エンドポイントの明示的な上書き設定です。
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_MB4096 / 16384ファイルごとのサイズ上限です。
CASSETTE_UPLOAD_ANY_TYPEオフツールが受け付ける場合、メディア以外のファイルのアップロードを許可します。
CASSETTE_LOCAL_WAIT_SEC240ローカルでの準備とアップロードを待ってから、preparing を返すまでの時間です。
CASSETTE_FFMPEG / CASSETTE_FFPROBEPATH から取得ローカルメディアの準備に使用する ffmpeg および ffprobe プログラムです。
CASSETTE_TEMP_DIRシステムの一時ディレクトリ各アップロードで、準備済みファイルをアップロードするまで保存する専用ディレクトリ(oh-my-cassette-job-*)を作成する場所です。
CASSETTE_CONNECT_TIMEOUT_SEC10接続時にサービスを待つ時間です。
CASSETTE_MCP_HOST未設定ホストが自身を識別しない場合にサービスへ送信するホスト名です。
OH_MY_CASSETTE_LOGWARNING標準エラー出力に表示するログレベルです。

インストール

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。