Claude Codeのトークン消費を98%削減する実践方法:MCP活用とコンテキスト最適化テクニック
Claude Codeの利用料が想像以上に高くなる理由
Claude Codeを使っていると、気づかないうちにトークン(文字数カウント)がどんどん消費されていることがあります。一度のやり取りで数千、数万文字が使われることもあり、月間の利用料が跳ね上がってしまう方も少なくありません。
プロジェクトのファイル一式をClaudeに読み込ませたり、長いエラーログを貼り付けたり、やり取りが増えるたびに文字数は積み重なっていきます。「あれ、こんなに高い?」という経験をしたことがある方は、この問題に直面している可能性があります。
実は、工夫次第でこのトークン消費を大幅に削減できます。複数の実践者が、専用ツール(MCP)の活用やコンテキスト管理の最適化により、トークン使用量を98%まで削減した事例を報告しています。
一方で、MCPワークフローを使い始めたことで「請求が3倍になった」という報告も上がっています。MCPは正しく使えばコスト削減の強力な手段になりますが、設定の不備や使用パターンの理解不足が思わぬ料金トラブルを招くこともあります。
MCPを使って本当に必要な情報だけをClaude Codeに渡す
MCP(Model Context Protocol)とは、Claude Codeが外部のツールやデータベースと連携するための仕組みです。この仕組みを活用すると、全ファイルをテキストで読み込む代わりに、特定の情報だけを効率的に取得できます。
たとえば、大きなコードベースがあるとき:
- 従来のやり方: プロジェクト全体をテキストでClaudeに貼り付ける → 数万文字消費
- MCP活用: Claudeが「このファイルの関数一覧をください」と外部ツールに問い合わせる → 必要な部分だけを自動取得 → 数百文字で済む
MCPを使った専用のコード解析ツールを自分で作成・設定することで、「このプロジェクトに必要な情報だけをフィルタリングして提供する」という使い方が実現します。これが98%削減を可能にした主要な手法です。
ただし、MCPワークフローでは以下のような意図しないループが自動で起きることがある点に注意が必要です:
- ユーザーがプロンプトを送信
- Claudeが外部APIを呼び出す
- データが返ってくる
- Claudeが不完全だと判断して再度APIを呼び出す
- この繰り返しが数十回単位で続く
このループが料金増加の主因となるケースも多いため、後述する呼び出し回数の制限と監視の設定を合わせて行うことが重要です。
トークン追跡ツールで「どこで消費しているか」を可視化する
無駄な消費を減らすには、まず「何が文字数を食っているか」を知ることが大切です。
実践者の報告によると、多くの開発者は以下に気づかないまま大量のトークンを消費しています:
- エラーログの全文を毎回貼り付けている
- 変更不要な部分まで説明要求している
- 過去のやり取り(コンテキスト)が肥大化している
- 同じ質問を少しずつ変えて何度も聞いている
- MCPが外部APIを自動で何度も呼び出している
トークン消費を追跡するには、自作スクリプトやMCPベースの監視ツールのほか、APIレスポンスに含まれるトークン数を直接ログに記録する方法が有効です。
// Anthropic API使用時にログを記録する例
const Anthropic = require("@anthropic-ai/sdk");
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
async function callWithLogging(userMessage) {
const startTime = Date.now();
const message = await anthropic.messages.create({
model: "claude-3-5-sonnet-20241022",
max_tokens: 1024,
messages: [{ role: "user", content: userMessage }],
});
const endTime = Date.now();
// ログ記録:使用トークン数と実行時間
console.log(
`入力: ${message.usage.input_tokens}トークン、` +
`出力: ${message.usage.output_tokens}トークン、` +
`実行時間: ${endTime - startTime}ms`
);
return message;
}
「このステップで何文字使った」「このファイル読み込みで◯◯文字」という詳細が見える化されると、削減ポイントが自然と浮かんできます。
コンテキストを賢く整理して文字数を節約する
Claude Codeのやり取りでは、過去の会話履歴もカウント対象です。会話が長くなるほど、古い部分も含めて毎回Claudeに送信されるため、文字数がどんどん増えていきます。
コンテキスト最適化のポイント:
要点だけを先に伝える
質問するときは、背景説明を長くするのではなく「今この状態で、この問題を解決したい」という結論から入ります。背景は聞かれたときだけ補足する。
不要な部分を削除してから聞く
エラーメッセージなら、意味のある部分だけを抜き出して貼り付け。「スタックトレース全体」ではなく「エラーが発生した行」に絞る。
新しい会話(セッション)に切り替える
1つのプロジェクトで細かいやり取りが増えてきたら、「新しいチャットを始める」のも手です。コンテキストがリセットされ、以降のやり取りから文字数が計算され直します。
MCPで構造化データを使う
テキストの説明ではなく「このプロジェクトの構造はこういう階層」という構造データ(JSONやYAML)をMCPから取得させることで、Claudeの理解精度が上がり、追加質問を減らせます。
実践例:プロジェクトファイルの構造情報取得
あるプロジェクトでは、以下のように変わりました:
- 従来: package.json、tsconfig.json、全ソースファイル(合計5万文字)をテキストで貼り付け → 毎回5万文字消費
- MCP活用: MCPが「依存パッケージ一覧」「型定義一覧」「主要関数の署名」だけを抽出 → 毎回2千文字で済む
この工夫だけで、同じ回数のやり取りを続けても文字数は数十分の一になります。
また、複数の質問がある場合は1つずつAPIを呼び出すのではなく、まとめて処理することでトークン消費を約30%削減できる場合があります。
// 複数質問をまとめて処理する例
async function processBatchQuestions(questions) {
const batchPrompt = `
以下の${questions.length}個の質問に順番に答えてください:
${questions.map((q, i) => `${i + 1}. ${q}`).join("\n")}
`;
const message = await anthropic.messages.create({
model: "claude-3-5-sonnet-20241022",
max_tokens: 2048,
messages: [{ role: "user", content: batchPrompt }],
});
return message.content[0].text;
}
注意点・落とし穴
MCPの設定に時間がかかる
最初はツール設定に手間が必要です。急ぎの案件では従来のやり方が早いこともあります。「これから何度も使うプロジェクト」「継続的にメンテナンスが必要な大規模コード」向けの工夫と考えましょう。
MCPの呼び出し回数を制限する
無限ループを防ぐため、APIコールの最大回数を明示的に設定することが重要です。
// 最大リトライ回数を設定する例
const MAX_RETRIES = 3;
let retryCount = 0;
async function callMCPWithLimit(toolName, parameters) {
if (retryCount >= MAX_RETRIES) {
console.error("最大リトライ回数に達しました");
return null;
}
retryCount++;
console.log(`ツール呼び出し: ${toolName} (${retryCount}/${MAX_RETRIES})`);
return await mcp.invoke(toolName, parameters);
}
削減しすぎて文脈が不足する可能性
トークン削減を意識しすぎると、本来必要な情報まで削ってしまう場合があります。Claudeが「もう少し詳しく教えてください」と聞き返す場合は、むしろ情報が少なすぎるサイン。バランスが大切です。
MCPは手作り・カスタマイズが必須
汎用的なMCPもありますが、自分のプロジェクト特有のニーズに合わせるには、カスタマイズが必要なことがほとんど。JavaScript/Pythonの基礎スキルがあると導入しやすい。
外部サービスの課金も見落とさない
MCPでデータベースやクラウドストレージ、外部APIと連携する場合、それらのサービスでも別途課金が発生することがあります。事前に各サービスのコスト見積もりを立てておきましょう。
応用アイデア
予算上限と監視アラートを設定する
Anthropicダッシュボード(https://console.anthropic.com)の「Billing」セクションで月間利用上限を設定し、予算の50%・80%・100%に達した時点でメール通知を受け取るよう設定しておくと安心です。週次でトークン使用量と推定コストをレポート化し、前週比の変化を定期チェックする運用もお勧めです。
本番環境への段階的なロールアウト
MCPワークフローを本格利用する前に、テスト環境で使用パターンを検証します。ステージング環境ではAPIの予算上限を低く設定しておき、確認済みのワークフローだけを本番に展開することで、想定外の料金増加を事前に防げます。
チーム全体で削減戦略を共有する
1人が工夫したトークン削減方法をチーム内で標準化すれば、社全体の利用料を下げられます。
定期的にトークン使用ログを分析する
「先月のやり取りで何が一番文字を食ったか」を月1回レビューすると、新たな削減ポイントが見つかるかもしれません。
MCPを組み合わせて「専用AI開発助手」を作る
自社の開発フローに最適化したMCPを複数組み合わせると、外部の余計な質問なしに、ターゲットの情報だけを毎回自動取得するようになり、さらなる削減が期待できます。
出典
トークン削減の実践事例と数値(98%削減)は、複数の開発者がDev.toで共有しています。MCPの具体的な活用方法、トークン追跡の重要性、コンテキスト最適化のテクニックは、これらの記事と実装者の報告に基づいています。料金トラブルの事例(請求が3倍になった報告など)も、同様の実践者コミュニティからの情報を参考にしています。
あわせて読みたい
- Claude Codeでコンテキスト管理を効率化:メモリ管理の実践ガイド
- Claude CodeでJira調査を自動化する。MCPサーバーでツール連携を実現
- MCPを1クリックでインストール — JSONファイルの編集をスキップする方法
参考ソース
- Cut Claude Code Token Usage 98% with Purpose-Built MCPs
- I Kept Hitting Claude Token Limits Until I Tracked What Was Actually Burning Them
- The Token Tax Problem: How I Built a Super Memory Layer for AI Coding Assistants using LLM Wiki
- dotbabel `/handoff`: portable context across Claude Code, Codex, Copilot CLI, and Gemini CLI