env/コンテキスト由来にすべきツール引数は、設定済み環境ではスキーマから外す(説明文では直らない)
MCP
API設計
LLM
AI協働
ツール設計
判断
運用
原則
MCP/関数ツールで、本来は環境変数やサーバー側コンテキストから解決すべきパラメータをスキーマに任意引数として出していると、LLM は「親切心で」セッション開始時などにリポジトリ名等を推測して埋めてしまう。優先順位が「引数 > コンテキスト > 環境変数」だと推測値が環境設定を上書きし、推測が外れれば not found、たまたまファジー一致すると別エンティティ(別プロジェクト/別テナント)の文脈を黙って返す—後者が最も危険。説明文の調整だけではモデルの埋める癖は直りにくい(実際多発する)。確実なのは、設定済み(env/コンテキストあり)と判定できる実行モードではそのプロパティをスキーマから丸ごと削除して LLM に advertise しない=埋める余地自体を消すこと。加えてハンドラの優先順位を env/コンテキスト > 引数 へ反転し、万が一スキーマをすり抜けても env が勝つ二重防御にする。env が無いモード(remote/マルチテナント)では従来どおり引数を必須表示にする。