Claude Code のコスト削減術:システムプロンプトキャッシュとローカル MCP の実戦活用
Claude Code のコスト削減、実はこんなに簡単
ChatGPT や Gemini と異なり、Claudeには賢い節約機能が組み込まれています。毎日 Claude Code を使う開発者にとって、月々の料金を大きく減らせるテクニックが2つあります。
ひとつめはシステムプロンプトキャッシュ。毎回同じシステムプロンプトを送っていると、その度に料金が発生します。キャッシュを使えば、2回目以降の同じプロンプト部分は割引価格(10分の1)で済みます。
ふたつめはローカル MCP サーバー。4000ファイルもあるリポジトリで Claude Code が関数名を間違えることってありませんか。ローカル MCP で正確な情報を直接提供すれば、無駄な試行錯誤が減り、結果として生成AI への問い合わせ回数を減らせます。
両方を組み合わせれば、実務レベルでの大幅なコスト削減が実現できます。
システムプロンプトキャッシュの仕組みと効果
キャッシュで料金が10分の1に
Claudeの公式ドキュメントによると、同じシステムプロンプトを何度も使う場合、最初の1回目は通常料金で処理されます。2回目以降、同じプロンプト内容であれば、キャッシュされた部分の料金は10分の1に引き下げられます。
例えば、バッチ処理で毎日100件のデータを変換する仕事を想像してください。毎回「以下の形式でデータを変換してください」というシステムプロンプトを付けていると、その部分は100回分、通常料金が発生します。キャッシュを使えば、1回目だけ通常料金、残り99回は割引で済みます。
実装例:共有 Claude クライアント
Dev.to に投稿されたブログでは、システムプロンプトキャッシュを活用した共有 Claude クライアントの例が紹介されています。バッチ ETL(データの一括変換)処理で、同じシステムプロンプトを複数のジョブが共有する構成です。
具体的には、Python や JavaScript から Claudeに問い合わせるときに、プロンプトの先頭に cache_control: ephemeral という指示を付けます。これにより、そのプロンプト部分はクラウド側でキャッシュされ、次回以降は割引扱いになります。
バッチ処理やスケジュール実行が多い環境では、この手法で月々の請求を大幅に圧縮できます。実務で月1000万円以上のコスト削減につながる例も報告されています。
ローカル MCP で無駄な試行錯誤を削減
関数名の幻想回答を防ぐ
大規模なコードリポジトリで Claude Code を使うと、時々「この関数は存在しない」という関数を呼び出してしまうことがあります。4000ファイル以上あるプロジェクトだと、AI も全てを正確に記憶できず、あるいは学習データと異なる命名規則なら間違える可能性があります。
ローカル MCP(モデルコンテクストプロトコル)サーバーを立ててみましょう。リポジトリ内の全関数名、クラス定義、APIエンドポイントなどの「正確な情報」を、Claude に直接渡す仕組みです。
実装のポイント
Dev.to の記事では、4000ファイルのリポジトリで MCP サーバーを運用した例が載っています。
まず、リポジトリ内の全ファイルをスキャンして、関数名やクラス名を JSON や CSV 形式にまとめます。次に、その情報をローカル MCP サーバーで公開します。Claude Code が何か処理を頼むとき、MCP サーバーに「この関数って存在しますか」と問い合わせる流れです。
結果として:
- 存在しない関数を呼ぶミスがなくなる
- 「あるはずだけど名前が分からない」という試行錯誤が減る
- Claude への問い合わせ回数そのものが減り、自動的にコストダウン
ローカルだから、APIキーも漏れず、プライベートな情報も社外に出ません。
Opus か Haiku か、モデル選択でも節約
料金効率の良い組み合わせ
Dev.to に投稿された記事では、Claude Opus と Haiku の使い分けについて詳しく説明されています。
Opus は高精度ですが料金も高め。Haiku は軽めで安い。両方を組み合わせるのが得策です。
例えば:
- 複雑な設計や難しい問題分析 → Opus
- 単純なデータ変換、コード補完 → Haiku
前述のバッチ ETL の例では、Haiku とシステムプロンプトキャッシュを組み合わせることで、月々のコストを大幅に減らしつつ、品質を保っていました。
小さなタスクが大量にある場合は、Haiku + キャッシュの組み合わせで月々の請求が数分の一に圧縮される可能性があります。
ローカル実行で機械を活かす
24時間回し続けるなら
別の記事では、Claude Code を2015年の MacBook で24時間連続実行した事例も報告されています。古い機械でも、効率的な実装なら十分に動作します。
大量のバッチ処理や監視タスクを API 経由で回す場合、クラウド側の料金だけでなく、ローカル実行の工夫も合わせると、トータルコストはさらに削減できます。
注意点と落とし穴
キャッシュの有効期限
システムプロンプトキャッシュは、一度キャッシュされると5分間は有効です。5分以内に同じプロンプトで問い合わせれば割引が続きます。それを過ぎると新しくキャッシュされ、また最初のリクエストは通常料金になります。
高頻度で同じプロンプトを使う場合は割引が効きやすい。逆に、1日に1回だけ使う場合は、キャッシュの恩恵をあまり受けられません。
MCP サーバーの保守
ローカル MCP で関数情報を提供する場合、リポジトリに新しい関数が追加されたら、MCP サーバー側も更新する必要があります。情報が古いままだと、「このクラスは存在しません」と言われて、かえって混乱することもあります。
定期的に(例えば毎日朝)MCP サーバーのデータを再生成するスクリプトを仕込んでおくと安心です。
情報の正確さ
MCP で提供する情報が間違っていれば、Claude も間違った判断をします。関数のシグネチャ(引数や戻り値の型)が複雑な場合は、簡潔に説明することで、むしろ AI の理解が深まることもあります。
応用アイデア:チーム全体での活用
複数の開発者がいるチームなら、キャッシュと MCP をもっと活かせます。
例えば、チーム全体で使う「データベーススキーマの説明」をシステムプロンプトに含めておけば、全員で自動的に割引を受けられます。ローカル MCP で「開発環境のAPIエンドポイント一覧」を公開すれば、新しいメンバーも迷わずに開発できます。
また、同じ会社内のプロジェクトなら、キャッシュの有効期限内に複数のジョブが次々と走れば、その分割引が重複して適用される可能性があります。
出典
参考ソース
- How I built a shared Claude Haiku client with system-prompt caching for batch ETL
- How to Decrease LLM Costs with Claude Opus: A Practical Cost Optimization Strategy
- How I run Claude Code 24/7 on a 2015 MacBook — the framework that survived 6 months
- How I stopped Claude Code from hallucinating function names on a 4,000-file repo (with a local MCP server)