mcpField
M
mediafleet

mediafleet

ローカル
github.com/CloudCorpRecordsゲーム・エンタメ02 週間前に更新

mediafleet について

mediafleetは、設定したセルフホスト型メディアサービスを操作するMCPサーバー兼コマンドラインツールです。単一のJavaScriptサンドボックスツールから複数のサービスを呼び出し、結果をまとめられます。

主な機能

  1. 01単一MCPツールでJavaScriptを実行
  2. 02設定済みメディアサービスを横断して呼び出し
  3. 03GET、POST、PUT、DELETEリクエスト
  4. 04プロセス内でコードスニペットを保存
  5. 05生成物とログを実行結果に含める

活用シーン

  1. 01SonarrとPlexの検索結果をまとめる
  2. 02設定済みサービスの状態を確認
  3. 03メディアのワークフローを保存して再実行

MCP 対応

設定済みメディアサービスを呼び出せる非同期JavaScript関数を、サンドボックスで実行する`yarr`ツールを提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-mediafleet": {
"command": "npx",
"args": [
"-y",
"@reneturcios/mediafleet"
]
}
}
}
起動コマンドnpx -y @reneturcios/mediafleet

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/mediafleet0.1.0
ocighcr.io/cloudcorprecords/mediafleet:0.1.0

ツール

1

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

パラメーター型必須説明
codestringはいサンドボックスで実行する JavaScript の非同期アロー関数。

詳細

mediafleet

mediafleet は、セルフホスト可能なメディアスタック全体を単一の MCP ツールの背後にまとめます。サービスごと、操作ごとにツールを用意する代わりに、サーバーは 1 つの Code Mode ツール yarr を公開します。JavaScript の非同期アロー 関数を渡すと、設定したメディアサービス(Sonarr、Radarr、Prowlarr、Tautulli、 Overseerr、Bazarr、SABnzbd、qBittorrent、Plex、Jellyfin)を呼び出せる関数として グローバルに公開したサンドボックス内で実行します。1 回の 呼び出しで 3 つのサービスにクエリを実行し、回答を組み合わせて、1 つの 結果として返せます。

このパッケージは、ドキュメントに記載されたインターフェースをクリーンルーム方式で再構築したものです。 以下で説明する 1 つのツール、サンドボックスのグローバル変数、アクションのディスパッチ、 スニペットストアなど、ドキュメントに記載されたコア機能をすべて実装しています。

設定

サービスは環境変数で有効にします。

変数意味
YARR_SERVICES設定するサービスをカンマ区切りで指定します。未設定の場合、URL 変数が設定されているサービスはすべて設定済みとみなされます。
YARR_<SERVICE>_URLベース URL。例:YARR_SONARR_URL=http://localhost:8989。
YARR_<SERVICE>_API_KEYAPI キー。X-Api-Key ヘッダーで送信されます。
YARR_PLEX_TOKENPlex の認証情報。X-Plex-Token ヘッダーで送信されます。

設定済みのサービスのみがサンドボックスに表示されます。設定されていない名前は サンドボックス内に定義されず、api.<service> も使用できません。

サンドボックス

code 引数には非同期アロー関数を指定します。引数なしで 呼び出され(スニペットの実行では入力が渡されます。詳細は後述)、その戻り値は プレーンな JSON 形式のデータに正規化され、実行中に書き込まれたアーティファクトや 取得したコンソール出力とともに、ツールの結果になります。

コードで使用できるグローバル変数:

  • サービスごとの呼び出し可能関数 — sonarr、radarr、… 呼び出すと GET を実行します(await sonarr("/api/v3/series"))。.get、.post、 .put、.delete(path, body) も付属します。また、.status() は、 サービス標準のステータスエンドポイントを確認し、{service, ok, status} または {service, ok: false, error} を報告します。
  • api.<service>.get/post/put/delete(path, body) — 設定済みの各サービスで使用できる 明示的な HTTP インターフェースです。
  • callTool(action, params) — ドキュメントに記載されたアクションをディスパッチします。汎用アクション: service_status({service?})、api_get、 api_post、api_put、api_delete(各 {service, path, body?})、 help。Codemode アクション:codemode({code, input?} でネストしたコードを 実行。それ以外の場合は概要を返す)、op({path} で説明を取得、 {name, input?} でスニペットを実行、{code, input?} でコードを実行)、 snippet_list、snippet_save({name, code})、snippet_run ({name, input?})、snippet_delete({name})。
  • codemode.search(query) — サービス、API パス、アクション、ヘルパーのカタログを 部分一致で検索します。
  • codemode.describe(path) — 指定したパスのカタログ項目を返します。例: codemode.describe("api.sonarr.get")。
  • codemode.snippets() — ストア内のスニペットを一覧表示します。
  • codemode.run(name, input) — 保存済みスニペットを実行します。関数には 引数として input が渡されます。
  • writeArtifact(name, content) — 名前付きのテキストアーティファクトを保存します。 実行中に書き込まれたものはすべて、その実行結果とともに返されます。
  • console.log/info/warn/error — 出力は取得され、実行の logs として返されます。 サーバーの標準出力には書き込まれません。

スニペットはプロセスごとのメモリ内ストアに保存されます。サーバープロセスの実行中は 呼び出しをまたいで保持され、プロセスの終了時に消去されます。

注意すべき制限が 2 つあります。サンドボックスは node:vm を使用しており、グローバル変数を 分離します(内部では process や require を使用できません)が、堅牢な セキュリティ境界ではありません。また、破壊的な HTTP メソッドは特別に制限されていません。 コードで DELETE を実行すると、mediafleet は記述どおりに実行します。

インストール

npx @reneturcios/mediafleet yarr '{"code":"async () => { return await callTool(\"help\"); }"}'

または、コンテナイメージを実行します。

docker run -i ghcr.io/cloudcorprecords/mediafleet

コンテナはデフォルトで MCP サーバーとして起動します。CLI として使用するには、 CLI 引数を渡してください。サーバーを実行するプロセスに YARR_* 環境変数を渡すことを 忘れないでください。

CLI

mediafleet yarr '{"code":"async () => { return await api.sonarr.get(\"/api/v3/system/status\"); }"}'
mediafleet yarr '{"code":"async () => { const s = await callTool(\"service_status\"); return s; }"}'
mediafleet --version
mediafleet mcp

終了コード:成功時は 0、実行エラーまたは検証エラー時は 1、 使用方法のエラー時は 2 です。

MCP クライアントの設定

{
  "mcpServers": {
    "mediafleet": {
      "command": "npx",
      "args": ["-y", "@reneturcios/mediafleet", "mcp"],
      "env": {
        "YARR_SERVICES": "sonarr,radarr,plex",
        "YARR_SONARR_URL": "http://localhost:8989",
        "YARR_SONARR_API_KEY": "…",
        "YARR_RADARR_URL": "http://localhost:7878",
        "YARR_RADARR_API_KEY": "…",
        "YARR_PLEX_URL": "http://localhost:32400",
        "YARR_PLEX_TOKEN": "…"
      }
    }
  }
}

MCP ツール

ツール引数機能
yarrcode: string(必須)Code Mode サンドボックスで非同期のアロー関数を実行し、{result, artifacts, logs} を返します。

開発

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts — fake executor and fake fetch only, no network
npm run dev     # tsx src/cli.ts

すべてのサービス通信は、単一の差し替え可能な実行関数を経由します。また、デフォルトの実行関数による HTTP 通信は差し替え可能な fetch を経由します。これにより、実際のサービスに接続せずに、URL とヘッダーの構築も含め、テストスイートですべての機能をテストできます。

ライセンス

MIT — LICENSE を参照してください。Copyright (c) 2026 Rene Turcios。

コメント

MCP は初めてですか?

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

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