Bu token'ların neredeyse hiçbiri benim yazdığım isteme ait değildi. Hepsi, claude.ai hesabıma bağlı MCP sunucularının araç tanımlarıydı. Komuta tek bir bayrak ekledim ve aynı adım 4.814 token ile 0,04 dolara indi.
Kısa cevap: MCP aracı kullanmayan her
claude -pçağrısına--strict-mcp-configekleyin.
claude -p "..." --tools "" --strict-mcp-config
Aşağıda sorunu kendi makinenizde nasıl göreceğinizi, neden olduğunu ve adımın ihtiyacına göre hangi ayarı seçmeniz gerektiğini anlatıyorum. Bütün ölçümler 14 Kasım 2026'da, Claude Code 2.1.325 ve Claude Opus 5.5 ile, claude.ai aboneliğiyle giriş yapılmış bir makinede yapıldı.
Sorunu kendi makinenizde görün
Aynı tek kelimelik istemi üç farklı ayarla çalıştırdım. Her biri "ok" yanıtı verdi, yani yapılan iş birebir aynıydı:
# 1) Yerleşik araçlar kapalı
claude -p "Say ok." --tools ""
# → 175.653 token, 1,41 dolar
# 2) Aynısı, --strict-mcp-config ile
claude -p "Say ok." --tools "" --strict-mcp-config
# → 3.180 token, 0,02 dolar
# 3) Web araçları açık, --strict-mcp-config ile
claude -p "Say ok." --tools "WebSearch,WebFetch" --strict-mcp-config
# → 4.543 token, 0,02 dolar
Fark 55 kat. Kendi rakamlarınızı görmek için komutun sonuna --output-format json ekleyip kullanım alanlarını ayıklayın:
claude -p "Say ok." --tools "" --output-format json \
| jq '.usage | {input_tokens, cache_creation_input_tokens, cache_read_input_tokens, output_tokens}, .total_cost_usd'
Yukarıdaki toplamlar bu dört alanın toplamıdır. İlk komutta 175.647 token'ın tamamı cache_creation_input_tokens alanındaydı, yani önbelleğe yazılan girdi. input_tokens ise yalnızca 2'ydi. Toplamın küçük bir input_tokens ile dev bir önbellek rakamından oluşması normal. Bu yüzden yalnızca input_tokens'a bakarsanız sorunu hiç fark etmezsiniz.
total_cost_usd, Claude Code'un API fiyatlarıyla yaptığı bir tahmin. Abonelikle çalışıyorsanız size fatura edilmez, ama aynı token'lar plan kullanımınızdan düşer.
O çağrıda hangi MCP sunucularının yüklendiğini görmek için çıktıyı akış biçiminde alın. İlk satırdaki system/init olayı sunucu listesini verir:
claude -p "Say ok." --tools "" --output-format stream-json --verbose \
| head -1 | jq '.mcp_servers'
--strict-mcp-config ile bu liste boş ([]) gelmeli.
Token'lar nereye gidiyor?
Claude'un bir aracı kullanabilmesi için o aracın tanımını görmesi gerekir: adı, ne işe yaradığı ve aldığı parametreler. Bu tanımlar her isteğin en başına eklenir. Bir MCP sunucusu bağladığınızda, sunucunun bütün araçları bu listeye girer.

Benim hesabımda birkaç claude.ai bağlayıcısı (connector) ve eklentilerle gelen birkaç sunucu bağlı. Sadece bir görsel üretim bağlayıcısının 150'den fazla aracı var. Bu bağlayıcıları Claude Code'a hiç eklemedim. claude.ai hesabıyla giriş yaptığınızda, orada eklediğiniz bağlayıcılar terminale de kendiliğinden gelir.
Normalde bu bir sorun değil, çünkü Claude Code MCP araçlarını erteler. Başta yalnızca araç adları gönderilir, tam tanım ancak Claude bir aracı kullanmak istediğinde ToolSearch adlı yerleşik araçla getirilir.
Tuzak tam burada. ToolSearch da yerleşik bir araç. --tools ile kendi listenizi verdiğinizde ve ToolSearch'ü bu listeye koymadığınızda erteleme kapanır. Claude Code bu durumda bütün MCP araçlarının tam tanımını her isteğe baştan yükler. MCP belgeleri bunu açıkça söylüyor, ama çoğu kişi tasarruf için --tools "" yazarken tam tersini yaptığının farkında değil. Ben de değildim.
İkinci yanılgı da şu: --tools MCP araçlarını hiç etkilemez. CLI referansına göre bu bayrak yalnızca yerleşik araçları sınırlar. Yani --tools "" "hiç araç olmasın" demek değil. Bu komut, yerleşik araçları kapatıp MCP araçlarının hepsini baştan yükletiyor.
Adımın neye ihtiyacı varsa onu verin
Çözüm her adım için aynı değil. Belirleyici soru şu: bu çağrı bir MCP aracı kullanacak mı?

MCP aracı gerekmiyorsa
Ne zaman: Metin üretme, özetleme, sınıflandırma ya da yalnızca web araması yapan adımlar.
claude -p "..." --tools "" --strict-mcp-config
claude -p "..." --tools "WebSearch,WebFetch" --strict-mcp-config
--strict-mcp-config, Claude Code'un .mcp.json, ~/.claude.json ve eklentilerden okuduğu bütün sunucuları atlar. Benim testimde claude.ai bağlayıcıları da dışarıda kaldı. Abonelik girişi çalışmaya devam ediyor, API anahtarı gerekmiyor.
Belirli bir MCP sunucusu gerekiyorsa
Ne zaman: Adım tek bir yerel ya da uzak sunucunun aracını çağırıyor.
claude -p "..." --strict-mcp-config --mcp-config ./sunucu.json
sunucu.json yalnızca o adımın ihtiyacı olan sunucuyu içerir. Biçim .mcp.json ile aynı:
{
"mcpServers": {
"uzak-arac": {
"type": "http",
"url": "https://mcp.example.com/mcp"
}
}
}
--strict-mcp-config diğer her şeyi keser, --mcp-config ile verdiğiniz sunucu ise yüklenir.
claude.ai bağlayıcısı gerekiyorsa
Ne zaman: Adım, claude.ai'da eklediğiniz bir bağlayıcının aracını çağırıyor.
claude -p "..." --tools "ToolSearch" --allowedTools "ToolSearch" "mcp__claude_ai_Ornek__arac_adi"
Burada --strict-mcp-config kullanamazsınız, çünkü bağlayıcıyı da keser. Yapmanız gereken, --tools listesine ToolSearch'ü eklemek. Böylece erteleme açık kalıyor ve araç tanımları yalnızca gerektiğinde yükleniyor. Aynı "Say ok." çağrısı bu ayarla 13.533 token tuttu. ToolSearch olmadan 175.653 token tutuyordu. --allowedTools ise adımın onay sormadan çağırabileceği araçları belirler.
Kendi aracımda nasıl düzelttim?
Aracım her Claude çağrısını tek bir Python fonksiyonundan geçiriyor. Düzeltme birkaç satırdan ibaret:
builtin = (["WebSearch", "WebFetch"] if web else [])
if mcp_tools:
builtin.append("ToolSearch") # bağlayıcı gerekiyor: ertelemeyi açık tut
cmd += ["--tools", ",".join(builtin)]
if not mcp_tools:
cmd += ["--strict-mcp-config"] # MCP gerekmiyor: hiçbir sunucuyu yükleme
if builtin or mcp_tools:
cmd += ["--allowedTools", *builtin, *(mcp_tools or [])]
Araçtaki adımların yalnızca biri bir claude.ai bağlayıcısı kullanıyor. O adım ToolSearch ile çalışıyor, geri kalan hepsi --strict-mcp-config ile.
Sonuç: aynı adım, 36 kat daha az token
Yazının başındaki kısa kontrol adımının iki gerçek çalıştırması:
- Düzeltmeden önce (13 Kasım): 174.289 token, 1,41 dolar. Bunun 173.347'si önbelleğe yazılan araç tanımlarıydı.
- Düzeltmeden sonra (14 Kasım): 4.814 token, 0,04 dolar.
Çok adımlı bir iş akışında bu fark her adımda tekrar ediyor. Araç tanımları adımın her turunda yeniden gönderildiği için, birkaç tur süren bir adım aynı yükü tur sayısı kadar taşıyor. Benim aracımda tek bir çalıştırmanın toplamı birkaç milyon token'a çıkıyordu ve bunun büyük kısmı hiç kullanılmayan araçların tanımlarıydı.
Bu davranış Claude Code sürümleri arasında değişebiliyor. Güncellemeden sonra yukarıdaki üç komutu bir kez daha çalıştırın. İki dakikanızı alır ve rakamlar size neyin değiştiğini hemen gösterir.
Sıkça Sorulan Sorular
API anahtarıyla çalışıyorsam bu sorun beni de etkiler mi?
Kısmen. claude.ai bağlayıcıları yalnızca abonelik girişinde gelir, API anahtarıyla gelmez. Ama projenizdeki .mcp.json ya da eklentilerle gelen sunucular yüklenir. ToolSearch kuralı giriş yönteminden bağımsız olarak geçerlidir. İlk komutla kendi rakamınızı ölçün.
--bare kullanmak daha iyi olmaz mı?
--bare MCP sunucularının yanında hook'ları, eklentileri ve CLAUDE.md dosyasını da atlar. Ama API anahtarı ister, abonelik girişini okumaz. Abonelikle çalışan bir script için --strict-mcp-config doğru seçim.
Önbellekten okunan token'lar da sayılıyor mu?
Evet. Önbellek okuması normal girdiden çok daha ucuzdur ama bedava değildir. Abonelikte de plan kullanımınızdan düşer. Önbelleğe yazma ise normal girdiden pahalıdır. Benim ilk ölçümümdeki 175 bin token tam olarak buydu.





