Zenn Dev Ikahan Fa0c8f1b937639
「full なのに中身が欠ける」— MCP ツール lean-ctx の ctx_read で見つけたサイレントなデータ欠落バグ
日付: 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 env、execution→execなどに略語化される。 - 切り分け:
lean-ctx read CLAUDE.md -m full(CLI)はロスレス。MCP 経由のみロッシー。同じ full 指定でも経路だけ違って結果が割れる=MCP 応答パイプライン側のバグ。 - 修正: 6種の環境変数(
LCTX_NO_DEGRADE=1、LEAN_CTX_RAW=1等)を総当たりした結果、LEAN_CTX_COMPRESSION=offのみ有効。他は無効。MCP サーバーの env に設定し再起動が必要。 - 教訓: 圧縮・要約系 MCP ツールの出力を「逐語の根拠」にしてはいけない。検証は別経路(native read / CLI)で。
- upstream に Issue 起票済み(https://github.com/yvgude/lean-ctx/issues/404)。