今回は、ローカル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千トークン台でした。写経した分が帳簿に載っていませんでした(^^)

再現手順

  1. 要約したい文章を12本用意します。今回は昔のブログ記事の本文で、合計2万2,484字です。
  2. パソコンでローカルLLMを動かします。今回はOllamaで、qwen3-4b-q4という小さなAIです。
  3. Claude Codeに、3つの指示を、1回ずつ新しい会話で出します。
  4. Claude Codeが残している利用記録のファイルから、読んだ量と書いた量を足し算します。
  5. 量に、公式の料金表の単価を掛けて金額にします。Sonnet 5.5の単価は、2026年10月1日に公式の料金ページで確認しました。
  6. 何もしない仕事(echo ok を1回動かすだけ)との差を、追加費用にします。
  7. 書いた量は、文字数と会話の増え方の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かかりました(^^)

単価の出典は、公式の料金ページです。

Claudeの料金ページ(公式)