コンテンツにスキップ
Zenn Dev Ikahan Fa0c8f1b937639

「full なのに中身が欠ける」— MCP ツール lean-ctx の ctx_read で見つけたサイレントなデータ欠落バグ

  • URL: https://zenn.dev/ikahan/articles/fa0c8f1b937639

  • 日付: 2026-06-14

  • Tier: Tier 3

  • 要旨: MCP ツール lean-ctx の ctx_read(mode="full") が「完全な内容を保証」と謳いながら行削除・単語略語化をするサイレントなデータ欠落バグを発見・修正した記録。CLI 経由と MCP 経由で結果が異なることで「MCP 応答パイプライン側のバグ」と特定。LEAN_CTX_COMPRESSION=off 環境変数のみが唯一有効だった。

詳細

  • 症状: CLAUDE.md を ctx_read(mode="full", fresh=true) で読むと箇条書き1行が消え、## User Environment## User envexecutionexec などに略語化される。
  • 切り分け: lean-ctx read CLAUDE.md -m full(CLI)はロスレス。MCP 経由のみロッシー。同じ full 指定でも経路だけ違って結果が割れる=MCP 応答パイプライン側のバグ。
  • 修正: 6種の環境変数(LCTX_NO_DEGRADE=1LEAN_CTX_RAW=1 等)を総当たりした結果、LEAN_CTX_COMPRESSION=off のみ有効。他は無効。MCP サーバーの env に設定し再起動が必要。
  • 教訓: 圧縮・要約系 MCP ツールの出力を「逐語の根拠」にしてはいけない。検証は別経路(native read / CLI)で。
  • upstream に Issue 起票済み(https://github.com/yvgude/lean-ctx/issues/404)。