38 個のツールでもコンテキストウィンドウを圧迫しない:KwaFlux の MCP サーバーの設計
38 個の MCP ツールをコンテキスト予算に収める KwaFlux の設計。スキーマの自動生成、オフにできるツールグループ、テストでの予算チェック、構造化した結果を解説。
要点
- MCP サーバーが提供するツールは、どれもモデルに説明が渡されます。その説明が、本来ならあなたの依頼に使えるはずのコンテキストを占めます。
- 38 個のツールをすべて読み込むと、KwaFlux のツール一覧は 51,004 バイトで、60,000 バイトの予算に収まります。コアグループだけを読み込めば 7,077 バイトまで減ります。
- ツールグループを使えば、使うものだけを読み込めます。
KWAFLUX_MCP_TOOLSETSを設定すると、選ばなかったグループはモデルに届きません。 - 予算はテストで確認しています。変更によってツール一覧、コアグループ、サーバーの指示文のどれかが予算を超えると、テストが失敗します。
多くのことができる MCP サーバーには、目立たないコストがあります。モデルにツールの存在を知らせるため、すべてのツールの名前、説明、入力スキーマがモデルに送られるのです。ツールが数個なら問題になりません。38 個になると、何も入力しないうちからコンテキストウィンドウのかなりの部分を占めることがあります。
KwaFlux の MCP サーバーは、このコストを前提に設計しました。スキーマは手書きせずに生成し、ツールはオフにできるグループに分け、結果は長い文章ではなく構造化し、サイズにはテストで守らせる予算を設けています。
この記事では、MCP サーバーのコンテキストコストがどこから来るのか、KwaFlux がそれをどう計測して抑えているか、読み込むツールを減らす方法、そして時間のかかる動画ジョブを少ないコストで追うための設計を解説します。
目次
- MCP ツールはコンテキストをどれだけ使う?
- KwaFlux の数値
- テストで守らせる予算
- 使うグループだけを読み込む
- アプリの設定から生成するスキーマ
- 読み直さなくてよい結果
- 長いジョブ:ポーリングではなく進捗とキャンセル
- 複数ステップのワークフローのためのプロンプト
- よくある質問
MCP ツールはコンテキストをどれだけ使う?
MCP ツールのコンテキストコストとは、そのツールの定義の大きさのことです。定義には名前、タイトル、説明、入出力の JSON Schema が含まれ、ホストはセッション中のリクエストのたびにこれをモデルに渡します。
ホストは tools/list リクエストで定義を受け取り、たいていはそれをモデルのコンテキストに含めて、モデルがツールを選べるようにします。MCP の仕様はサーバーに対して、ツールを安定した順序で返すよう求めています。その理由の 1 つが「ツールがモデルのコンテキストに含まれる場合に、LLM のプロンプトキャッシュのヒット率が上がる」ことで、定義がふだんからコンテキストに入っていることがよくわかります。
KwaFlux の数値

| 計測対象 | サイズ | 予算 |
|---|---|---|
38 個のツールすべてを含む tools/list | 51,004 バイト | 60,000 バイト |
コアグループ(8 個のツール)だけの tools/list | 7,077 バイト | 14,000 バイト |
KWAFLUX_MCP_TOOLSETS=convert,repair(14 個のツール)での tools/list | 14,753 バイト | — |
| サーバーの指示文 | 5,719 文字 | 7,000 文字 |
| プロンプト | 4 | — |
一覧全体は約 51 KB の JSON です。トークン数にするとどれくらいかはモデルのトークナイザーによりますが、最初のリクエストの前に支払う、セッションごとの固定コストであることは変わりません。コアグループだけなら、その約 7 分の 1 です。
テストで守らせる予算
設計書に書いたサイズの目標は、いつのまにかずれていきます。テストに書いたサイズの目標は、ずれません。
KwaFlux の MCP サーバーには、テストの一部として実行される計測スクリプトがあります。実際の tools/list の応答を組み立ててバイト数を測り、コアグループ単体も測り、サーバーの指示文は文字数で測って、どれかが予算を超えれば失敗します。
これによって、ツールの書き方が変わります。新しいツールは予算に収まらなければならないので、長い説明は削られ、繰り返し出てくる説明は共通の指示文に移り、有効な値を説明する段落は enum に置き換わります。予算には、これから追加する機能のための余裕も残しています。一覧全体で約 9 KB です。
使うグループだけを読み込む
KwaFlux の 38 個のツールはいくつかのグループに分かれており、主なものを下の表にまとめています。コアグループはどの構成でも読み込まれます。それ以外は環境変数 KWAFLUX_MCP_TOOLSETS で選びます。選ばなかったグループはまったく登録されないので、コンテキストを使いません。
| グループ | 対象 |
|---|---|
core(どの構成でも有効) | アプリの状態、タスクの一覧と詳細、進捗付きの待機、キャンセル、一時停止、再開、再試行 |
convert | コンバーターのジョブ:MP4 へのクイック変換、フォーマットと画質の段階を指定した書き出し、段階の一覧、GIF |
compress | 圧縮率、目標サイズ、画質の段階を指定した圧縮 |
repair | 破損したファイルを診断してから修復 |
download | リンクを調べてからダウンロード |
enhance | 16 個の AI エンハンスツール |
audio | ノイズ除去、ボイスエンハンス、ボーカル分離、ボイスチェンジ |
image | 画像のフォーマット変換 |
dvd | ディスクをスキャンしてから、タイトルを変換 |
たとえば、アシスタントにはファイルの変換と修復しか頼まないなら、ホストの MCP 設定にある KwaFlux のエントリーに、この変数を追加します。
{
"mcpServers": {
"kwaflux": {
"command": "<path to node>",
"args": ["<path to kwaflux_mcp.mjs>"],
"env": { "KWAFLUX_MCP_TOOLSETS": "convert,repair" }
}
}
}command と args は手で入力せず、KwaFlux の 設定 › Agent(MCP) ページからコピーしてください。場所はクイックスタートで紹介しています。設定の形式はホストごとに違うので、env はホストが想定している位置に置いてください。
ヒント: アシスタントに何ができるかを把握するまでは、すべてを読み込んだ状態で始め、その後、実際に使うグループだけに絞りましょう。ツール一覧が小さいほど、意図しないツールをモデルが選ぶ可能性も下がります。
アプリの設定から生成するスキーマ
ツール一覧のバイト数の大半は、入力スキーマです。手書きのスキーマは膨らみがちです。フィールドを文章で説明し、有効な値を説明文とスキーマの両方に書き、例外についての注記を加える、といった具合です。
KwaFlux のエンハンスツールのスキーマは、アプリの画面と同じ設定ファイルから生成しています。それぞれの設定項目は、実際の範囲や実際の選択肢の一覧を持つ型付きのフィールドになるので、モデルが目にするのは、どの値が使えるかを説明する文ではなく "enum": [...] です。写真向けのバリエーションも同じファイルから作られます。生成したルールをアプリと一致させ続けるためのドリフトテストについては、コントロールプレーンの記事で説明しています。
これはツールの範囲を狭く保つことにもつながります。各ツールが受け取るのは、人が選ぶような少数のフィールドだけで、ジョブ全体は KwaFlux が自分で組み立てます。生のジョブ記述を受け取るツールだと、エンジンにできることすべてのスキーマが必要になり、サイズが大きくなるうえ、チェックも難しくなります。
読み直さなくてよい結果
KwaFlux のツールは、どれも outputSchema を宣言しています。MCP の仕様によれば、ツールがこれを提供する場合、「サーバーはこのスキーマに準拠した構造化された結果を提供しなければならない(MUST)」とされ、クライアントは「構造化された結果をこのスキーマで検証すべきである(SHOULD)」とされています。
コンテキストの面では、結果がタスク ID、ステータス、出力ファイル名といった決まったフィールドを持つ、コンパクトな JSON になるということです。モデルは処理がうまくいったかどうかを知るために段落を読む必要がなく、ホストはモデルに尋ねなくても結果を確認できます。結果には、モデルに不要なものも含めません。これについてはパスとプライバシーの記事で取り上げています。
長いジョブ:ポーリングではなく進捗とキャンセル
動画のジョブには何分もかかることがあります。アシスタントがジョブを追う単純な方法は「終わった?」と何度も尋ねることですが、確認のたびにコンテキストが増えていきます。
KwaFlux のコアグループには、その代わりになる待機ツールがあります。
- 進捗。 ホストが
progressTokenを含めると、KwaFlux はタスクの実行中にnotifications/progressを送ります。ホストはこれを、モデルのコンテキストの外で進捗バーとして表示します。 - キャンセル。 ホストでリクエストを止めると
notifications/cancelledが送られ、KwaFlux はすぐに待機をやめます。必要なら、そのあとアシスタントがタスク自体をキャンセルできます。
1 回の待機の呼び出しが、ステータス確認の繰り返しに取って代わります。そのため、10 分かかる書き出しでも、10 秒の書き出しとほぼ同じコンテキストで済みます。
複数ステップのワークフローのためのプロンプト
ジョブによっては、診断してから修復し、高画質化してから書き出す、というように、いくつものツールを順番に使う必要があります。その順序をすべてのツールの説明に書くと、リクエストのたびにバイト数がかさみます。そこで KwaFlux は、これを 4 つの MCP プロンプトとして提供しています。
- 破損した動画を修復する
- プラットフォーム向けに書き出す
- ダウンロードしてから変換する
- AI 画質修復
MCP の仕様はプロンプトを「ユーザーが制御する」ものと説明しており、たいていはスラッシュコマンドとして表示されます。選ぶまではコンテキストを消費せず、選ぶとそのジョブの手順をモデルに渡します。各ステップの内容は、できることをまとめた記事で紹介しています。
まとめ
ツール一覧はカタログではなく予算として扱いましょう。サイズを測り、テストで上限を設け、必要なグループだけを読み込めるようにする。そのうえで、実際の設定から生成した型付きの入力、構造化された結果、ポーリングの代わりの進捗通知によって、1 回 1 回の呼び出しを軽く保つ。KwaFlux はこうして、あなたの依頼を押しのけることなく、38 個のツールを 1 つのサーバーに収めています。
必要なツールだけを読み込み、残りは外す
KwaFlux のローカル MCP サーバーは、Codex、Claude、Cursor などの MCP アプリに、グループごとにオン・オフできる最大 38 個のツールを提供します。コアグループはどの構成でも有効です。AI 処理はご自身の GPU 上で実行され、メディアファイルが処理のためにアップロードされることはありません。Windows 10(64 ビット、バージョン 1809 以降)、Windows 11、Apple Silicon 搭載の macOS 12 以降で動きます。ファイルの読み込みやアプリの操作にアカウントは不要です。ログインと有料プランが必要なのは、書き出し、変換、ファイル修復、リンクからのファイルダウンロードだけです。
お手元の素材で効果を試す
KwaFlux を入手し、支払う前にお手元の素材で効果を無料プレビュー。アカウント不要で、処理はお使いの GPU で行い、処理のためにメディアをアップロードすることはありません。 動画のプレビューは 1、3、または5 秒、手ぶれ補正のプレビューは 5、15、または30 秒から選べます。
よくある質問
MCP サーバーのツールはいくつが適切?
どんな場合にも当てはまる数というものはありません。大事なのは、ツール一覧全体のサイズと、各ツールが 1 つのはっきりした役割を持っているかどうかです。tools/list をバイト数で測り、予算を決め、不要なグループをユーザーがオフにできるようにしましょう。
MCP ツールの説明はコンテキストウィンドウを消費する?
たいていは消費します。ほとんどのホストは、モデルがツールを選べるようにツールの定義をモデルに渡すので、説明とスキーマはどれもセッションごとにコンテキストを使います。必要に応じてツールを読み込むホストもあり、その場合はコストが下がります。
MCP ツールは構造化コンテンツとテキストのどちらを返すべき?
理想は両方です。仕様では、ツールが出力スキーマを宣言して structuredContent を返すことができ、古いクライアントのために同じ JSON をテキストとしても含めることが推奨されています。構造化された結果は検証しやすく、読む量も少なくて済みます。
MCP サーバーで時間のかかるジョブはどう扱う?
ジョブに ID を付けてすぐに応答を返し、待機ツールを用意します。ホストが進捗トークンを渡したときは進捗通知を送り、ホストがキャンセルしたら止まるようにします。こうすればステータス確認を繰り返さずに済みます。エージェントによる修復ワークフローの全体をご覧ください。
MCP のツールとプロンプトの違いは?
ツールは、必要だと判断したときにモデルが呼び出します。プロンプトはユーザーが選ぶもので、多くはスラッシュコマンドとして表示され、あるタスクのための既成の指示一式をモデルに渡します。
参考資料
- Model Context Protocol, "Tools" (2026-07-28; tools/list ordering and prompt caching; outputSchema; structuredContent) (2026-10-25 閲覧)
- Model Context Protocol, "Progress" (2025-11-25; progressToken, notifications/progress) (2026-10-25 閲覧)
- Model Context Protocol, "Cancellation" (2025-11-25; notifications/cancelled) (2026-10-25 閲覧)
- Model Context Protocol, "Prompts" (2025-11-25; user-controlled prompts) (2026-10-25 閲覧)


