【要約】PATをAIに触れさせずにDockerコンテナへ渡すMCPサーバーを自作した [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
AIエージェントを用いた開発フローを構築する開発者が、AIにpytestを実行させる際にPATの漏洩リスクという問題に直面した。具体的には以下の課題が存在する。
- ・コマンドライン引数でPATを渡すと、LLMのコンテキストにトークンが露出する恐れがある。
- ・既存のMCPサーバーには、環境変数をコンテナへ転送する機能が欠如している。
- ・一部のツールには自動アップデート機能があり、サプライチェーン攻撃の懸念がある。
// Approach
開発者は、セキュリティと実用性を両立するため、PythonとDocker SDKを用いて独自のMCPサーバーを開発した。主な手法は以下の通りである。
- ・
claude_desktop_config.jsonのenvからPATを受け取り、指定した変数のみをコンテナへ転送する。 - ・
git clone方式を採用し、リポジトリ全体をコンテナに持ち込むことで、未修正ファイルを含むテストを可能にする。 - ・長時間かかる処理に対し、バックグラウンド実行とポーリングによる非同期的な制御を導入する。
- ・Launcher modeにより、Claude Desktopを再起動せずにサーバーのみを更新可能にする。
// Result
この実装により、開発者はPATを隠蔽したまま、Dockerコンテナ内でのクリーンなテスト実行が可能となった。得られた成果は以下の通りである。
- ・PATがLLMのコンテキストに混入するリスクを完全に排除した。
- ・Dockerイメージの明示的な指定により、本番環境に近いテスト環境を再現できる。
- ・
git clone活用により、ソースコードのコンテキスト消費を抑え、トークンコストを削減した。 - ・ターミナル連携機能により、人間がリアルタイムでテストログを確認できる運用性を確保した。
Senior Engineer Insight
> セキュリティと開発体験(DX)のトレードオフを、アーキテクチャレベルで解決している点が評価できる。特に、PATの露出を防ぐための環境変数パススルーと、MCPの同期的な制約をポーリングで回避する設計は、実戦的な判断だ。また、Launcher modeによるプロセス管理は、開発時のフィードバックループを高速化させる優れた工夫である。ただし、自作ツールゆえのメンテナンス負荷には注意が必要だ。