Edison Watch

MCP Dependency Pinning

npx や uvx のようなパッケージランナーでインストールされる MCP サーバーのサプライチェーン保護。

Edison Watch は、MCP サーバーの依存関係を初回実行時に自動的にピン留めすることで、サプライチェーン攻撃を防ぎます。

目的

パッケージランナー (npxuvx) でインストールされる MCP サーバーは、依存関係が悪意を持って更新された場合、サプライチェーン攻撃に対して脆弱になる可能性があります。ピン留めにより次のことが保証されます。

  • 再現可能な実行: 毎回まったく同じコードが実行されます
  • 改ざん耐性: ロックファイルは安全に保存され、管理者の操作なしに変更できません
  • バージョン制御: 正確なパッケージバージョンがロックされ、予期しない更新を防ぎます

仕組み

  1. 初回実行時の解決: npxuvx を使用するサーバーが初めてマウントされるとき、Edison Watch は以下を行います。

    • 完全な推移的な依存グラフを解決します
    • ロックファイルを生成します (npm: package-lock.json、Python: uv.lock)
    • ロックファイルをローカルデータベースに安全に保存します
  2. エフェメラルランタイム: マウントのたびに:

    • 一時的なランタイムディレクトリを作成します
    • 保存済みのロックファイルから依存関係をインストールします (パッケージレジストリからではなく)
    • 分離されたランタイム環境からサーバーを実行します
  3. フェイルクローズ: ピン留めが失敗した場合 (ネットワークの問題、ロックファイルの破損)、サーバーは起動しません。これにより、ピン留めされていないコードが実行されないことが保証されます。

管理者コントロール

すべてのピン留め管理は管理者ダッシュボードから行います。

  • View Status: サーバー概要でピン留めされたパッケージバージョンと日付を確認します
  • Clear Pin: キャッシュされたロックファイルを削除して再ピン留めを強制します (パッケージ更新後などに便利)
  • Clear All Pins: すべてのサーバーのピンを一括で削除する操作

コマンドラインや環境変数の設定は必要ありません - セキュリティと監査可能性のため、すべてのコントロールは UI 駆動です。

On this page