MCPツールは何個まで?クライアント別の上限とMCP Token予算の決め方【2026年10月版】
MCPツールの上限をクライアント別に整理(VS Codeは128、Devin Desktop/Windsurfは100、Cursorはモデルごと、Claude Code、Gemini CLI、Claude・OpenAI API)。上限に当たったときのエラー、トークン予算の計算式とSonnet 5.5での費用例、ツール数を数えるスクリプト、上限内に収める6つの方法まで。
最終更新:2026年10月19日 / 対象:VS Code(GitHub Copilotのエージェントモード)、Cursor(エディタとCLI)、Devin Desktop(旧Windsurf Cascade)、Claude Code、Gemini CLI、Claude APIのツール検索、OpenAI Responses APIのツール検索
「MCPのツールは何個までつないでいいのか」には、答えが2つあります。クライアントが強制するハード上限と、それよりずっと手前でMCPのトークン消費(MCP token usage)とツール選択の精度が悪化し始める実用上の上限です。この記事では、クライアントごとの最新のツール上限、上限に当たったときに出るエラー、自分の環境で計算できるトークン予算、そして必要なサーバーを外さずに上限内に収める6つの方法をまとめます。
結論(30秒で読める要約)
- ハード上限はクライアントごとに違います。VS Codeは1回のチャットリクエストで有効にできるツールが最大128個、Devin Desktop(Cascade)は同時に使えるツールが合計100個です。Claude Codeにはサーバー単位の固定上限がありません。Cursorの上限はモデル提供元ごとの上限で、エディタもCLI(2026年9月以降)もMCPのツール定義を必要なときだけ読み込みます。
- 精度の面での上限は、どのハード上限よりも低いです。Anthropicのドキュメントは、Claudeのツール選択は「30〜50個を超えると低下する」と書いています。OpenAIは、ターン開始時に使えるツールを20個未満にするよう勧めています。
- 最初から読み込むツールは、リクエストのたびにトークンを消費します。Anthropicの5サーバーの例では58ツールで約55Kトークン、1ツールあたり平均約950トークンです。筆者の計算では、この平均で128ツールを最初から読み込むと1リクエストあたり約121Kトークン、Claude Sonnet 5.5でキャッシュなしなら1回0.24ドルです。
- 感覚ではなく予算で決めます。最初から読み込むツール数 =(クライアントの上限、精度の上限、トークン予算 ÷ 1ツールあたりの平均トークン)の最小値です。200Kのコンテキストの10%を予算にすると、約21ツールになります。
- 上限内に収めるには、削除ではなく振り分けをします。プロジェクトごとにサーバーを有効化する、サーバー内でツールを選ぶ(許可・除外リスト、ツールセット、ツール単位の切り替え)、専門的なサーバーはサブエージェントに移す、資格情報で一覧を絞る、ツール検索を使う、複数手順の処理はコード実行に移す、の6つです。
目次
- MCPのツール上限とは
- クライアント別のMCPツール上限(2026年10月時点)
- 上限に当たると何が起きるか
- ツールが少ないほど良い理由:精度とトークン消費
- ツール定義のトークン予算の計算方法
- 実際に公開しているツール数の数え方
- 上限内に収める6つの方法
- チェックリスト
- よくあるハマりどころ
- NodeFlareならこう解決できる
- FAQ
1. MCPのツール上限とは
MCPのツール上限とは、MCPクライアントが一度にモデルへ送るツールの最大数のことです。この上限はクライアントやモデル提供元が決めるもので、MCP自体の制限ではありません。MCPの仕様は、サーバーが tools/list で返すツールの数に上限を設けていません。
実際に気にするべき上限は2種類あります。
| 上限 | 決める主体 | 超えるとどうなるか |
|---|---|---|
| ハード上限 | クライアントまたはモデルのAPI | リクエストが失敗する、またはツールが落とされる・拒否される |
| 実用上の上限 | モデルの挙動とトークン予算 | リクエストは通るが、費用が増え、ツールの選び間違いが増える |
なお、ここでの「トークン」はLLMのトークン(コンテキストと課金の単位)のことで、APIキーやOAuthのアクセストークンのことではありません。
2. クライアント別のMCPツール上限(2026年10月時点)
各社の公式ドキュメントやスタッフの回答で現在確認できる内容を表にしました。日本語の解説記事でも、2025年初めの「Cursorは最初の40ツールしか送らない」という古い情報がまだよく引用されているので注意してください。
| クライアント | ハード上限 | ツールの読み込み方 | 一覧を減らす標準機能 | 出典 |
|---|---|---|---|---|
| VS Code(Copilotエージェントモード) | 1チャットリクエストあたり有効なツール128個 | 最初から読み込む。大量のツールをまとめる仮想ツール(virtual tools)も使える | ツールピッカー(リクエスト単位)、ツールセット、github.copilot.chat.virtualTools.threshold |
VS Code公式:Use tools in chat |
| Devin Desktop(Cascade、旧Windsurf) | 同時に合計100ツール | 最初から読み込む | MCPsメニューのサーバー単位の切り替え、mcp_config.json の disabledTools |
Devin Desktop公式:Cascade MCP |
| Cursor(エディタとCLI) | モデル提供元ごとの上限。固定の数は非公開 | 必要なときに読み込む(dynamic context discovery)。CLIも2026年9月に対応 | Customize > MCPs のサーバー切り替え、チャット欄のツール一覧でツール単位の切り替え | Cursorヘルプ、Cursorフォーラムのスタッフ回答 |
| Claude Code | サーバー単位の固定上限なし。「実用上の上限はコンテキストウィンドウの予算」 | ツール検索が既定で有効。起動時はツール名とサーバーの説明(instructions)だけ読み込む | /mcp の切り替え、ENABLE_TOOL_SEARCH、alwaysLoad、サブエージェントの mcpServers |
Claude Code公式:MCP |
| Gemini CLI | 記載なし | 最初から読み込む | サーバーごとの includeTools(許可リスト)と excludeTools。excludeTools が優先 |
Gemini CLI公式:MCP servers |
| Claude API | ツール検索を使えば1リクエストで遅延読み込みツールを最大10,000個 | 最初から読み込むか defer_loading: true かを選べる |
ツール検索ツール(正規表現またはBM25) | Claude公式:Tool search tool |
| OpenAI Responses API | Function callingガイドにハード上限の記載なし。ターン開始時は20個未満を推奨(目安) | 選べる。gpt-5.4以降は tool_search に対応 |
defer_loading、namespace(1つあたり10個未満を推奨) |
OpenAI公式:Function calling、Tool search |
見落としやすい点が2つあります。
- Cursorの上限は、CLIとエディタで共通です。Cursorのスタッフは2026年7月に、これを「モデル提供元ごとのツール数の上限」と説明しました。CLIは設定済みのツール定義をすべて1回のリクエストで送っていたため、先に上限に当たっていました。2026年9月の更新で、CLIも必要なときだけ定義を読み込むようになっています。
- Claude Codeは、送れないツールを個別に外します。完全名(
mcp__<server>__<tool>)が128文字を超えるツールや、Claude APIがリクエスト全体を拒否する原因になる入力スキーマを持つツールは除外されます。
3. 上限に当たると何が起きるか
壊れ方はクライアントごとに違うので、症状からどの上限に当たったかが分かります。
| 症状 | クライアント | 原因 | まずやること |
|---|---|---|---|
Cannot have more than 128 tools per request. というエラー |
VS Code | リクエストで有効なツールが128個を超えた | ツールピッカーで外す、または仮想ツールを有効にする |
Too many MCP tools are enabled for this model. というエラー |
Cursor CLI(2026年9月の更新前) | モデル提供元ごとの上限 | CLIを更新し、使わないサーバーを無効にする |
| エラーは出ないが、一部のツールが呼ばれない | Devin Desktop | 100ツールの上限を超えた | サーバーを切るか disabledTools に追加する |
/mcp には出るのにClaudeが呼べないツールがある |
Claude Code | ツールの完全名が128文字超、またはスキーマが不正 | サーバー名・ツール名を短くする、スキーマを直す |
| エラーは出ないが、モデルがツールを選び間違える | すべて | 似たツールがコンテキストに多すぎる(実用上の上限) | 最初から読み込む一覧を減らし、名前に接頭辞を付ける |
| エラーは出ないが、毎回遅くて高い | すべて | リクエストごとのツール定義のトークンが多すぎる | ツール検索を使う、最初の一覧を小さくする |
下の2行はエラーが出ないため気づきにくく、長く使うほど一番高くつきます。
4. ツールが少ないほど良い理由:精度とトークン消費
最初から読み込むツールを減らすと、精度と費用の両方が良くなります。根拠は各ベンダー自身が公開しています。
- 精度:Anthropicは、Claudeのツール選択は30〜50個を超えると低下すると書いています。Anthropicのadvanced tool useの記事では、ツール検索を有効にするとOpus 4の精度が49%から74%に、Opus 4.5が79.5%から88.1%に上がりました。よくある失敗は「間違ったツールの選択と不正なパラメータ」で、「特に名前の似たツールがあるとき」に起きるとしています。
- 速度:GitHubはVS Code Copilotの既定の組み込みツールを40個から13個のコアツールに減らしました(2025年11月)。SWE-LancerとSWE-bench Verifiedで成功率が2〜5ポイント上がり、平均の応答時間が約400ミリ秒短くなったと報告しています。
- トークン:OpenAIのガイドは、呼び出し可能な関数定義は「モデルのコンテキスト上限に数えられ、入力トークンとして課金される」と明記しています。Claude 5.5のモデルでは、定義とは別にツール利用のためのシステムプロンプトが286トークン加わります(
tool_choice: autoの場合)。
実際の定義はどれくらいの大きさか。Anthropicの5サーバーの例に、筆者が計算した1ツールあたりの平均を加えました。
| サーバー | ツール数 | トークン(Anthropic) | 1ツールあたり(筆者の計算) |
|---|---|---|---|
| GitHub | 35 | 約26K | 約743 |
| Slack | 11 | 約21K | 約1,909 |
| Sentry | 5 | 約3K | 約600 |
| Grafana | 5 | 約3K | 約600 |
| Splunk | 2 | 約2K | 約1,000 |
| 合計 | 58 | 約55K | 約948 |
サーバーによって差が大きいので、自分のサーバーは実際に数えてください(6章)。定義そのものを小さくする方法は、MCPのトークン消費の全体像で解説しています。
5. ツール定義のトークン予算の計算方法
最初から読み込めるツール数は、クライアントのハード上限、精度の上限、トークン予算 ÷ 1ツールあたりの平均トークン、の3つのうち最も小さい数です。
筆者の計算式:最初から読み込むツールの上限 = min(クライアントの上限, 約30, コンテキストウィンドウ × 予算の割合 ÷ 1ツールあたりの平均トークン)
精度の上限には、Anthropicの30〜50個の下限である30を使っています。例:200Kトークンのコンテキスト、予算10%、Anthropicの平均948トークンなら、200,000 × 0.10 ÷ 948 ≈ 21ツールです。
各クライアントの上限まで最初から読み込んだ場合の費用(筆者の計算。1ツール948トークン、Claude Sonnet 5.5の入力単価100万トークンあたり2ドル、キャッシュなし、ツール定義分のみ):
| 最初から読み込むツール数 | この数の根拠 | 1リクエストのツール定義トークン | 200Kコンテキストに占める割合 | 1リクエストの費用 | 1,000リクエストあたり |
|---|---|---|---|---|---|
| 20 | OpenAIの推奨(目安) | 18,960 | 9.5% | 0.038ドル | 37.92ドル |
| 30 | Anthropicの精度の目安の下限 | 28,440 | 14.2% | 0.057ドル | 56.88ドル |
| 40 | Cursorの旧上限 | 37,920 | 19.0% | 0.076ドル | 75.84ドル |
| 100 | Devin Desktopの上限 | 94,800 | 47.4% | 0.190ドル | 189.60ドル |
| 128 | VS Codeの上限 | 121,344 | 60.7% | 0.243ドル | 242.69ドル |
計算方法:ツール数 × 948 × 2ドル ÷ 1,000,000。プロンプトキャッシュを使えば繰り返し送る定義の単価は下がりますが、コンテキストを占める量は変わりません。また、一覧がリクエスト間で同じでなければキャッシュは効きません。1Mトークンのコンテキストを持つモデルなら割合は小さくなりますが、精度の問題と請求額は残ります。
6. 実際に公開しているツール数の数え方
減らす前に、まず数えます。次のスクリプトは、指定したリモートMCPサーバーに順に接続し、ツール数とトークンの推定値を出して、上の上限と比べます。MCP TypeScript SDKのクライアントを使っています。SDKのバージョンによってAPIが違う場合があるので確認してください。
// count-tools.mjs — 使い方: node count-tools.mjs servers.json
// servers.json: [{ "name": "github", "url": "https://example.com/mcp", "token": "任意" }]
import { readFileSync } from "node:fs";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { encode } from "gpt-tokenizer"; // o200k_base。Claudeのトークナイザーではないので推定値
const servers = JSON.parse(readFileSync(process.argv[2], "utf8"));
let totalTools = 0, totalTokens = 0;
for (const s of servers) {
const headers = s.token ? { Authorization: `Bearer ${s.token}` } : {};
const client = new Client({ name: "tool-count", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(new URL(s.url), { requestInit: { headers } }));
const tools = [];
let cursor;
do { // tools/list はページングされる
const page = await client.listTools(cursor ? { cursor } : {});
tools.push(...page.tools);
cursor = page.nextCursor;
} while (cursor);
const tokens = tools.reduce((n, t) =>
n + encode(JSON.stringify({ name: t.name, description: t.description, input_schema: t.inputSchema })).length, 0);
console.log(`${s.name}: ${tools.length} tools, ~${tokens} tokens`);
totalTools += tools.length; totalTokens += tokens;
await client.close();
}
console.log(`TOTAL: ${totalTools} tools, ~${totalTokens} tokens`);
for (const [client, cap] of [["VS Code", 128], ["Devin Desktop", 100], ["accuracy (~30)", 30]])
console.log(`${client}: ${totalTools <= cap ? "OK" : `over by ${totalTools - cap}`}`);
トークン数はオープンソースのトークナイザーによる推定値です。Claudeでの正確な数は、トークン数カウント用のエンドポイントで確認してください。クライアントの中でも確認できます。Gemini CLIの /mcp はサーバーごとのツールと説明文を表示し、Claude Codeの /mcp はサーバーとそのツールを表示します。
7. 上限内に収める6つの方法
サーバーを外すのではなく、ツールを振り分けます。手間の少ない順に並べました。
7.1 サーバーはグローバルではなくプロジェクトごとに有効にする
1つのリポジトリでしか使わないサーバーは、そのプロジェクトだけで設定します。Claude Codeの /mcp パネルでは設定を残したままプロジェクト単位でサーバーをオフにでき、CursorはCustomize > MCPs、Devin DesktopはMCPsメニューにサーバーごとの切り替えがあります。
7.2 サーバーの中でツールを選ぶ
多くのサーバーは、1つの作業に必要な数より多くのツールを公開しています。クライアントのツール単位の設定を使います。
// Gemini CLI の settings.json — このプロジェクトで使うものだけ残す
{
"mcpServers": {
"github": {
"httpUrl": "https://example.com/mcp",
"includeTools": ["list_issues", "get_issue", "create_issue", "search_code"]
}
}
}
// Devin Desktop の mcp_config.json — 使わないツールを外す
{
"mcpServers": {
"github": {
"serverUrl": "https://example.com/mcp",
"disabledTools": ["delete_repository", "update_branch_protection"]
}
}
}
VS Codeではツールをツールセットにまとめ、ツールピッカーでリクエストごとに選びます。Cursorはチャット欄のツール一覧でツール名をクリックすると切り替えられます。サーバー設定のキー名は各クライアントのドキュメントで確認してください。
7.3 専門的なサーバーはサブエージェントに移す
Claude Codeでは、サブエージェントの mcpServers に直接書いたサーバーは、そのサブエージェントが動いている間だけ接続されます。公式ドキュメントには「サブエージェントはツールを得るが、親の会話は得ない」とあります。ブラウザ操作のように使う頻度の低いサーバーを、メインのコンテキストから外せます。
---
name: browser-tester
description: Tests features in a real browser using Playwright
mcpServers:
- playwright:
type: stdio
command: npx
args: ["-y", "@playwright/mcp@latest"]
---
Use the Playwright tools to navigate, screenshot, and interact with pages.
サブエージェントは、既定ではメインの会話のMCPツールを引き継ぎます。不要なサーバーは disallowedTools: mcp__github(すべてなら mcp__*)で外してください。
7.4 資格情報で一覧を絞る
MCPの仕様では、サーバーのツール一覧を「リクエストで提示された認可によって」変えてよいとされています。読み取り専用のエージェントとデプロイ用のエージェントが同じサーバーを使っても、見える一覧を変えられます。サーバー側で数を減らすので、どのクライアントでも効きます。
7.5 ツール検索(遅延読み込み)を使う
ツール検索は、モデルが必要とするまでツール定義をコンテキストに入れません。Claude Codeでは既定で有効で、Claude API(defer_loading: true、遅延読み込みは最大10,000ツール)やOpenAIのResponses API(gpt-5.4以降)でも使えます。Anthropicは、ツールが10個以上、または定義が10Kトークンを超えたら使うよう勧めています。よく使う3〜5個は遅延させずに残しておきます。Claude Codeでは、ANTHROPIC_BASE_URL がAnthropic以外のプロキシを指すとツール検索が自動でオフになります。ゲートウェイ経由で急にトークンが増えたら、まずここを確認してください。
7.6 複数手順の処理はコード実行に移す
コード実行では、モデルには少数の固定ツール(一般に「コードを実行する」「ツールを検索する」)だけが見え、残りのツールはサンドボックスの中から呼ばれます。裏にいくつツールがあっても、クライアントから見えるツール数は小さいままです。効果が大きいのは、多数の呼び出しを束ねる処理や大きな結果を絞り込む処理です。逆に高くつく場合についてはコード実行の損益分岐の記事で計算しています。
| 方法 | クライアントから見えるツール数が減る | 1リクエストのトークンが減る | ツール検索のないクライアントでも使える |
|---|---|---|---|
| 7.1 プロジェクトごとのサーバー | 減る | 減る | 使える |
| 7.2 ツール単位の選択 | 減る | 減る | 使える |
| 7.3 サブエージェントへの移動 | 減る(メインのコンテキスト) | 減る(メインのコンテキスト) | Claude Codeのみ |
| 7.4 資格情報での絞り込み | 減る | 減る | 使える(サーバー側・プロキシ側) |
| 7.5 ツール検索 | 必ずではない(APIには定義を送る) | 減る | プロキシが提供しない限り使えない |
| 7.6 コード実行 | 減る | 複数手順の処理で減る | 使える(サーバー側・プロキシ側) |
ホスティングしたサーバーを複数のクライアントにつなぐ場合、各クライアントの設定ファイルの場所はリモートMCPのクライアント設定早見表にまとめています。
8. チェックリスト
- [ ] 有効なすべてのサーバーのツール数を数え、トークンを推定した(6章)
- [ ] 合計がクライアントのハード上限(VS Codeは128、Devin Desktopは100)未満
- [ ] 最初から読み込むツールは約30個以下、またはツール検索を有効にしている
- [ ] ツール定義がコンテキストウィンドウの10%以下(または自分で決めた予算以下)
- [ ] サーバーはグローバルではなくプロジェクトごとに有効化している
- [ ] 破壊的な操作や使わないツールはサーバーごとに除外している
- [ ] 使う頻度の低いサーバーはサブエージェントかツール検索の後ろに置いている
- [ ] 役割の違うエージェントには、そのツールだけが見える資格情報を使わせている
- [ ] 似た名前のツールには接頭辞を付けている(例:
github_list_prs) - [ ] サーバーを追加したら数え直している
9. よくあるハマりどころ
| ハマりどころ | なぜ困るか | 対処 |
|---|---|---|
| 「Cursorは最初の40ツールだけ送る」という情報を信じる | 2025年初めの挙動。今はモデルごとの上限で、読み込みは必要時のみ | 最新のCursorドキュメントとフォーラムのスタッフ回答を確認する |
| サーバー数で数える | 1サーバーで35ツールのこともある(Anthropicの例のGitHub) | 6章のスクリプトでツール数を数える |
| ハード上限ぎりぎりで運用する | 平均948トークンなら100〜128ツールで95K〜121Kトークン | 上限ではなく精度とトークンで予算を決める |
| サブエージェントは空の状態で始まると思い込む | 既定でメインの会話のMCPツールを引き継ぐ | mcpServers に直接書き、disallowedTools で外す |
| プロキシ経由でツール検索が黙ってオフになる | Claude CodeはAnthropic以外の ANTHROPIC_BASE_URL で無効化する |
プロキシが tool_reference を転送するなら ENABLE_TOOL_SEARCH を明示する |
| サーバー名とツール名が長い | Claude Codeは完全名が128文字を超えるツールを外す | サーバー名もツール名も短くする |
| 似たツールを持つサーバーを大量につなぐ | 似た名前はツールの選び間違いの最大の原因 | 名前に接頭辞を付け、1つの用途に1サーバーにする |
10. NodeFlareならこう解決できる
NodeFlareはMCPサーバーをホスティングし、プロキシでサーバーごとのツール設定を追加します。どの設定もサーバーのコード変更は不要で、ツール検索を持たないクライアントも含め、どのクライアントでも同じように効きます。この記事の課題ごとに対応を示します。
課題:1つの大きなサーバーのせいでクライアントの上限を超える(2〜3章)
→ tool_search_mode を有効にします。NodeFlareは tools/list を search_tools(query) と call_tool(name, args) の2つのメタツールにまとめるので、VS CodeやDevin Desktopではそのサーバーが全ツールではなく2ツールとして数えられます。検索は既定でキーワード一致で、GEMINI_API_KEY を設定すると意味検索(埋め込み)になります。意味検索に失敗してもキーワード検索に戻り、リクエストが止まることはありません。筆者の計算例:60ツールのサーバーが3つあると合計180ツールで、VS Codeの128を超えます。そのうち2つで tool_search_mode を有効にすると、クライアントから見えるのは60 + 2 + 2 = 64ツールです。
課題:複数手順の作業で、一度に多くのツールが必要になる(7.6)
→ Code Execution(tool_code_mode)を有効にします。サーバーは run_code と search_tools を公開し、モデルは tools.* を呼ぶJavaScriptを書きます。コードはサンドボックスで実行され、何度もツールを往復する代わりに複数のツール呼び出しが1回の実行にまとまります。裏のツールがいくつあっても、クライアントから見えるのは2ツールです。実行ごとに独立したDenoのサブプロセスが使われ、ファイルシステム・環境変数・プロセス生成は使えず、ネットワークはプロキシのコールバック先にしかつながりません。すべてのツール呼び出しはサーバー側で改めてスコープを確認します。既定値はタイムアウト600秒、1回の実行あたりのツール呼び出し最大50回、V8ヒープ128MBです。
課題:エージェントごとに必要なツールが違う(7.4)
→ tool_list_filter_by_scope を有効にします。tools/list には、呼び出し元の資格情報で実際に呼べるツールだけが、同じスキーマのまま表示されます。tools:call:<name> のようなAPIキーのスコープと組み合わせれば、読み取り専用エージェントのキーには読み取り系のツールだけが並びます。
課題:最初から読み込むツールの説明文が長い(5章)
→ tool_schema_slim を有効にします。500文字を超える説明文をUTF-8を壊さずに切り詰めます。ツール名と入力スキーマは変わりません。
NodeFlareは固定の削減率を公表していません。6章の方法で導入前後のツール数とトークンを数えてください。NodeFlareのリクエストログには、結果の大きさを測るためのリクエストごとの res_bytes も記録されます。
最小の始め方:
- nodeflare.techにサインインし、MCPサーバーのGitHub URLを入力します。ランタイム、トランスポート、起動コマンドは自動で入力されます。
- デプロイしたら、サーバー設定で
tool_code_modeかtool_search_modeを有効にします。 - サーバーのURLとAPIキーをMCPクライアントに追加します。
MCPサーバー1つまで無料で試せます(Freeプラン:サーバー1つ、コンピュート月30 GB-hours)。→ nodeflare.techで始める
11. FAQ
MCPのツールは何個までが適切?
精度の面では、同時に読み込むツールが30〜50個を超えると多すぎます。Anthropicはこの範囲を超えるとツール選択が低下するとしており、OpenAIはターン開始時に20個未満を勧めています。費用の面では、ツール定義をコンテキストの10%以下に抑えるのが筆者の目安で、200Kのコンテキストなら平均的なサイズで約21ツールです。
VS CodeのMCPツール上限は何個?
1回のチャットリクエストで有効にできるツールは最大128個です。超えると「Cannot have more than 128 tools per request.」と表示されます。ツールピッカー、ツールセット、github.copilot.chat.virtualTools.threshold 設定で上限内に収めます。
CursorのMCPは今も40ツールまで?
「最初の40ツール」という制限は2025年初めのものです。現在、Cursorのスタッフはエディタ・CLI共通のモデル提供元ごとの上限と説明しており、どちらもMCPのツール定義を必要なときだけ読み込みます(CLIは2026年9月の更新から)。
WindsurfやDevin DesktopのMCPツール上限は?
Cascadeが同時に使えるツールは最大100個です。MCPsメニューでサーバーをオフにするか、mcp_config.json のサーバー設定の disabledTools に使わないツールを並べます。
Claude CodeにMCPツールの上限はある?
サーバー単位の固定上限はなく、公式ドキュメントは実用上の上限はコンテキストウィンドウの予算だとしています。ツール検索が既定で有効なので、起動時に読み込むのはツール名とサーバーの説明だけです。完全名が128文字を超えるツールは外されます。
一度も呼ばないMCPツールもトークンを消費する?
最初から読み込む設定なら消費します。一覧にある定義は、リクエストのたびに入力として送られます。ツール検索を使えば、遅延読み込みのツールは読み込まれたときだけトークンを消費します。
MCPツール1つで何トークン使う?
大きく異なります。Anthropicの5サーバーの例では58ツールで約55Kトークンで、筆者の計算では1ツール平均約948トークン、サーバー別には約600(Sentry)から約1,900(Slack)まで幅があります。6章のスクリプトで自分のサーバーを数えてください。
機能を減らさずにMCPのツール数を減らすには?
サーバーをプロジェクトごとに有効にし、作業に必要なツールだけを選び、使う頻度の低いサーバーはサブエージェントに移し、資格情報で一覧を絞ります。さらにツール検索やコード実行を使えば、クライアントから見えるのは全ツールではなく少数のメタツールになります。
Claude CodeのサブエージェントだけにMCPツールを持たせられる?
できます。サブエージェントのフロントマターの mcpServers にサーバーを直接書くと、サブエージェントの開始時に接続し、終了時に切断します。そのツールの説明文は親の会話のコンテキストを消費しません。
ツール検索はツール上限に数えられる?
クライアントによります。Claude APIでは全定義を送りますが、遅延読み込みのツールはモデルのコンテキストに入らず、最大10,000個まで遅延できます。プロキシ側の検索モードは一覧を少数のメタツールに置き換えるので、クライアントの上限に数えられるのはそのメタツールだけです。
ここでいう「MCP Token」はAPIトークンのこと?
違います。この記事はMCPのツール定義が消費するLLMのトークンの話です。MCPサーバーのAPIキーやOAuthのアクセストークンはセキュリティの話題です。
まとめ
MCPのツール上限には、ハード上限(VS Codeは128、Devin Desktopは100、Cursorはモデルごと)と、精度とトークン消費で決まるずっと低い実用上の上限の2種類があります。まずツールを数え、min(上限, 約30, トークン予算 ÷ 1ツールあたりのトークン) で最初から読み込む数を決め、プロジェクトごとのサーバー、ツール単位の選択、サブエージェント、資格情報での絞り込み、ツール検索、コード実行で振り分けて収めます。サーバーを追加したら、必ず数え直してください。
参考資料
- VS Code Docs: Use tools in chat
- GitHub Blog: How we're making GitHub Copilot smarter with fewer tools
- Devin Desktop Docs: Cascade MCP
- Cursor Help: MCP integrations
- Cursor Forum: CLI MCP tool limits(2026年7月・9月のスタッフ回答)
- Claude Code Docs: MCP
- Claude Code Docs: Subagents
- Gemini CLI Docs: MCP servers
- Claude Docs: Tool search tool
- Claude Docs: Pricing
- Anthropic Engineering: Introducing advanced tool use
- OpenAI Docs: Function calling
- OpenAI Docs: Tool search
- NodeFlare Docs ・ NodeFlare Pricing
