Skip to main content
Glama

privateGPT MCP Server

by Fujitsu-AI

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

目次

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

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

Related MCP server: Knowledge Graph Memory Server

MCPとは何ですか?

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

なぜMCPなのか?

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

  • LLM に直接接続できる、あらかじめ構築された統合のリストが増えています

  • LLMプロバイダーとベンダーを切り替える柔軟性

  • インフラストラクチャ内でデータを保護するためのベストプラクティス

仕組み

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

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_PATH

SSL/TLS に使用されるサーバーの SSL/TLS キー ファイルへのファイル システム パスを指定します。

"~/.ssh/certs/server.key"

SSL_CERT_PATH

SSL/TLS に使用されるサーバーの証明書へのファイル システム パスを指定します。

"~/.ssh/certs/server.crt"


Restrictions

説明

サンプル値

制限されたグループ

true

に設定すると、

assignableGroups

へのクライアント アクセスが防止されます。

true

ENABLE_OPEN_AI_COMP_API

true

に設定すると、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 サーバーのを使用してスクリプトを実行し、公開キーへのパスをコマンド ライン引数として指定します。

    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 サーバーの :** 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Fujitsu-AI/MCP-Server-for-MAS-Developments'

If you have feedback or need assistance with the MCP directory API, please join our Discord server