zio-llm-proxy について
zio-llm-proxyは、Function Callingを介してOpenAIのチャットモデルと設定済みのローカルMCPサーバーを接続します。PIIを確認し、機密情報をモデルに渡すかどうかを利用者が選べるようにしたい場合に向いています。
主な機能
- 01Function CallingによるOpenAIモデル接続
- 02複数のローカルMCPサーバー設定
- 03正規表現によるPIIチェック
- 04機密情報の共有を利用者が判断
活用シーン
- 01チャットからファイルシステムMCPサーバーを呼び出す
- 02MCPサーバーの応答に含まれる機密情報を確認
MCP 対応
設定したローカルMCPサーバーをOpenAIのチャットモデルに接続し、利用可能なツールをFunction Callingでモデルに渡します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
プロジェクトの説明
このプロキシは、Function Calling を介して OpenAI のチャットモデルとローカル MCP サーバーを連携させ、機密データを検証するためのカスタム PII チェックを可能にします
ローカルでの実行
デフォルトの例は filesystem MCP サーバーで動作し、Docker イメージとして事前にインストールしておく必要があります。
ただし、data/McpConfig.conf ファイルを変更することで、任意の数の別の MCP サーバーを設定できます
- Docker Compose ファイルの
OPEN_AI_API_KEY変数に OpenAI API キーを設定します - Docker Compose ファイルの
SHARED_DIRECTORY_ABSOLUTE_PATH変数に、モデルと共有するフォルダーの絶対パスを設定します - docker compose up を実行します
- http://localhost:4173/ を開き、モデルとのチャットを開始します
MCP プロキシ MVP の仕様
- OpenAI モデルで MCP 呼び出しを行う機能を提供します
- LLM に渡すデータの PII チェックを実行します
- 機密情報を LLM と共有する許可をユーザーに求めます
- 認証機構はありません
- メトリクスはありません
- 厳密な SLA はありません
前提条件
- ツール呼び出しに対応した OpenAI チャットモデル。
トレードオフ
- アプリは状態を保持し、インメモリの永続化レイヤーを使用します。
- クラッシュまたは再起動が発生すると、ユーザーのワークフローは失われます
- アプリは水平スケーリングに対応していません
- サポートする MCP サーバーは設定で指定され、メモリ内に保存されます。
- 新しい MCP サーバーを追加するには再起動が必要です。
- PII 検出は英語のみをサポートします
- 機密データが見つかった場合、ユーザーが直接確認できる形では提供されません。
ユーザーにはデータが機密情報であることだけが通知され、LLM へのアクセスを許可するか拒否するかを選択できます - MCP サーバーから取得したデータがコンテキストウィンドウに収まらない場合、アプリはユーザーにエラーを返し、対話を停止します
成功時のシーケンス図全体
sequenceDiagram
autonumber
participant User
participant Proxy
participant LLM
participant MCP
participant PII
User ->> Proxy : Send Message to LLM
Proxy ->> LLM : Send user message + tool list
LLM ->> Proxy : Send request to use tools
Proxy ->> MCP : Call needed tools
MCP ->> Proxy : Return results
Proxy ->> PII: Test data
PII ->> Proxy: Send test results
Proxy ->> User: Ask to share data
User ->> Proxy: Give access
Proxy ->> LLM : send message with tool results
LLM ->> Proxy : send final response
Proxy ->> User: send final response
ユーザーが機密情報の共有を望まない場合、対話全体が停止します。
sequenceDiagram
autonumber
participant User
participant Proxy
participant LLM
participant MCP
participant PII
Proxy ->> PII: Test data
PII ->> Proxy: Send test results
Proxy ->> User: Ask to share data
User ->> Proxy: Do not give access
Proxy ->> User: Send acknowledge
MCP の注入
- 利用可能な MCP サーバーに関するデータは、Function Calling を使用してモデルに提供されます
- モデルとのやり取りには、公式 Java SDK でサポートされている Tools 機能を使用します
- MCP サーバーとの通信には、公式 MCP Java SDK を使用します
PII モジュール
- PII チェックは正規表現に基づき、将来的な拡張に備えてカプセル化されます
- PII モジュールはデータが機密情報かどうかを確認するだけで、リクエストからデータをマスキングまたは削除することはありません
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。