今回は、ローカルLLMにClaude Codeの仕事を任せると費用が安くなるのかを、実際に測っていきたいと思います。
ローカルLLMというのは、自分のパソコンの中で動かすAIのことです。
今回はOllamaというソフトで、qwen3-4bという小さなAIを動かしました。
昔のブログ記事12本を5行ずつに要約する仕事を、3通りのやり方で、各3回やらせました。
12本を全部足すと、2万2,484字です。
MCPというのは、Claude Codeに外部の道具をつなぐための決まりのことです。
追加でかかった費用は、Claudeだけでやると$0.16でした。
MCP経由でローカルLLMに任せると$0.55、スクリプト経由だと$0.0046でした。

ローカルLLMに任せれば、Claudeの費用は安くなるのではないのかのう?

おやかたさまぁぁぁぁぁ!! 拙者が測ったところ、任せ方しだいで3.4倍に増えたり、35分の1に減ったりしたでござる
こんな方におすすめ
- Claude Codeの費用を減らしたくて、ローカルLLMの併用を考えている方
- MCPでローカルLLMをつないだものの、本当に得なのか測っていない方
- 自分の利用記録から、やり方ごとの費用を比べてみたい方
結論・全体像
同じ仕事でも、任せ方しだいで費用が大きく変わりました。
MCP経由でローカルLLMに任せると、Claudeだけでやるより費用が3.4倍に増えました。
スクリプト経由で任せると、費用は約35分の1に減りました。
追加費用の実額は、Claudeだけが$0.16、MCP経由が$0.55、スクリプト経由が$0.0046です。
1ドル150円と仮に置くと、約24円、約83円、1円未満です。
この金額は、使った量に公式の料金表の単価を当てはめた計算で、実際の請求額ではありません。
比べているのは費用だけで、要約の出来は比べていません。
ClaudeはSonnet 5.5というモデルで、ローカルLLMは小さなモデルです。
なので、要約の出来は同じではありません。
3つのやり方は、次のとおりです。
- Claudeだけ:Claudeが12本を読んで、自分で要約を書いて保存します
- MCP経由:Claudeが12本を読み、その本文をローカルLLMに渡して要約してもらい、返ってきた結果を保存します
- スクリプト経由:Claudeは、私が作った小さなプログラム(llmdo)を1回動かすだけです。読み書きはプログラムとローカルLLMが済ませます
MCP経由では、ask_local_llmという自作の道具を使いました。
この道具は、要約したい本文そのものを受け取る作りです。
追加費用は、「何もしない仕事」との差で出しています。
何もしない仕事というのは、簡単なコマンドを1回動かすだけの仕事のことです。
トークンというのは、AIが文章の量を数える単位です。
日本語だと、1文字がだいたい0.8トークンです。
何もしない仕事でも、$0.10かかります。
最初から約6.6万トークンの準備の読み込みが入るからです。
この$0.10はどのやり方でも同じなので、引いて比べています。
引く前の会話全体の金額は、Claudeだけが$0.26、MCP経由が$0.65、スクリプト経由が$0.10です。
測るときは、Claude Codeが別のAIに仕事を任せる機能(サブエージェント)を使いました。
1回ずつ新しい会話として動かしています。
費用はどこで差がついたのか
差がついたのは、本文がClaudeの会話を何回通ったかです。
Claudeだけだと、本文を読む1回だけです。
MCP経由だと、読んだ本文をClaudeが書き写してローカルLLMに渡すので、2回通ります。
スクリプト経由だと、本文はClaudeを1回も通りません。

本文を書き写して渡すとは、どういうことじゃ?

あの道具は、ファイルの場所ではなく、本文そのものを渡す作りなのでござる。Claudeが読んだ本文を、自分で書き写して渡したのでござる
Claudeが書いた量は、Claudeだけが約6千〜7千トークンでした。
MCP経由は、約2.7万〜2.8万トークンでした。
この量は、記録から計算で求めた推定値です。
Claudeは、読むよりも、書くほうが料金が高くなります。
Sonnet 5.5の単価は、100万トークンあたり、新しく読む分が$2.50、書く分が$10です。
書く分は、新しく読む分の4倍です。
| やり方 | 会話に増えた量(トークン) | 追加費用 |
|---|---|---|
| Claudeだけ | 約3.0万 | $0.16 |
| MCP経由 | 約5.5万 | $0.55 |
| スクリプト経由 | 約300 | $0.0046 |
| やり方 | 読む分の費用 | 書く分の費用 |
|---|---|---|
| Claudeだけ | $0.095 | $0.07 |
| MCP経由 | $0.273 | $0.28 |
| スクリプト経由 | $0.002 | $0.003 |
読む分には、最初に読んだ分と、あとで読み直した分が入っています。
MCP経由で増えた費用のうち、約半分は書く分でした。
スクリプト経由でClaudeに届いたのは、次の数行だけです。
llmdo: 12/12 ok model=qwen3-4b-q4:latest retried=0 137.8s local_tokens in=15068 out=1217
out: (保存先のフォルダ)
会話が続くと金額の差は広がる
仕事のあとも会話が続くと、金額の差は広がります。
Claudeは、返事をするたびに、それまでの会話を全部読み直しているからです。
読み直しは安く、新しく読む分の約12分の1です。
それでも、会話に増えた量が多いほど、毎回の読み直しが積み重なります。
| やり方 | 1ターンごと | 20ターン分 |
|---|---|---|
| Claudeだけ | $0.006 | $0.12 |
| MCP経由 | $0.011 | $0.22 |
| スクリプト経由 | $0.00006 | $0.001 |
1ターンというのは、私が話しかけて、Claudeが返事をする1往復のことです。
20ターン続くと、追加費用の合計は、Claudeだけが約$0.28、MCP経由が約$0.77です。
スクリプト経由は約$0.006です。
金額の差は広がりますが、倍率はMCP経由が約2.7倍に縮みます。
スクリプト経由は、約48分の1に開きます。
20ターンは、私が決めた仮の数です。
この表は、実際に会話を続けて測ったものではなく、計算です。
読み直しが安い単価になるのは、会話が5分以内に続いた場合です。
間が空くと、新しく読む分と同じ$2.50に戻ります。
時間はスクリプト経由のほうが短いのか
Claudeだけよりは短くならず、MCP経由よりは約64%短くなりました。
最短だったのは、Claudeだけの約51秒です。
| やり方 | 所要秒(3回の平均) | 3回の幅 |
|---|---|---|
| Claudeだけ | 51 | 48〜54 |
| MCP経由 | 256 | 202〜284 |
| スクリプト経由 | 93 | 51〜145 |
スクリプト経由の時間の大半は、ローカルLLMが12本を要約している時間でした。
llmdoが表示した時間は、1回目から順に137.8秒・76.4秒・43.2秒と、回ごとに短くなりました。
記録を足すだけだとMCP経由が安く見えた
Claude Codeは、使った量を記録として残しています。
その記録のとおりに足し算すると、MCP経由の追加費用は$0.31で、約45%も少なく出ました。
記録のまま足した追加費用は、Claudeだけが$0.11、MCP経由が$0.31、スクリプト経由が$0.0019でした。
MCP経由が、Claudeだけの2.8倍にしか見えませんでした。
おかしいと気づいたのは、MCP経由でClaudeが書いた量が、記録上は約3,500トークンしかなかったからです。
実際にClaudeが書いた文字数は、約3.2万字ありました。
3.2万字も書いて、3,500トークンで済むはずがありません。
調べると、サブエージェントの記録は、応答の22%(1,853件中414件)で、書いた量の最終値が残っていませんでした。
残っていない応答では、途中の小さな数字(数トークン)だけが残っていました。
ふだんの会話の記録は、直近73本の5,506応答のうち、1件だけでした。
そこで、書いた量を、別々の2つの方法で計算し直しました。
1つ目は、書いた文字数から求める方法です。
2つ目は、会話に増えた量から、読んだ分を引く方法です。
MCP経由の書いた量は、1つ目で約2.8万、2つ目で約2.7万トークンと、近い値になりました。
計算し直した追加費用は、MCP経由が$0.55、Claudeだけが$0.16で、3.4倍です。

帳簿を足し算しただけで安く見せるとは、何事じゃ!!

面目ないでござる。記録だけに頼らず、書いた文字数からも数え直したでござる
しくじり
記録を足し算しただけで、MCP経由の費用を約45%少なく見積もるところでした
- 症状: MCP経由の追加費用が$0.31と出て、Claudeだけ($0.11)の2.8倍にしか見えませんでした
- 原因: サブエージェントの記録は、応答によって、書いた量の最終値が残らないことがあります
- 避け方: 記録の「書いた量」を信じず、文字数と会話の増え方の2つで計算し直して、突き合わせます
- しくじり: 約3.2万字を書かせたのに、記録上は3千トークン台でした。写経した分が帳簿に載っていませんでした(^^)
再現手順
- 要約したい文章を12本用意します。今回は昔のブログ記事の本文で、合計2万2,484字です。
- パソコンでローカルLLMを動かします。今回はOllamaで、qwen3-4b-q4という小さなAIです。
- Claude Codeに、3つの指示を、1回ずつ新しい会話で出します。
- Claude Codeが残している利用記録のファイルから、読んだ量と書いた量を足し算します。
- 量に、公式の料金表の単価を掛けて金額にします。Sonnet 5.5の単価は、2026年10月1日に公式の料金ページで確認しました。
- 何もしない仕事(
echo okを1回動かすだけ)との差を、追加費用にします。 - 書いた量は、文字数と会話の増え方の2つの方法で計算し直します。
利用記録のファイルは、~/.claude/projects/ の下の subagents フォルダにあります。
同じ応答が何行も並ぶので、message.id が同じものは1回だけ数えます。
3つの指示は、次のとおりです。
- Claudeだけ:12本を読んで、自分で5行に要約して保存する。ReadとWriteだけを使う
- MCP経由:Readで読んだ本文を、
ask_local_llmのpromptに入れて要約させ、結果をそのまま保存する - スクリプト経由:プログラムを1回だけ動かし、結果の数行だけ確認する。ファイルの中身は読まない
ローカルLLMへの要約のお願いは、MCP経由とスクリプト経由で同じ文です。
次の文書を日本語の箇条書き5点に要約してください。各行は「- 」で始め60文字以内。箇条書き以外は出力しないこと。
私のllmdoは、次の10行ほどのプログラムに、失敗した時のやり直しと、形式のチェックを足したものです。
import glob, json, os, sys, urllib.request
src, out = sys.argv[1], sys.argv[2]
os.makedirs(out, exist_ok=True)
head = "次の文書を日本語の箇条書き5点に要約してください。各行は「- 」で始め60文字以内。箇条書き以外は出力しないこと。\n\n"
ok = 0
for f in sorted(glob.glob(os.path.join(src, "*.md"))):
body = {"model": "qwen3-4b-q4:latest", "prompt": head + open(f, encoding="utf-8").read(), "stream": False}
req = urllib.request.Request("http://localhost:11434/api/generate", json.dumps(body).encode(), {"Content-Type": "application/json"})
text = json.load(urllib.request.urlopen(req))["response"]
open(os.path.join(out, os.path.basename(f)), "w", encoding="utf-8").write(text)
ok += 1
print(f"{ok}/12 ok")
この10行ほどのプログラムだけでも、同じ12本で12本すべてが5行・60字以内に収まりました(98秒)。
デメリット・注意点
書いた量は、記録から計算した推定値です。
2つの計算方法の差は、MCP経由で3%、Claudeだけで14%(約7,200と約6,200)でした。
2つの方法の数字は、同じ9回の記録から決めています。
完全に別々の確認ではありません。
Claudeが頭の中で考えている分は、記録に見えません。
この分を0〜6千トークンの間で変えると、MCP経由の倍率は約3.0〜3.8倍の間で動きます。
2つの計算方法の差による幅は、Claudeだけが$0.157〜$0.166、MCP経由が$0.547〜$0.555です。
3回ずつのばらつきは、Claudeだけが$0.163〜$0.169です。
MCP経由は$0.523〜$0.572、スクリプト経由は$0.0045〜$0.0046でした。
何もしない仕事は1回だけ測りました。
9回とも、最初に読み直した量は39,499トークンで同じでした。
35分の1の分母は、$0.0046というとても小さな差です。
測ったのは、12本の要約という1種類の仕事と、Sonnet 5.5と、qwen3-4b-q4の組み合わせだけです。
要約は、読む量に対して書く量が少ない仕事です。
なので、MCP経由の倍率が大きく出やすい仕事です。
最初から入っている準備の読み込み(約6.6万トークン)は、引き算で消えています。
私がふだん使う会話の形とは違います。
要約の出来は採点していません。
確かめたのは、全108ファイルが5行・60字以内に収まっていたことです。
もう1つは、数字を含む201行すべてで、その数字が原文にあったことです。
電気代とGPUの購入費は、費用に入っていません。
スクリプト経由で作った要約をClaudeが読めば、その分だけ会話に増えます。
今回の12本の要約は、約1,200トークン(ローカルLLMの数え方)です。
claude -p で測る手もありますが、私の環境では認証が切れていて動きませんでした。
最後に
同じ要約でも、MCP経由は追加費用が3.4倍、スクリプト経由は約35分の1でした。
違いは、本文をClaudeに書き写させたか、Claudeを通さなかったかです。
まずは、本文をClaudeに読ませなくてよい仕事(要約・タグ付けなど)を1つ、スクリプトに回してみてください。
節約のはずが、実験のサブエージェント12本(準備・何もしない仕事・9回・検証)で、換算約$3.4かかりました(^^)
単価の出典は、公式の料金ページです。