privateGPT MCP Server

by Fujitsu-AI

Integrations

  • Includes .NET client implementations in C# for interacting with the privateGPT MCP server from .NET applications.

  • Includes C++ client implementations for communicating with the privateGPT MCP server, supporting all available functionalities from C++ applications.

  • Provides client implementations for interacting with the privateGPT MCP server using JavaScript, allowing for chat functionality, source management, and user administration.

目次

プライベートGPT MCPサーバー

モデルコンテキストプロトコル(MCP)サーバー実装。これにより、privateGPTをMCPクライアントのエージェントとして使用できます。これにより、privateGPTの強力な機能とMCP対応アプリケーションとのシームレスな統合が可能になります。

MCPとは何ですか?

MCPは、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPはAIアプリケーション用のUSB-Cポートのようなものだと考えてください。USB-Cがデバイスを様々な周辺機器やアクセサリに接続するための標準化された方法を提供するのと同様に、MCPはAIモデルを様々なデータソースやツールに接続するための標準化された方法を提供します。

なぜMCPなのか?

MCPは、LLM上にエージェントと複雑なワークフローを構築するのに役立ちます。LLMはデータやツールとの統合が頻繁に必要となりますが、MCPは以下の機能を提供します。

  • LLM に直接接続できる、あらかじめ構築された統合のリストが増えています
  • LLMプロバイダーとベンダーを切り替える柔軟性
  • インフラストラクチャ内でデータを保護するためのベストプラクティス

仕組み

MCP は基本的に、ホスト アプリケーションが複数のサーバーに接続できるクライアント サーバー アーキテクチャに従います。

  • MCP ホスト: MCP を介してデータにアクセスするアプリケーション、Claude デスクトップ、IDE、AI ツールなどのプログラム
  • MCPクライアント: サーバーとの1:1接続を維持するプロトコルクライアント
  • MCP サーバー: 標準化されたモデル コンテキスト プロトコルを通じて特定の機能を公開する軽量プログラム
  • ローカル データ ソース: MCP サーバーが安全にアクセスできるコンピューターのファイル、データベース、サービス
  • リモート サービス: MCP サーバーが接続できるインターネット経由 (API 経由など) で利用可能な外部システム

概要

このサーバーは、MCP クライアントと privateGPT API 間のブリッジを提供し、次のことが可能になります。

  • パブリックとプライベートの両方のナレッジベースを使用して privateGPT とチャットする
  • 知識ソースの作成と管理
  • ソースをグループに整理する
  • グループベースの権限によるアクセス制御

エージェントの理由

LLM (大規模言語モデル)およびMCPサーバーにおけるエージェントは、言語モデルとアプリケーション間の仲介役として機能する特殊なソフトウェアコンポーネントです。リクエストの処理、MCPを介したLLMとのやり取り、ワークフローの管理、システム全体のセキュリティと効率性の確保など、様々なタスクを処理します。エージェントを活用することで、複雑なAIベースのアプリケーションを、効果的で安全かつスケーラブルに設計できます。このリポジトリにあるエージェントのコードは、独自のソリューションやアプリケーションに実装するために使用できます。

エージェント、LLM、MCP サーバー間の相互作用

これらのコンポーネントの相互作用により、強力でスケーラブルかつ安全なAIアプリケーションの開発が可能になります。以下は、この相互作用を示す簡略化されたシナリオです。

  1. **ユーザー入力:**ユーザーは、MCP サーバーでホストされているユーザー インターフェイスを通じてリクエストを送信します。
  2. エージェント処理: MCP サーバー上のエージェントがリクエストを受信し、検証し、LLM 用に準備します。
  3. **LLM 相互作用:**エージェントは要求を LLM に転送し、LLM は応答を生成します。
  4. **応答処理:**エージェントは LLM からの応答を受信し、必要に応じてさらに処理 (フォーマット、他のデータ ソースとの統合など) し、ユーザーに返します。
  5. **セキュリティとログ記録:**このプロセス中、エージェントはインタラクションを監視し、セキュリティ ポリシーが遵守されていることを確認し、後で分析するために関連情報をログに記録します。

この文脈でエージェントを使用する利点

  • **モジュール性:**エージェントにより責任が明確に分離され、システムの保守と拡張が容易になります。
  • **セキュリティ:**アクセスの集中管理とアクティビティの監視により、セキュリティ リスクを最小限に抑えることができます。
  • **効率:**自動化されたエージェントは、手動のプロセスよりも迅速かつ一貫してタスクを実行できます。
  • **柔軟性:**エージェントは、新しい機能やビジネス要件の変更をサポートするために簡単に適応または拡張できます。

パスワード暗号化の重要性

機密データを扱うアプリケーションでは、セキュリティが最優先事項です。このサーバーは、2つの重要な認証情報セットを管理します。

  1. **プロキシ ヘッダー:**たとえば、HAProxy によってトラフィックの認証と管理に使用されます。
  2. **LLM アクセス パスワード:**大規模言語モデルへのアクセスを保護するために使用されます。

これらのパスワードを平文で保存すると、不正アクセスやデータ漏洩の可能性など、重大なセキュリティリスクが生じます。これらのリスクを軽減するには、パスワードを暗号化し、システム内では暗号文のみを扱うことが不可欠です。

暗号文のみを使用する利点

  • **強化されたセキュリティ:**攻撃者が構成ファイルまたは環境変数にアクセスした場合でも、対応する復号化キーがなければ暗号化されたパスワードは解読できません。
  • **コンプライアンス:**暗号化は、機密情報の保護を義務付けるセキュリティ標準および規制を遵守するのに役立ちます。
  • **整合性:**パスワードが改ざんされないことを保証し、認証メカニズムの整合性を維持します。

安全

データ保護とクライアントアプリケーションとサーバー間の安全な通信を確保するために、以下のセキュリティ機能が実装されています。これらの機能は、暗号化、復号化、キー管理、トランスポートセキュリティをカバーしています。


1. トランスポート層セキュリティ(TLS)

  • クライアントとサーバー間の通信を保護するために、TLSを有効にすることができます。クライアントとサーバー間で送信されるすべてのデータは、TLS(バージョン1.2以上)を使用して暗号化されます。

クライアントとサーバー間で TLS を有効にする必要があるのはなぜですか?

a.通信の暗号化

  • TLS(トランスポート層セキュリティ)は、クライアントとサーバー間で送信されるすべてのデータが暗号化されることを保証します。これにより、パスワード、クレジットカード情報、個人データなどの機密情報が盗聴攻撃(中間者攻撃)から保護されます。

b.データの整合性

  • TLSは、送信データが変更されず、改ざんされていないことを保証します。整合性チェックにより、受信データが送信時と全く同じであることが保証されます。

c.認証

  • TLSは、デジタル証明書を介してサーバー(およびオプションでクライアント)の安全な認証を可能にします。これにより、ユーザーが偽のウェブサイトでフィッシング攻撃の被害に遭うことを防ぎます。

d.中間者攻撃に対する保護

  • TLSは接続を暗号化するため、攻撃者によるトラフィックの傍受や操作はほぼ不可能になります。TLSがなければ、攻撃者はデータパケットを傍受して改ざんする可能性があります。

e.セキュリティ基準および規制の遵守

  • 多くの規制要件(GDPR、PCI-DSSなど)では、安全なデータ転送が義務付けられています。TLSは、これらのセキュリティ要件の基本的なコンポーネントです。

f.ダウングレード攻撃とリプレイ攻撃の防止

  • TLS は、接続を安全でないバージョンにダウングレードしようとする攻撃 (ダウングレード攻撃) や、以前に有効だった要求を再生しようとする攻撃 (リプレイ攻撃) から接続を保護します。

結論

クライアントとサーバー間のTLSの有効化は、データのプライバシー、セキュリティ、そして通信の整合性を確保するために不可欠です。機密情報を保護するだけでなく、コンプライアンス要件の遵守とユーザーの信頼の向上にも役立ちます。


2. パスワードの暗号化

パスワードはRSA(Rivest-Shamir-Adleman)公開鍵暗号方式を使用して暗号化できます。これにより、ユーザーパスワードなどの機密データが平文で送信されることがなくなります。

方法

  • 2048 ビットのキー長を持つ公開キー暗号化
  • パディング: セキュリティを強化し、既知のパディング攻撃を防ぐためのRSA_PKCS1_PADDING

プロセス

  1. サーバー管理者はnode security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pemを実行して、サーバーの公開鍵 ( id_rsa_public.pem ) を使用してクライアントのパスワードを暗号化し、暗号化されたパスワードをクライアントに渡します。
  2. 代替案:クライアントは、 keygen関数を用いて、サーバーの公開鍵( id_rsa_public.pem )でパスワードを暗号化します。そのため、サーバーの設定( privateGPT.env.json )でこの関数を有効にする必要があります。重要:この関数を使用すると、ネットワーク経由でデータが送信されます。そのため、データトラフィックが安全であり、傍受されないことを確認してください。
  3. 最後に、暗号化されたパスワードはサーバーに送信され、サーバーの秘密鍵を使用して復号化されます。

利点

  • 非対称暗号化により、サーバーのみがパスワードを復号化できるようになります。
  • 通信チャネルが侵害された場合でも、暗号化されたデータは安全なままです。

3. キー管理

データ通信と暗号化プロセスを安全にするために、次のキー管理原則に従います。

公開鍵

  • サーバー ( id_rsa.pub ) に安全に保存されます。
  • 暗号化にのみ使用され、公開されてもセキュリティ上のリスクはありません。

PEMキー

  • サーバー上に安全に保存されます ( id_rsa_public.pem )。
  • パブリック証明書を使用して作成する必要があります(サーバー構成を参照)

秘密鍵

  • サーバー上に安全に保存されます ( id_rsa )。
  • 適切なファイル権限によるアクセス制限 ( chmod 600 )。
  • 復号化操作にのみ使用されます。

キーローテーション

  • キーは定期的に、またはセキュリティインシデントの検出時にローテーションできます。重要:キーが再発行されると、クライアントまたはAIエージェントはMCPサーバーへのアクセスを直ちに失い、新しいRSAキー(暗号化パスワード)が必要になります。
  • 古いキーは安全に無効化されます。

4. サーバー上での復号

復号化は秘密鍵を使用してサーバー上でのみ実行されます。

プロセス

  1. サーバーはクライアントから暗号化されたパスワードを受信します。
  2. 秘密鍵はパスワードを復号化して元の平文を取得します。
  3. 復号化されたパスワードは内部的に使用され(認証など)、プレーンテキストで保存されることはありません。

安全な取り扱い

  • 復号化されたパスワードは、処理中のみメモリ内に存在します。
  • 安全なメモリ管理の実践により、機密データは使用後すぐに消去されます。

証明書の検証

  • サーバーとクライアントの信頼性を保証するために、証明書は両側で検証されます。
  • オプションで、相互 TLS を有効にしてセキュリティを強化することもできます。

5. 認証トークン

トークンはリクエストを認証し、許可されたユーザーだけがシステムにアクセスできるようにするために使用されます。

トークン管理

  • ログインが成功するとトークンが生成されます。
  • これらは有効期間が短く、事前に定義された時間が経過すると自動的に期限切れになります。
  • トークンは HMAC または RSA を使用して署名されるため、改ざん防止になります。

6. キー生成(Keygen)の制限

システムの不正使用を防ぐため、キー生成 ( keygen ) は制限されています。

構成

  • サーバーには、キー生成を有効または無効にする構成オプション ( ALLOW_KEYGEN ) があります。
  • 無効になっているときに keygen 関数を呼び出そうとすると、エラー メッセージが表示されます。

監査ログ

  • すべてのキー生成操作は、監査および監視の目的でログに記録されます。

7. 証明書ベースのアクセス制御(CBAC)

  • 証明書認証が有効になっている場合、エージェントはパスワードを必要とせず、キーを使用してサーバーにログオンするため、自動的にこのサーバーにロックされます。別のMCPプライベートGPTサーバーにログインしようとすると、キーがサーバーのプライベート証明書と照合されるため、ログイン試行は拒否されます。

特徴

  • keygenstore_useredit_sourceなどの機能は、承認されたロールのみがアクセスできます。
  • 不正なアクセス試行は詳細なエラー メッセージとともに拒否されます。

構成

  • 有効または無効にする機能は、サーバーの構成 ( Functionsオブジェクト) で指定できます。

8. 安全な構成

サーバー構成には、セキュリティ関連のオプションがいくつか含まれています。

SSL_VALIDATE

  • 安全な通信を確保するために SSL/TLS 証明書を検証します。
  • 環境要件 (テストと本番など) に基づいて有効化または無効化できます。

PW_ENCRYPTION

  • パスワードの暗号化を有効または無効にします。
  • 暗号化が実行できない環境での互換性を確保します。

9. ログ記録と監視

すべてのセキュリティ関連イベントは監視とトラブルシューティングのために記録されます。

記録されたイベント

  • ログイン試行に失敗しました。
  • キー生成要求。
  • 不正アクセスの試み。
  • 暗号化および復号化エラー。

まとめ

実装されたセキュリティ機能により、次のことが保証されます。

  • 暗号化と安全な転送による機密データの機密性
  • 堅牢なキー管理とトークン検証を使用した操作の整合性
  • システム機能に対するロールベースの構成可能なアクセス制御
  • セキュリティの脅威をプロアクティブに検出して対応するための包括的な監視

これらの対策により、クライアントとサーバー間の通信とデータ処理のための安全な環境が提供されます。

privateGPTサーバーの機能概要

privateGPTサーバーは、モデルコンテキストプロトコル(MCP)との効率的、柔軟、かつ安全な通信を実現するために設計された堅牢な機能セットを提供します。以下は、サーバーで利用可能な主要な機能の概要です。


主な特徴

1.認証と承認

  • ログイン機能: 電子メールとパスワードでユーザーを認証し、アクセス トークンを生成します。
  • ログアウト機能: ユーザー トークンを安全に無効にしてセッションを終了します。

2.チャット管理

  • チャットを開始する: オプションでパブリック ナレッジ ベースまたは特定のグループ コンテキストを使用して、サーバーとの会話を開始します。
  • チャットを続行する: チャット ID とフォローアップ メッセージを指定して、進行中の会話を再開します。
  • チャット情報の取得: ID によって特定のチャットのメタデータとメッセージを取得します。
  • すべてのチャットを削除: 実行ユーザーの以前のチャット履歴(チャット履歴)を削除します。
  • チャットの削除: 実行中のユーザーの現在のチャットを削除します。

3.グループ管理

  • グループの一覧: ユーザーが利用できる個人用グループと割り当て可能なグループを表示します。
  • グループの作成: 整理のために、名前と説明を付けて新しいグループを追加します。
  • グループの削除: 既存のグループを削除します (構成で有効になっている場合)。

4.ソース管理

  • ソースの作成: コンテンツを含む新しいソースを追加し、特定のグループに割り当てます。
  • ソースの編集: 既存のソースを新しいコンテンツまたはメタデータで更新します。
  • ソースの削除: 不要になったソースを削除します。
  • ソースの取得: ID によって特定のソースに関する情報を取得します。
  • ソースの一覧: 特定のグループに割り当てられているすべてのソースを表示します。

5.ユーザー管理

  • ユーザーの作成: カスタマイズ可能な役割、グループ、設定を持つ新しいユーザーを登録します。
  • ユーザーの編集: 名前、電子メール、パスワード、役割などのユーザー情報を更新します。
  • ユーザーの削除: システムからユーザーを削除します (構成で有効になっている場合)。
  • ユーザーの再アクティブ化: 以前に非アクティブ化されたユーザーを再アクティブ化します。

6.構成の柔軟性

  • 機能の有効化/無効化: .env構成ファイルを通じて個々のサーバー機能を有効化または無効化します。
  • 言語サポート: サーバーのシステム メッセージを好みの言語 (英語やドイツ語など) にカスタマイズします。
  • SSL 検証: サーバーへの安全な接続のために SSL 検証を切り替えます。

7.エラー処理とログ記録

  • 次の詳細なエラー メッセージとログ:
    • 無効なリクエスト
    • 認証失敗
    • API通信の問題
  • 無効な機能にアクセスした場合の応答を設定可能。

8.セキュリティ機能

  • トークンベースの認証: サーバー機能への安全で制御されたアクセスを保証します。
  • 制限されたグループ アクセス: プライバシーを強化するために、 assignableGroupsへのアクセスを制限するオプション。

使用例

  1. カスタマー サポート: チャット機能を使用して、インテリジェントな会話エージェントを構築します。
  2. ナレッジ管理: ソースとグループを使用して構造化されたデータを管理および取得します。
  3. マルチユーザーコラボレーション: 共同ワークフローのためにユーザーをグループに作成、編集、割り当てます。
  4. カスタマイズ可能な機能: アプリケーションに必要な機能のみを有効にします。

使い方

  1. privateGPT.env.json.exampleファイルをprivateGPT.env.jsonにコピーします (例cp .\privateGPT.env.json.example .\privateGPT.env.json
  2. privateGPT.env.jsonファイルを編集してサーバーを構成します。
  3. 提供されたスクリプトを使用してサーバーを起動します。
  4. API 呼び出しを介してサーバーと対話し、その機能を活用します。

各エンドポイントの詳細な使用手順と例については、 API ドキュメントを参照してください。


privateGPTサーバーは、カスタマイズ可能な環境で構造化された通信とデータを管理するための強力なツールです。ニーズに合わせて機能をカスタマイズすることで、効率性と制御性を最大限に高めることができます。

インストール

  1. リポジトリをクローンします。
git clone https://github.com/privateGPT-dev/MCP-Server-for-MAS-Developments.git cd MCP-Server-for-MAS-Developments

ここで、手動か自動かを選択する必要があります。

Manually step-by-step Installation

  1. npmをインストールします。例:
sudo apt install npm
  1. 依存関係をインストールする
npm install
  1. プロジェクトをビルドします。
npm run build

or Automatic Installation

  1. InstallMPCServer.sh実行可能にする (Linux):
sudo chmod +x InstallMPCServer.sh
  1. スクリプトを実行すれば完了です。エラーメッセージに注意し、すべてが正常であることを確認してください。
./InstallMPCServer.sh

構成の説明

プロキシ設定

このセクションでは、システムで使用されるProxy_Config設定について詳しく説明します。

Use Proxy

プロキシを使用する場合は、プロキシでの認証用のヘッダーを定義する必要があります。

説明サンプル値
プロキシの使用アプリケーションがルーティングするかどうかを決定しますtrue
プロキシ サーバー経由でリクエストを送信します。

HAProxyバックエンドの設定例。ヘッダーに1234567890ABCDEFHIJを含むリクエストのみが受け入れられます。

backend mcpserver.mydomain.com acl valid_header req.hdr(X-Custom-Header) -m str "1234567890ABCDEFHIJ" http-request deny unless valid_header http-request del-header X-Custom-Header server stable 172.16.123.4:443 ssl verify none

Header Encryption

説明サンプル値
ヘッダー暗号化カスタム プロキシ アクセス ヘッダーが暗号化されているかどうかを示します。true
  • "true" : アクセスヘッダーは暗号化されます。サーバーのセキュリティフォルダにある暗号化ツールを使用してヘッダーを暗号化してください。
  • "false" : アクセス ヘッダーはプレーン テキストです。

Access Header

プロキシ認証またはアクセス制御に使用されるカスタムヘッダー値。HEADER_ENCRYPTED HEADER_ENCRYPTED "true"の場合、この値は使用前に復号化する必要があります。

説明サンプル値
アクセスヘッダープロキシ認証またはアクセス制御に使用されます。123abc..

注記

  • HEADER_ENCRYPTED"true"に設定されている場合は、 ACCESS_HEADERが適切に保護されていることを確認します。
  • 接続の問題を回避するために、プロキシ サーバーの設定を再確認してください。

サーバー構成

安全な証明書認証のために、privateGPT 資格情報を含む.envファイル (例: privateGPT.env.json) を作成します.envファイルで設定を調整して、サーバーとその機能をカスタマイズできます。

証明書を生成します (ssh 証明書がない場合はssh-keygen -t rsaを使用します)。.pem ファイルが必要です。

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM > ~/.ssh/id_rsa_public.pem

このプロセスの後、暗号化パスワードツールを用いてパスワードから暗号文を作成し、暗号化パスワード復号ツールを用いて暗号文をテストすることができます。その仕組みについては、このドキュメントのSecurityセクションをご覧ください。

次に、クライアントおよびエージェントとの通信が暗号化されるように、SSL/TLS証明書server.crtserver.keyを提供する必要があります。自己署名証明書を使用する場合は、以下のコマンドを実行して生成できます。

openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=localhost"

注:クライアントとエージェントは、サーバーが自己署名証明書を使用していることを検出できます。これは、組織が検証されている公式証明書と比較して、潜在的に安全性が低いためです。ただし、クライアントとエージェントは、適切なパラメータ(それぞれのクライアントおよびエージェントパラメータの説明を参照)を使用することで、これらの証明書を使用した通信を受け入れることができます。


以下は、privateGPTサーバーの.env設定ファイルのサンプルです。各設定の説明も記載されています。これらの値は、環境や要件に合わせてカスタマイズしてください。


Server Port

説明サンプル値
ポートMCP サーバーが実行されるポート。5000

Language

システムはdeenptesnlfrを標準でサポートしています。 privateGPT-messages.jsを修正することで、すべての言語を簡単に追加できます。このファイルは、修正後、 /src/distの両方に保存する必要があります。

説明サンプル値
言語サーバーのシステム メッセージの言語 ( enまたはde )。"de"

SSL Validation

説明サンプル値
SSL_VALIDATEサーバーの証明書をクライアントが検証できない場合にのみ、 "false"を使用します。"false"

Encryption

説明サンプル値
PW_ENCRYPTION"true"に設定すると、サーバーは暗号テキストのパスワードのみを受け入れます。"false"
公開鍵RSA に使用されるサーバーのパブリック PEM ファイルへのファイル システム パスを指定します。"~/.ssh/id_rsa_public.pem"
秘密鍵RSA に使用されるサーバーの秘密キー ファイルへのファイル システム パスを指定します。"~/.ssh/id_rsa_public.pem"

SSL/TLS

説明サンプル値
TLSを有効にする"true"に設定すると、サーバーはクライアントおよびエージェントとの TLS 暗号化通信のみを提供します。"true"
SSL_KEY_PATHSSL/TLS に使用されるサーバーの SSL/TLS キー ファイルへのファイル システム パスを指定します。"~/.ssh/certs/server.key"
SSL_CERT_PATHSSL/TLS に使用されるサーバーの証明書へのファイル システム パスを指定します。"~/.ssh/certs/server.crt"

Restrictions

説明サンプル値
制限されたグループtrueに設定すると、 assignableGroupsへのクライアント アクセスが防止されます。true
ENABLE_OPEN_AI_COMP_APItrueに設定すると、OpenAI API の互換モードが有効になります。false

Logging

説明サンプル値
書き込みログファイルログファイルを有効にします。false false設定すると、ログファイルlogs/server.log作成されません。このオプションを 'true' に設定すると、サーバーの `http://:3000' 経由でログを取得できます。true
LOG_IPクライアント/エージェントのIPアドレスをログに記録します。falseに設定falseれている場合、この情報は\*\*\*\*\*に置き換えられ、復元できません。false
匿名モードログ記録に関連するすべての機能を無効にします。通信、エラー、その他類似の情報は記録/保存されず、表示もされません。false\

Feature Activation/Deactivation

個々のサーバー機能の可用性を制御します。対応する値をtrueに設定すると機能が有効になり、 falseに設定すると無効になります。無効にされた機能は、利用できないことを示すメッセージを返します。

説明サンプル値
ログインを有効にするログイン機能を有効または無効にします。true
ログアウトを有効にするログアウト機能を有効または無効にします。true
チャットを有効にするチャット機能を有効または無効にします。true
チャットの継続を有効にするチャットの継続を有効または無効にします。true
ENABLE_GET_CHAT_INFOチャット情報の取得を有効または無効にします。true
すべてのチャットの削除を有効にするチャット情報の取得を有効または無効にします。true
チャットの削除を有効にするチャット情報の取得を有効または無効にします。true
ENABLE_LIST_GROUPSグループのリスト表示を有効または無効にします。true
ストアグループを有効にするグループの作成を有効または無効にします。true
グループの削除を有効にするグループの削除を有効または無効にします。false
ENABLE_CREATE_SOURCEソースの作成を有効または無効にします。true
ソースの編集を有効にするソースの編集を有効または無効にします。true
ENABLE_DELETE_SOURCEソースの削除を有効または無効にします。true
ENABLE_GET_SOURCEソースの取得を有効または無効にします。true
ENABLE_LIST_SOURCESソースのリスト表示を有効または無効にします。true
ENABLE_STORE_USERユーザーの作成を有効または無効にします。true
ユーザーの編集を有効にするユーザーの編集を有効または無効にします。false
ユーザーの削除を有効にするユーザーの削除を有効または無効にします。false
ユーザーの有効化ユーザーの再アクティブ化を有効または無効にします。false

使用法

  • 関数を有効にする: .envファイル内の対応する値をtrueに設定します。
  • 関数を無効にする: .envファイル内の対応する値をfalseに設定します。
    • サーバーは、機能が無効になっていることを示すメッセージで応答します。

.envエントリの例:

{ "privateGPT_Url": { "PRIVATE_GPT_API_URL": "https://<YOUR_privateGPT_URL>/api/v1", "API_URL": "https://<YOUR_privateGPT_URL>/api/v1" }, "Proxy_Config": { "USE_PROXY": "true", "HEADER_ENCRYPTED": "true", "ACCESS_HEADER": "Example: BptfJBeRGLbZas+..." }, "Server_Config": { "PORT": 5000, "LANGUAGE": "en", "SSL_VALIDATE": "false", "PW_ENCRYPTION": "true", "ALLOW_KEYGEN": "false", "PUBLIC_KEY": "~/.ssh/id_rsa_public.pem", "PRIVATE_KEY": "~/.ssh/id_rsa", "ENABLE_TLS": "true", "SSL_KEY_PATH": "~/.ssh/certs/server.key", "SSL_CERT_PATH": "~/.ssh/certs/server.crt" }, "Restrictions": { "RESTRICTED_GROUPS": false, "ENABLE_OPEN_AI_COMP_API": true }, "Logging": { "WRITTEN_LOGFILE": true, "LOG_IPs": true, "ANONYMOUS_MODE": false }, "Functions": { "ENABLE_LOGIN": true, "ENABLE_LOGOUT": true, "ENABLE_CHAT": true, "ENABLE_CONTINUE_CHAT": true, "ENABLE_GET_CHAT_INFO": true, "ENABLE_DELETE_ALL_CHATS": true, "ENABLE_DELETE_CHAT": true, "ENABLE_LIST_GROUPS": true, "ENABLE_STORE_GROUP": true, "ENABLE_DELETE_GROUP": true, "ENABLE_CREATE_SOURCE": true, "ENABLE_EDIT_SOURCE": true, "ENABLE_DELETE_SOURCE": true, "ENABLE_GET_SOURCE": true, "ENABLE_LIST_SOURCES": true, "ENABLE_STORE_USER": true, "ENABLE_EDIT_USER": false, "ENABLE_DELETE_USER": false, "ENABLE_REACTIVATE_USER": true } }

使用法

サーバーを起動します。

node dist/index.js

サーバーが起動し、stdio で MCP コマンドをリッスンします。

エラー処理

サーバーはさまざまなエラー シナリオを処理します。

  • 認証失敗
  • ネットワークエラー
  • 無効なリクエスト
  • APIエラー
  • レート制限
  • タイムアウトエラー

エラーは適切な MCP エラー コードにマップされ、デバッグ用の詳細なメッセージが含まれます。

利用可能なツール

暗号化されたパスワードを生成する

クライアントおよび/またはサーバーの Proxy_Config->Password エントリのパスワードを生成します。

node security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem

生成された暗号化されたパスワードを確認する

暗号化を確認するには以下を使用します。

node security/generate_decrypted_password.js ~/.ssh/id_rsa

詳細については、以下のEncrypted Password Generation ToolEncrypted Password Decryption Toolのセクションを参照してください。


暗号化パスワード生成ツール

概要

暗号化パスワード生成ツールは、 RSA公開鍵暗号を用いてユーザーパスワードを安全に暗号化するために設計されたNode.jsスクリプトです。このツールは、堅牢な暗号化メカニズムを活用することで、機密性の高いパスワードデータの送信および保管を確実に保護します。クライアントとサーバー間の安全なパスワード処理と送信を必要とするシステムに不可欠なコンポーネントです。

特徴

  • 安全な暗号化: RSA (Rivest–Shamir–Adleman) 公開鍵暗号化を使用して機密パスワードを暗号化します。
  • **ユーザーフレンドリーなインターフェース:**ユーザーにコマンドライン経由で安全にパスワードを入力するよう要求します。
  • **エラー処理:**不足しているキーや暗号化の問題に関する包括的なエラー メッセージを提供します。
  • **柔軟な統合:**安全なパスワード処理と暗号化を必要とする大規模なシステムに統合できます。

仕組み

  1. **公開キーの読み込み:**スクリプトは、コマンドライン引数として指定されたファイル パスから RSA 公開キーを読み込みます。
  2. **パスワード入力:**ユーザーにコマンド ライン経由で安全にパスワードを入力するよう要求します。
  3. **暗号化プロセス:**読み込まれた公開キーとRSA_PKCS1_PADDINGを使用して、スクリプトは入力されたパスワードを暗号化します。
  4. **出力:**暗号化されたパスワードは Base64 形式で表示され、安全な送信または保存が可能になります。

前提条件

  • **Node.js:**システムにNode.jsがインストールされていることを確認してください。Node.js公式サイトからダウンロードできます。
  • **RSA 公開キー:**パスワードの暗号化に使用される RSA 公開キー ( id_rsa_public.pem ) にアクセスできる必要があります。

インストール

  • **依存関係のインストール:**このスクリプトは組み込みのNode.jsモジュールを使用するため、追加の依存関係は必要ありません。ただし、Node.jsのバージョンがES6モジュールをサポートしていることを確認してください。
    rm -rf node_modules package-lock.json npm cache clean --force npm install

使用法

  1. RSA 公開キーを準備する: RSA 公開キー ( id_rsa_public.pem ) が MCP サーバーに安全に保存されていることを確認します。
  2. スクリプトを実行すると、MCP サーバーのsecurityディレクトリにスクリプトが見つかります。Node.jsを使用してスクリプトを実行し、公開キーへのパスをコマンド ライン引数として指定します。
    node encrypt_password.js /path/to/your/id_rsa_public.pem
    例:
    node security/encrypt_password.js ~/.ssh/id_rsa_public.pem
  3. **パスワードを入力してください:**プロンプトが表示されたら、安全にパスワードを入力してください。
    Please enter your password: ********
  4. **暗号化されたパスワードを表示する:**スクリプトは暗号化されたパスワードを Base64 形式で出力します。
    Encrypted Password: <Your_Encrypted_Password>

暗号化されたパスワード復号ツール

概要

暗号化パスワード復号ツールは、 RSA秘密鍵暗号を用いて暗号化されたパスワードを安全に復号するために設計されたNode.jsスクリプトです。このツールは、堅牢な暗号化および復号メカニズムを活用することで、機密性の高いパスワードデータを転送中および保管中に保護します。暗号化されたパスワードを検証または復号するには、秘密鍵を使用します。これは、暗号化が正しく実行されたことを確認するのに役立ちます。

特徴

  • 安全な復号化: RSA (Rivest–Shamir–Adleman) 秘密鍵暗号化を使用して、機密性の高いパスワード データを復号化します。
  • **エラー処理:**不足しているキーや復号化の問題に関する包括的なエラー メッセージを提供します。
  • **ユーザーフレンドリーなインターフェース:**ユーザーにコマンドライン経由で暗号化されたパスワードを安全に入力するよう求めます。
  • **柔軟な統合:**安全なパスワード処理を必要とする大規模なシステムに統合できます。

仕組み

  1. **秘密キーの読み込み:**スクリプトは、コマンドライン引数として指定されたファイル パスから RSA 秘密キーを読み込みます。
  2. **暗号化されたパスワードの入力:**ユーザーに Base64 形式で暗号化されたパスワードを入力するよう求めます。
  3. **復号化プロセス:**読み込まれた秘密鍵と RSA_PKCS1_PADDING を使用して、スクリプトは暗号化されたパスワードを復号化します。
  4. **出力:**復号化されたプレーンテキストのパスワードがコンソールに表示されます。

前提条件

  • **Node.js:**システムにNode.jsがインストールされていることを確認してください。Node.js公式サイトからダウンロードできます。
  • **RSA 秘密キー:**パスワードの復号化に使用する MCP サーバー上の RSA 秘密キー ( id_rsa ) にアクセスできる必要があります。

インストール

  • **依存関係のインストール:**このスクリプトは組み込みのNode.jsモジュールを使用するため、追加の依存関係は必要ありません。ただし、Node.jsのバージョンがES6モジュールをサポートしていることを確認してください。

使用法

  1. RSA 秘密キーを準備する: RSA 秘密キー ( id_rsa ) がマシン上に安全に保存されていることを確認します。
  2. スクリプトを実行すると、MCP サーバーのsecurityディレクトリにスクリプトが見つかります: :** Node.js を使用してスクリプトを実行し、コマンド ライン引数として秘密キーへのパスを指定します。
    node decrypt_password.js /path/to/your/id_rsa
    例:
    node decrypt_password.js ~/.ssh/id_rsa
  3. **暗号化されたパスワードを入力します。**プロンプトが表示されたら、Base64 形式で暗号化されたパスワードを入力します。
    Please enter the encrypted password: <Your_Encrypted_Password>
  4. **復号化されたパスワードを表示する:**スクリプトは復号化されたプレーンテキストのパスワードを出力します。
    Decrypted Password: your_plaintext_password

これにより、暗号化されたパスワードが復号化され、元の値が表示されます。

注記

  • ~/.ssh/id_rsa_public.pem (公開鍵) ファイルと~/.ssh/id_rsa (秘密鍵) ファイルが存在し、正しい権限が与えられていることを確認します。
  • 暗号化ツールは公開鍵に依存しますが、復号化ツールは秘密鍵を必要とします。

プロジェクト構造

MAS開発向けMCPサーバー – 完全なプロジェクト概要

このリポジトリには**、MCP サーバーと関連するすべてのクライアント実装が含まれています。
以下に、プロジェクト ルートからリストされた
完全なディレクトリ構造**を示します。これには次のものが含まれます。

  • clients (C# .Net、C++、Go、Java、JavaScript、PHP、Python)、
  • dist
  • docs
  • logs
  • security
  • src
  • tests
  • verおよびすべてのサブフォルダー/ファイル。

注記:
これは最小限のコメントが付いた直接のディレクトリ リストです。


プロジェクト構造(全リスト)

MCP-Server-for-MAS-Developments/ ├── dist │ └── public │ ├── index.html │ └── privateGPT-mcp-logo.png ├── docs │ └── images │ ├── alternative mcp client.png │ ├── mcp-general-architecture.png │ └── privateGPT-MCP.png ├── logs ├── security │ ├── generate_decrypted_password.js │ └── generate_encrypted_password.js ├── src │ ├── index.js │ ├── logger.js │ ├── privateGPT-messages.js │ ├── public │ │ ├── index.html │ │ └── privateGPT-mcp-logo.png │ ├── services │ │ └── privateGPT-service.ts │ └── types │ └── api.ts ├── tests ├── ver │ ├── index_np.js │ └── index_proxy_np.js └── clients ├── C# .Net │ ├── 1.0 mcp_login │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_login.csproj │ │ └── Program.cs │ ├── 1.1 mcp_logout │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_logout.csproj │ │ └── Program.cs │ ├── 2.0 mcp_chat │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_chat.csproj │ │ └── Program.cs │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── Code Archiv │ │ ├── mcp_chat.cs │ │ ├── mcp_continue_chat.cs │ │ ├── ... │ │ └── mcp_store_user.cs │ └── README.md (14,924 bytes) ├── C++ │ ├── 1.0 mcp_login │ │ ├── MCPLoginClient.cpp │ │ └── MCPLoginClient.exe │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,109 bytes) ├── Go │ ├── 1.0 mcp_login │ │ ├── MCPLoginClient.go │ │ └── MCPLoginClient.exe │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (14,903 bytes) ├── Java │ ├── 1.0 mcp_login │ │ ├── json-20241224.jar │ │ ├── MCPLoginClient.class │ │ └── MCPLoginClient.java │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ └── README.md (16,208 bytes) ├── JavaScript │ ├── 1.0 mcp_login │ │ └── MCPLoginClient.js │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,692 bytes) ├── PHP │ ├── 1.0 mcp_login │ │ └── MCPLoginClient.php │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,636 bytes) └── Python ├── 1.0 mcp_login │ └── MCPLoginClient.py ├── 1.1 mcp_logout ├── 2.0 mcp_chat ├── 2.1 mcp_continue_chat ├── 2.2 mcp_get_chat_info ├── 3.0 mcp_create_source ├── 3.1 mcp_get_source ├── 3.2 mcp_list_sources ├── 3.3 mcp_edit_source ├── 3.4 mcp_delete_source ├── 4.0 mcp_list_groups ├── 4.1 mcp_store_group ├── 4.2 mcp_delete_group ├── 5.0 mcp_store_user ├── 5.1 mcp_edit_user ├── 5.2 mcp_delete_user ├── 9.0 mcp_keygen └── README.md (15,630 bytes)

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

MCP クライアントと privateGPT 間の安全な通信を可能にするサーバー実装。これにより、ユーザーはナレッジ ベースを使用して privateGPT とチャットし、標準化されたモデル コンテキスト プロトコルを通じてソース、グループ、およびユーザーを管理できるようになります。

  1. privateGPT MCP Server
    1. What is MCP?
    2. Overview
  2. Why Agents
    1. Interaction Between Agents, LLMs, and MCP Servers
    2. Advantages of Using Agents in This Context
  3. Security
    1. 1. Transport Layer Security (TLS)
    2. Why Should TLS Be Enabled Between Client and Server?
    3. Conclusion
    4. 2. Password Encryption
    5. 3. Key Management
    6. 4. Decryption on the Server
    7. 5. Authorization Tokens
    8. 6. Restriction of Key Generation (Keygen)
    9. 7. Certificate-Based Access Control (CBAC)
    10. 8. Secure Configuration
    11. 9. Logging and Monitoring
    12. Summary
  4. Feature Overview for privateGPT Server
    1. Key Features
    2. Installation
    3. Configuration Description
    4. Notes
    5. Server Port
    6. Language
    7. SSL Validation
    8. Encryption
    9. SSL/TLS
    10. Restrictions
    11. Logging
    12. Feature Activation/Deactivation
    13. Usage
    14. Usage
    15. Error Handling
    16. Available Tools
  5. Encrypted Password Generation Tool
    1. Overview
    2. Features
    3. How It Works
    4. Prerequisites
    5. Installation
    6. Usage
  6. Encrypted Password Decryption Tool
    1. Overview
    2. Features
    3. How It Works
    4. Prerequisites
    5. Installation
    6. Usage
    7. Project Structure
    8. License

Related MCP Servers

  • -
    security
    F
    license
    -
    quality
    Facilitates integration of PrivateGPT with MCP-compatible applications, enabling chat functionalities and secure management of knowledge sources and user access.
    Last updated -
    • Linux
  • -
    security
    A
    license
    -
    quality
    A server for the Machine Chat Protocol (MCP) that provides a YAML-based configuration system for LLM applications, allowing users to define resources, tools, and prompts without writing code.
    Last updated -
    5
    Python
    MIT License
  • -
    security
    -
    license
    -
    quality
    A specialized server that helps users create new Model Context Protocol (MCP) servers by providing tools and templates for scaffolding projects with various capabilities.
    Last updated -
    1
    TypeScript
  • A
    security
    F
    license
    A
    quality
    An implementation of the Model Context Protocol (MCP) server using Server-Sent Events (SSE) for real-time communication, providing tools for calculations and dynamic resource templates.
    Last updated -
    1
    JavaScript

View all related MCP servers

ID: 79dp2wmo8v