← Discover MCPs and Agents
y
MCPAI & MLGitHub

ymm4MCP

ゆっくりムービーメーカー4のMCPです。将来的にはゆっくり動画を全自動で作れるようにしたいです。

Links

README

From the repo.

YMM4 MCP プラグイン

ClaudeからMCP経由でゆっくりMovieMaker4(YMM4)を操作できるようにするプラグインです。 映像を見ながら・音声を聴きながら、AIが自動でゆっくり実況・解説・茶番・ストーリー動画を生成します。

[Claude] ←MCP(stdio)→ [Python MCPサーバー] ←HTTP(8765)→ [YMM4 C#プラグイン] ←内部API→ [YMM4本体]

📁 ファイル構成

ymm4プラグイン/
├── YMM4McpPlugin/              # YMM4に読み込まれるC#プラグイン
│   ├── YMM4McpPlugin.csproj
│   ├── McpToolPlugin.cs        # IToolPlugin エントリーポイント
│   ├── McpHttpServer.cs        # HTTPサーバー (port 8765)
│   ├── McpJobs.cs              # ジョブ状態・cancel/resume
│   ├── McpExport.cs            # 完成動画書き出し・プロジェクトopen/save-as
│   ├── McpEdits.cs             # EditPlan状態・idempotencyバインディング
│   ├── McpKeyframes.cs         # Animationキーフレーム
│   ├── McpEditing.cs           # 安定ID・revision・素材追加
│   ├── McpViewModel.cs         # ViewModel (起動/停止UI)
│   ├── McpView.xaml            # コントロールパネルUI
│   ├── McpView.xaml.cs
│   └── BoolToBrushConverter.cs
├── mcp-server/                 # PythonのMCPサーバー
│   ├── server.py               # メインMCPサーバー
│   ├── requirements.txt
│   └── skills/                 # AIスキル集
│       ├── ymm4-jikkyou/       # ゆっくり実況スキル
│       │   └── SKILL.md
│       ├── ymm4-kaisetsu/      # ゆっくり解説スキル
│       │   └── SKILL.md
│       ├── ymm4-chaban/        # ゆっくり茶番スキル
│       │   └── SKILL.md
│       └── ymm4-story/         # ゆっくりストーリースキル
│           └── SKILL.md
├── claude_desktop_config_example.json
└── README.md

🚀 セットアップ手順

1. 環境変数の設定

[Environment]::SetEnvironmentVariable("YMM4_PATH", "C:\path\to\YukkuriMovieMaker4", "User")

2. YMM4プラグインのビルド

cd YMM4McpPlugin
dotnet build -c Release -p:DeployToYMM4=true
# → %YMM4_PATH%\user\plugin\YMM4McpPlugin\YMM4McpPlugin.dll にコピー

デバッグ時の手動デプロイ:

Stop-Process -Name "YukkuriMovieMaker" -Force
Copy-Item "bin\Debug\...\YMM4McpPlugin.dll" "$env:YMM4_PATH\user\plugin\YMM4McpPlugin\" -Force
Start-Process "$env:YMM4_PATH\YukkuriMovieMaker.exe"

3. PythonのMCPサーバーのセットアップ

cd mcp-server
pip install -r requirements.txt

4. Claude Desktopの設定

%APPDATA%\Claude\claude_desktop_config.json に追加:

{
  "mcpServers": {
    "ymm4": {
      "command": "python",
      "args": ["C:/path/to/ymm4MCP/mcp-server/server.py"]
    }
  }
}

5. YMM4でサーバーを起動

  1. YMM4を起動
  2. ツールメニュー → 「MCP連携サーバー」を開く
  3. 自動起動が無効なら 「▶ 起動」 ボタンをクリック
  4. MCPサーバー起動: http://127.0.0.1:8765/ が表示されれば完了

ポートと自動起動はツール画面で変更できます。Python側はプラグインが生成する接続情報を自動で読み取ります。


🌐 APIエンドポイント一覧

プロジェクト・アイテム系

エンドポイント説明
GET /api/statusサーバー生存確認
GET /api/projectプロジェクト情報(FPS・解像度等)
GET /api/itemsタイムラインの全アイテム取得
POST /api/project/saveプロジェクト保存
POST /api/project/open.ymmp をパス指定で開く
POST /api/project/save-as別名保存(overwriteで上書き)
POST /api/project/export完成動画書き出しをジョブとして投入。すぐ job_id を返す
GET /api/jobs最近のジョブ一覧
GET /api/jobs/{id}進捗・phase・検証結果
POST /api/jobs/{id}/cancelキャンセル要求
POST /api/jobs/{id}/resume失敗/中断ジョブを再投入
GET /api/edits/state現在のタイムラインをEditPlan構造(1シーン)で取得。適用済みバインディング含む
GET /api/edits/bindings保存済み idempotency_key → item_id 対応
POST /api/edits/bindingsapply後の plan_id と item_id の対応を保存
POST /api/timeline/durationタイムライン長を設定

セリフ・アイテム操作系

エンドポイント説明
POST /api/items/voiceVoiceItemを1件追加し、実際の長さ・item_idrevisionを返す
MCP add_script複数セリフを一括追加(HTTPの独立エンドポイントではありません)
POST /api/items/propitem_id(推奨)またはframe+layerでプロパティを変更。expected_revision対応
GET /api/items/keyframesAnimationプロパティのキーフレーム一覧。item_idまたはframe+layer、任意でprop
POST /api/items/keyframeキーフレームの set / remove / clear。item_id+expected_revision対応
POST /api/items/deleteitem_id(推奨)またはframe+layer/layersで削除。expected_revision対応

映像確認系

エンドポイント説明
GET /api/preview/capture現在フレームをPNG取得
POST /api/preview/seek指定フレームへシーク+PNG取得
GET /api/preview/position現在の再生位置取得
POST /api/preview/export-clip★区間を連番PNG+音声WAVで書き出す(Gemini解析用)
GET /api/project/fps★プロジェクトのFPS・解像度を取得(時刻→フレーム変換用)
POST /api/playback/play再生開始
POST /api/playback/stop再生停止

タイムライン高度操作・状態取得系 ★NEW

エンドポイント説明
GET /api/selection現在UIで選択中のアイテム(座標・レイヤー・フレーム・長さ)+再生位置を取得
POST /api/items/selectitem_id(推奨)またはframe+layer指定でアイテムを選択(clear=trueで全解除)
POST /api/timeline/resolve-overlapsレイヤー単位で重なりを解消(gapで最小すき間指定)
POST /api/timeline/shiftfromFrame以降のアイテムをdeltaフレーム一括シフト
GET /api/items/effects指定アイテムの全エフェクトとパラメータ現在値を取得
GET /api/commands利用可能なコマンド一覧と実行可否(読み取り専用。高度APIを有効にしなくても利用可)

重なり防止の核心: POST /api/items/voice(およびadd_script)は、AddVoiceItemAsync完了後に タイムラインを走査して実際の音声長(length/フレーム数)とendFrameを取得して返すようになりました。 add_scriptはこの実長を使って次のセリフ開始位置を決めるため、文字数推定のズレによる重なりが根絶されます。

安定したアイテム参照と競合防止

GET /api/items と各追加APIは item_idrevisionidentity_persistent を返します。 /api/items/prop/api/items/delete/api/items/keyframe では item_id を指定するとframe/layerより優先され、 さらに同じリクエストで expected_revision を渡すと、取得後に別操作で変更されたアイテムを誤って上書きしません。 expected_revision は対象を曖昧にしないため item_id と必ず組み合わせてください。 不一致時は REVISION_CONFLICT となるため、最新のitemsを取得してから操作を組み直してください。

{
  "item_id": "native:...",
  "expected_revision": "現在のrevision",
  "prop": "Length",
  "value": "120"
}

YMM4本体がネイティブ識別子を公開するアイテムは再起動後も同じIDになります。 ネイティブ識別子がない型は実行中のみ安定する runtime: IDとなり、identity_persistentfalse になります。 そのIDは再起動をまたいで保存せず、再接続後に取り直してください。

ジョブと完成動画の書き出し

長い処理は1リクエストで待たず、ジョブIDを返して進捗を取りにいきます。MCPを切断してもYMM4側のジョブは続きます。YMM4プロセス自体が終了すると interrupted になり、resume で再投入できます(途中フレームからの再開ではありません)。

POST /api/project/export
{
  "path": "C:/Videos/final.mp4",
  "format": "mp4",
  "overwrite": false,
  "timeout_seconds": 1800,
  "idempotency_key": "episode-12-render"
}

戻り値の job_idGET /api/jobs/{id} でポーリングします。完了時はファイルの存在・サイズ・MP4なら ftyp / WAVなら RIFF を検証して result.verified=true を返します。

同じ idempotency_key の再送は、実行中または成功済みのジョブをそのまま返します。既存ファイルを消したくない場合は overwrite を省略してください。

本体の出力APIはバージョン差があるため実行時に探索します。パス付きメソッドが無い場合は EXPORT_METHOD_UNAVAILABLE または EXPORT_DIALOG_REQUIRED になり、ダイアログ操作は自動化しません。

MCPからは次のように呼びます。

action="control", sub_action="export", path="C:/Videos/final.mp4"
action="get_info", sub_action="job", job_id="job_..."
action="control", sub_action="cancel_job", job_id="job_..."
action="control", sub_action="open", path="C:/proj/a.ymmp"
action="control", sub_action="save_as", path="C:/proj/b.ymmp", overwrite=True

宣言的EditPlan(dry-run / 差分適用 / 冪等)

LLMが数百回の低レベルAPIを直接組み立てる代わりに、完成状態を渡して差分だけ適用します。同じ idempotency_key の再送は、計画が変わっておらず対象アイテムが残っていれば二重追加しません。途中失敗はロールバックせず、reconcile_edit が不足分だけ再実行します。既存の計画外アイテムは削除しません。

plan = {
  "project": {"fps": 30},
  "scenes": [
    {"id": "intro", "items": [
      {"id": "bg-1", "type": "video", "source": "C:/Videos/play.mp4", "layer": 0, "frame": 0},
      {"id": "line-1", "type": "dialogue", "character": "ゆっくり霊夢", "text": "こんにちは", "layer": 7},
      {"id": "cap-1", "type": "subtitle", "text": "こんにちは", "layer": 9, "length": 90},
    ]}
  ]
}
action="plan_edit", plan=plan, idempotency_key="episode-1"   # 変更なし。差分と警告だけ
action="apply_edit", plan=plan, idempotency_key="episode-1"  # 不足アイテムだけ追加
action="reconcile_edit", plan=plan, idempotency_key="episode-1"
action="get_info", sub_action="edit_state"

対応タイプ: video / audio / bgm / se / image / text / subtitle / dialogue / voice / tachie / face。 シーン単位のtransactionや映像QAはこのスライスの対象外です。

キーフレーム

立ち絵や字幕の X / Y / Zoom / Opacity / Volume などを、アイテム開始からの相対フレーム at で時間変化させます。

{
  "item_id": "native:...",
  "expected_revision": "現在のrevision",
  "prop": "X",
  "action": "set",
  "at": 0,
  "value": -400
}

MCPからは edit_item / keyframekeyframe_action=set|remove|clear)と get_info / keyframes で呼びます。 YMM4内部の Animation API をリフレクションで叩くため、対象バージョンでメソッドが無い場合は KEYFRAME_METHOD_UNAVAILABLE になります。そのときは inspect で署名を確認してください。

全機能アクセス用 汎用API ★NEW

個別エンドポイントで未対応のYMM4内部機能に、リフレクション経由で直接アクセスできます。

エンドポイント説明
POST /api/command任意のICommandを実行(name,target,param)。UndoCommand等をAPI経由でトリガー
POST /api/reflect/get任意オブジェクトの任意プロパティ/フィールドを取得(target,path
POST /api/reflect/set任意プロパティ/フィールドに値を設定(ReactivePropertyの.Valueも対応)
POST /api/reflect/invoke任意メソッドを引数付き呼び出し(戻り値がTaskなら自動await)
GET /api/reflect/inspectオブジェクトの型・プロパティ・メソッド・コマンド一覧(機能の発見用)

target: Main(MainViewModel) / ActiveTimeline / Player / Project path: Items[0].Item.Length のようにドット・インデックスで深掘り可(ReactivePropertyは自動展開)

音声・映像同時取得系

エンドポイント説明
POST /api/preview/record指定秒数の音声をWAV録音
POST /api/preview/watch映像キャプチャ+音声録音を同時実行 ★

🛠️ MCPツール仕様

ymm4_interact(操作系)

actionsub_action説明
get_infostatusサーバー状態確認
get_infoprojectプロジェクト情報取得
get_infoitemsタイムライン全アイテム取得
get_infoeffects_listエフェクト一覧
controlplay再生
controlstop停止
controlsave保存
controlopen / save_asプロジェクトをパス指定で開く / 別名保存
controlexport完成動画書き出しをジョブ投入。path 必須
get_infojobs / jobジョブ一覧 / job_id の進捗
get_infoedit_state現在のタイムラインをEditPlan構造で取得
controlcancel_job / resume_jobジョブ中止 / 失敗・中断の再投入
plan_edit——完成状態のEditPlanを検証し、差分と警告だけ返す(編集なし)
apply_edit——差分だけ適用。同じ idempotency_key は二重追加しない
reconcile_edit——中断後に不足分だけ再実行
add_itemvoiceセリフ1件追加(実音声長を返す)
add_script——複数セリフ一括追加(実音声長で重なり自動回避
edit_itempropertyitem_id(推奨)またはframe+layerで変更。expected_revision対応
edit_itemkeyframeAnimationキーフレームの set/remove/clear。atは相対フレーム
get_infokeyframes指定アイテムのキーフレーム一覧
edit_itemdeleteitem_id(推奨)または位置/レイヤーで削除。expected_revision対応
edit_itemmoveファイル名指定でアイテムを移動
edit_itemselectitem_id(推奨)またはframe+layerで選択(clearで全解除)
edit_itemresolve_overlaps重なり解消(gap指定可)
edit_itemshiftfrom_frame以降をdeltaフレーム一括シフト
get_infoselection選択中アイテムの詳細取得
get_infocommands利用可能コマンド一覧
get_infoeffects指定アイテムのエフェクト現在値取得
controlundo / redo元に戻す / やり直し
controlsplit / align再生位置で分割 / 整列

add_scriptのパラメータ:

action="add_script",
start_frame=0,       # 開始フレーム
fps=30,              # フレームレート
chars_per_sec=5,     # 話速(実況:5 / 解説:4 / 茶番:6)
lines=[
    {"layer": 7, "character": "ゆっくり霊夢",   "text": "セリフ内容"},
    {"layer": 8, "character": "ゆっくり魔理沙", "text": "セリフ内容"},
]
# 戻り値: total_frames(次のシーンのstart_frame目安)

構造化タイムラインQA:

action="validate" はタイムラインを変更せず、同一レイヤー内の重複・内部の空白・プロジェクト尺超過・期待アイテムの有無を検査します。 期待値には item_idrevision を指定できるため、移動後のアイテムや取得後に変更されたアイテムも正確に照合できます。

action="validate",
duration=1800,
include_gaps=False,  # 空白を意図したレイヤーでは警告を省略
expected=[
    {"item_id": "native:...", "revision": "..."},
]

結果は passed、0〜100の score、エラー・警告件数の summary、および issues を返します。 各Issueには可能な範囲で frame_rangeitem_idssuggested_fix が含まれます。problems は既存クライアント互換のための issues の別名です。 先頭フレームより前の空白は警告せず、アイテム同士の内部空白だけを GAP として報告します。 映像の見切れや音量などはこの検査の対象外なので、preview / watch と組み合わせて確認してください。


ymm4_preview(映像・音声確認系)

action説明
capture現在フレームをPNG取得
seek_capture指定フレームへ移動してPNG取得
position現在の再生位置取得
record音声のみ録音(WAV保存)
watch映像キャプチャ+音声録音を同時実行 ★

watchのパラメータ:

action="watch",
frame=0,                   # 開始フレーム
duration_ms=5000,          # 録音時間(推奨: 最大8000ms)
capture_interval_ms=2000   # 画像取得間隔(推奨: 2000ms以上)
# → 音声: watch_result.wav に保存
# → 画像: PNGとしてレスポンスに含まれる

HTTPの応答待ち時間:

  • watch / record は、実効録音時間(秒)+ 15秒を確保します。8秒録音なら23秒、30秒録音なら45秒です。
  • 録音時間はプラグイン側で watch: 1000〜30000ms、record: 500〜30000ms に制限されます。待ち時間もこの範囲に合わせます。
  • seek_capture は描画待ちを考慮して15秒、通常の情報取得・操作は10秒、クリップ書き出しは600秒です。
  • 接続待ち時間は10秒のままです。接続失敗時はプラグイン起動の案内、処理待ちのタイムアウト時は時間超過の案内を返します。
  • タイムアウト後もYMM4側の処理が続く可能性があるため、自動再試行はしません。処理完了・状態を確認してから次の操作を行ってください。
  • HTTP接続はMCPサーバー内で再利用し、終了時に解放します。

開発者向け回帰テスト(YMM4不要):

リポジトリのルートで実行します。MCP SDKは既存のハンドラAPIに対応する1系を使用します(requirements.txt で2系を除外)。

python -m pip install -r mcp-server/requirements.txt
python -m unittest discover -s mcp-server -p 'test_*.py' -v

test_jobs.py は書き出しパス検証・成果物ヘッダ検査・ジョブdispatchを、YMM4なしで確認します。test_editplan.py はEditPlanの検証・差分・冪等再送・部分失敗停止を確認します。HTTP通信をモックし、待ち時間、エラー分類、接続再利用・終了処理を確認します。実際の録音・画像保存やYMM4の起動は行いません。


ymm4_advanced(全機能アクセス系)★NEW

個別ツールで未対応のYMM4内部機能に、リフレクション経由で直接アクセスする上級ツール。 YMM4のあらゆる機能をMCPから操作可能にします。

action説明
inspect対象オブジェクトのプロパティ・メソッド・コマンド一覧を取得(まず構造を調べる)
get任意プロパティ/フィールドの現在値を取得
set任意プロパティ/フィールドに値を設定
invoke任意メソッドを引数付きで呼び出す(Taskは自動await)
command任意のICommandを実行(UIメニュー限定機能を直接トリガー)
list_commands利用可能な全コマンドと実行可否を一覧

使用例:

# 1. まず構造を調べる
action="inspect", target="ActiveTimeline"

# 2. 値を取得(深掘りパス対応)
action="get", target="ActiveTimeline", path="Items[0].Item.Length"

# 3. 値を設定
action="set", target="Project", path="Name", value="新プロジェクト名"

# 4. メソッド呼び出し
action="invoke", target="ActiveTimeline", method="SelectAll", args=[]

# 5. コマンド実行(元に戻す)
action="command", target="Main", name="UndoCommand"

# 6. どんなコマンドが使えるか発見
action="list_commands"

設計思想: SplitItemCommand/AlignItemsCommand 等の正確なコマンド名はYMM4バージョンで 異なる場合があります。list_commands/inspectで実際の名前を発見してからcommandで実行する ワークフローにより、バージョン差異を吸収できます。


ymm4_analyze_video(Gemini動画解析系)★NEW

動画を時系列で精密に解析し、「いつ・何が起きたか」(シーン変化/キャラ登場/効果音/テロップ/ 動き等)をタイムスタンプ + YMM4フレーム番号付きで検出します。 プレビュー画像の単発取得では難しかった「イベント発生フレームの特定」と「音声・映像の同期」を、 Gemini のネイティブ動画理解で実現します。

仕組み(役割分担)

[YMM4プレビュー or 元動画]
   ↓ C#: 区間を連番PNG+音声WAVに書き出す / もしくは動画ファイルをそのまま渡す
[Gemini API] 映像+音声を時系列解析 → タイムスタンプ付きイベントJSON
   ↓ Python: time_sec を FPS でフレーム番号に変換
[Claude] イベントに合わせてセリフ生成・add_scriptで配置

全フレームをClaudeに投げるのではなく、重い解析はGeminiに集約し、Claudeは構造化済みの イベントリストを受け取って意味づけ・台本化に専念します。

2つのモード

source解析対象主なパラメータ
previewYMM4プレビューの指定フレーム区間(配置済み素材)start_frame / end_frame / step_frames / record_audio
file取り込み前の元動画ファイル(mp4等)video_path / base_frame / fps

検出イベントのカスタマイズ

event_instruction で検出したいイベントを自由に指定できます(未指定なら全イベント検出)。

# 全部検出(デフォルト)
action source="preview", start_frame=0, end_frame=600

# 効果音とキャラ登場だけに絞る
event_instruction="効果音が鳴った瞬間と、新しいキャラが画面に出た瞬間だけ検出して"

# 元動画ファイルを解析し、フレーム300以降に対応づける
source="file", video_path="C:/movie/boss.mp4", base_frame=300

戻り値(例)

{
  "success": true,
  "summary": "ボス戦の動画。中盤で敵が出現し、終盤に撃破される。",
  "events": [
    {
      "time_sec": 12.3, "end_sec": 14.0,
      "frame": 369, "end_frame": 420,          // ← FPSから自動変換されたYMM4フレーム
      "type": "character", "label": "ボス出現",
      "description": "画面中央に大型の敵が出現", "audio": "重低音のSE",
      "importance": 5
    }
  ],
  "fps_used": 30, "base_frame": 0
}

frame がそのまま add_scriptstart_frame 等に使えるため、映像イベントに同期したセリフ配置が可能です。

セットアップ

  1. pip install google-genairequirements.txt に追加済み)
  2. Google AI Studio でAPIキーを発行
  3. claude_desktop_config.jsonenvGEMINI_API_KEY を設定(claude_desktop_config_example.json 参照)

モデルの指定について: 既定のモデルは gemini-2.5-flash です。高精度が必要な場合は、ツール呼び出し時に model="gemini-2.5-pro" を指定できます。 また、mcp-server フォルダ内に config.json を作成し、以下のように記述することでデフォルトのモデルを変更することも可能です。

{
  "default_model": "gemini-2.5-pro"
}

APIキー未設定/SDK未導入でもサーバーは起動し、解析ツール呼び出し時に案内メッセージを返します。


🤖 AIスキル一覧

mcp-server/skills/ 以下に動画ジャンル別のスキルがあります。 Claudeはユーザーの依頼内容に応じて自動的に対応するスキルを参照します。

キャラクター役割

キャラ実況解説茶番ストーリー
霊夢 (L7)ボケ・マイペース生徒・質問役ボケ・天然主人公・感情表現
魔理沙 (L8)ツッコミ・解説解説役・先生ツッコミ・進行相棒・行動派

スキル詳細

スキルファイル話速特徴
ゆっくり実況ymm4-jikkyou/SKILL.md5文字/秒watchで映像確認しながらセリフ生成。ゲームイベントに合わせたテンプレあり
ゆっくり解説ymm4-kaisetsu/SKILL.md4文字/秒魔理沙が解説・霊夢が質問。ポイント3〜5個の構成テンプレあり
ゆっくり茶番ymm4-chaban/SKILL.md6文字/秒霊夢(ボケ)と魔理沙(ツッコミ)。ツッコミは3〜5f後に即返す
ゆっくりストーリーymm4-story/SKILL.md4〜6文字/秒ナレーター(L6)追加。感動/ホラー/ファンタジー/ミステリー対応

💬 Claudeへの指示例

実況動画

マインクラフトのボス戦動画を見ながらゆっくり実況を作って

解説動画

スケルトンキングの攻略法をゆっくり解説動画にして
魔理沙に解説させて、霊夢に質問させて

茶番動画

霊夢と魔理沙で買い物に行く茶番コントを作って

ストーリー動画

霊夢と魔理沙が謎の洞窟を探索する短編ミステリーを作って

タイムライン確認・編集

今のタイムラインを確認して、セリフが被っているところを修正して
100フレームごとに映像と音声を確認して

📋 標準制作ワークフロー

① watchで映像を見る+音を聴いてシーンを把握
        ↓
② シーン表と台本を設計
        ↓
③ add_scriptでシーンごとに一括配置
        ↓
④ 100fごとにseek_captureで映像・セリフを確認
        ↓
⑤ ズレ・被りをedit_itemで修正
        ↓
⑥ watchで最終確認(音声RMS・映像同期)
        ↓
⑦ 完成!プロジェクト保存

⚠️ 注意事項・既知の制限

項目内容
YMM4バージョンv4.35以降(.NET 9 / .NET 10対応)が必要
watchの上限画像+音声データが大きいため最大8秒程度推奨
初回キャプチャシーク直後の1枚目は黒になることがある(描画待ち)。正常動作
ポート競合8765が競合する場合は McpHttpServer.csPort を変更
内部APIIMainViewModel の実装はYMM4バージョンにより異なる場合あり

Collected info

  • 24 stars
  • 5 forks
  • Language: C#
  • Source updated: 9/23/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.