PrivAgents: Agents and MCP servers for Confidential AI Workflows について
PrivAgentsは、同型暗号を使って機密データを処理するエージェント向けフレームワークです。プライバシー重視のワークフローを対象とし、デバイス上のOllamaまたはクラウドのOpenAIエージェントとMCPサーバーを組み合わせます。
主な機能
- 01入力データの同型暗号化
- 02暗号化データの類似度計算
- 03結果のローカル復号
- 04OllamaとOpenAIエージェントに対応
- 05デバイス上またはクラウドでの実行
活用シーン
- 01元データを開示せずに映画の好みを照合
- 02医療や金融の機密データを分析
- 03暗号化されたパーソナライズ処理の構築
MCP 対応
MCPサーバーは暗号化データの類似度を計算し、暗号化された結果を返します。エージェントはデバイス上で入力を暗号化し、結果を復号します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PrivAgents:機密性の高い AI ワークフローのためのエージェントと MCP サーバー
PrivAgents は、デバイス上とクラウドの両方で動作する自律型エージェントが、トラストレスな MCP サーバーを通じて安全なデータ処理を実行し、完全な機密性を確保できることを示す、プライバシーを最優先にしたフレームワークです。プライバシー強化技術(PET)、ここでは**準同型暗号(HE)**を活用し、生の情報に一切アクセスすることなく、暗号化されたデータを計算します。
対話型エージェントのインターフェースを通じて、ユーザーデータはデバイス上で暗号化され、安全な処理ユニット(MCP)に送信されます。結果は暗号化された状態で返され、ローカルで復号されます。これにより、医療、パーソナライゼーション、金融などの機密性が求められる環境に適した、安全でインテリジェントなシステムを実現します。
🔐 PrivAgents を選ぶ理由
デバイス上のモデルはプライバシーを保護できますが、多くの場合、性能に限界があります。クラウドモデルは高い性能を発揮しますが、信頼性への懸念があります。PrivAgents は、両者の長所を組み合わせることで、この課題を解決します。
- 計算能力や信頼性の要件に応じて、デバイス上またはクラウドベースのエージェントを選択できます
- 準同型暗号により、処理中もデータのプライバシーを保護します
- モジュール式の MCP サーバーがバックエンドで暗号化された類似性計算を実行します
- 安全なデータのやり取りを実現する、エンドツーエンド暗号化パイプライン
⚙️ 対応エージェント
- ✅ ローカルモデルを使用したデバイス上の推論向け Ollama Agent
- ✅ API を介したクラウドベースのインテリジェンス向け OpenAI Agent
プライバシー要件と利用可能なリソースに応じて、エージェントの種類を選択してください。
🧠 アーキテクチャの概要
+------------------------+
| User Device |
| (Agent + Encryption) |
+------------------------+
| Encrypted Input
v
+------------------------+ ← Secure Channel →
| MCP Server | (Encrypted Similarity Calculation)
+------------------------+
| Encrypted Result
v
+------------------------+
| User Device (Decrypt) |
+------------------------+
📁 プロジェクト構成
PrivAgents/
│
├── agent/ # Ollama and OpenAI agent implementations with PET tools
├── mcp/ # Encrypted processing logic for similarity-based analysis
├── utils/ # Context setup, encryption helpers
├── data/ # Sample inputs and encrypted output files
└── .env # Configuration for ports and logging
🚀 はじめに
1. クローンしてセットアップする
git clone https://github.com/UvrajSB/PrivRec.git
cd PrivRec
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
2. MCP サーバーを起動する
ルートディレクトリから実行します。
PYTHONPATH=. python mcp/server.py
3. エージェントを実行する
- Ollama Agent(ローカル実行)
PYTHONPATH=. python agent/ollama_mcp_agent.py
- OpenAI Agent(クラウド実行)
PYTHONPATH=. python agent/openai_mcp_agent.py
各エージェントはユーザー入力を暗号化して、暗号化された類似性計算のために送信し、応答をデバイス上でプライベートに復号します。
🎬 映画の好みのマッチング:エンドツーエンドで暗号化されたパーソナライゼーション
映画の好みのマッチングのユースケースは、ユーザーデータを平文で参照することなく、プライバシーを保護するレコメンデーションシステムが機能することを実証するものです。ユーザーの好みを暗号化し、安全な類似性計算を実行して、パーソナライズされた結果を提供するという、準同型暗号のエンドツーエンドでの活用を示します。その間、生データが露出することはありません。
🔁 ワークフローの概要
-
ユーザーが映画の好みベクトルを入力します
ユーザーに、さまざまなジャンル(例:アクション、ロマンス、SF)を評価するか、優先順位を付けてもらいます。たとえば、次のようになります。[8, 2, 9] → represents user's preference intensity across three genres. -
エージェント側で暗号化します
エージェント(Ollama ベースまたは OpenAI ベース)は TenSEAL を使用し、BFV 方式で好みベクトルを準同型暗号化します。その結果は暗号化されたテンソルとなり、サーバーにも読み取れません。 -
MCP サーバーで暗号化された類似度を計算します
- MCP サーバーには、あらかじめ定義された映画プロフィールのコレクションがあります。各プロフィールは平文のベクトルで表されます。
MOVIES = { "Inception": [9, 1, 8], "The Notebook": [1, 9, 2], "Interstellar": [8, 2, 9], "The Godfather": [7, 5, 4] } - 暗号化されたユーザーベクトルと、それぞれの平文の映画プロフィールとの間で、暗号化された類似度計算を実行します。
- ユーザーベクトルを復号せず、暗号化された状態で内積を使って類似度を計算します。
- MCP サーバーには、あらかじめ定義された映画プロフィールのコレクションがあります。各プロフィールは平文のベクトルで表されます。
-
暗号化された結果が返されます
サーバーは、すべての映画の暗号化された類似度スコアをファイルに書き込みます。たとえば、次のようになります。data/interest_results -
ユーザーデバイスで復号します
エージェントは暗号化された結果を読み込み、元のコンテキストと鍵を使ってローカルで復号します。復号されたスコアは、それぞれの映画がユーザーの好みにどの程度合っているかを示します。 -
任意:結果を順位付けして表示します
エージェントはスコアを並べ替え、類似度に基づく上位の映画をおすすめとして表示できます。その間、ユーザーの入力や好みがサーバーに知られることはありません。
📦 メリット
- ✅ ゼロトラストが不要:サーバーはユーザーデータを一切参照しません
- ✅ エージェントを選びません:デバイス上の LLM エージェントとクラウドベースの LLM エージェントのどちらにも対応します
- ✅ 拡張可能:より複雑なユーザープロフィールや、音楽、ショッピング、ヘルスケアなどの追加分野にも対応できます
- ✅ 学習に役立ちます:準同型暗号の仕組みを、実践的な状況で示します
👥 コントリビューション
PET を使って安全でインテリジェントなシステムの構築に関心がありますか?エージェントのロジックの拡張、新しい暗号化ワークフローの実験、MCP レイヤーの改良など、どのような貢献も歓迎します。リポジトリをフォークして、さっそく始めてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。