Inhaltsverzeichnis
- privateGPT MCP-Server
- Was ist MCP?
- Interaktion zwischen Agenten, LLMs und MCP-Servern
- Vorteile der Verwendung von Agenten in diesem Kontext
- Überblick
- Übersicht der Sicherheitsfunktionen
- 1. Transport Layer Security (TLS)
- 2. Passwortverschlüsselung
- 3. Schlüsselverwaltung
- 4. Entschlüsselung auf dem Server
- 5. Autorisierungstoken
- 6. Einschränkung der Schlüsselgenerierung (Keygen)
- 7. Zertifikatsbasierte Zugriffskontrolle (CBAC)
- 8. Sichere Konfiguration
- 9. Protokollierung und Überwachung
- Zusammenfassung
- Tool zur verschlüsselten Passwortgenerierung
- Tool zur Entschlüsselung verschlüsselter Passwörter
- Funktionsübersicht für privateGPT Server
- Installation
- Konfigurationsbeschreibung
- Proxy-Konfiguration
- Serverkonfiguration
- Einschränkungen
- Protokollierung
- Aktivierung/Deaktivierung von Funktionen
- ENABLE_LOGIN
- ENABLE_LOGOUT
- ENABLE_CHAT
- AKTIVIEREN_WEITER_CHAT
- AKTIVIEREN_GET_CHAT_INFO
- AKTIVIEREN_LÖSCHEN_ALLER_CHATS
- ENABLE_DELETE_CHAT
- ENABLE_LIST_GROUPS
- AKTIVIEREN_STORE_GROUP
- ENABLE_DELETE_GROUP
- ENABLE_CREATE_SOURCE
- ENABLE_EDIT_SOURCE
- ENABLE_DELETE_SOURCE
- ENABLE_GET_SOURCE
- ENABLE_LIST_SOURCES
- ENABLE_STORE_USER
- ENABLE_EDIT_USER
- ENABLE_DELETE_USER
- BENUTZER REAKTIVIEREN AKTIVIEREN
- Verwendung
- Projektstruktur
- Lizenz
privateGPT MCP-Server
Eine Model Context Protocol (MCP)-Serverimplementierung ermöglicht Ihnen die Nutzung von privateGPT als Agent für Ihren bevorzugten MCP-Client. Dies ermöglicht die nahtlose Integration der leistungsstarken Funktionen von privateGPT in jede MCP-kompatible Anwendung.
Was ist MCP?
MCP ist ein offenes Protokoll, das standardisiert, wie Anwendungen Kontext für LLMs bereitstellen. Stellen Sie sich MCP wie einen USB-C-Anschluss für KI-Anwendungen vor. So wie USB-C eine standardisierte Möglichkeit bietet, Ihre Geräte mit verschiedenen Peripheriegeräten und Zubehör zu verbinden, bietet MCP eine standardisierte Möglichkeit, KI-Modelle mit verschiedenen Datenquellen und Tools zu verbinden.
Warum MCP?
MCP unterstützt Sie beim Aufbau von Agenten und komplexen Workflows auf Basis von LLMs. LLMs müssen häufig mit Daten und Tools integriert werden. MCP bietet:
- Eine wachsende Liste vorgefertigter Integrationen, in die Ihr LLM direkt eingebunden werden kann
- Die Flexibilität, zwischen LLM-Anbietern und -Anbietern zu wechseln
- Best Practices zum Sichern Ihrer Daten innerhalb Ihrer Infrastruktur
So funktioniert es
Im Kern folgt MCP einer Client-Server-Architektur, bei der eine Hostanwendung eine Verbindung zu mehreren Servern herstellen kann:
- MCP-Hosts : Programme wie Anwendungen, Claude Desktop, IDEs oder KI-Tools, die über MCP auf Daten zugreifen möchten
- MCP-Clients : Protokoll-Clients, die 1:1-Verbindungen mit Servern aufrechterhalten
- MCP-Server : Leichtgewichtige Programme, die jeweils spezifische Fähigkeiten über das standardisierte Model Context Protocol bereitstellen
- Lokale Datenquellen : Die Dateien, Datenbanken und Dienste Ihres Computers, auf die MCP-Server sicher zugreifen können
- Remote Services : Externe Systeme, die über das Internet verfügbar sind (z. B. über APIs), mit denen MCP-Server eine Verbindung herstellen können
Überblick
Dieser Server stellt eine Brücke zwischen MCP-Clients und der privateGPT-API bereit und ermöglicht Ihnen:
- Chatten Sie mit privateGPT über öffentliche und private Wissensdatenbanken
- Wissensquellen erstellen und verwalten
- Organisieren Sie Quellen in Gruppen
- Kontrollieren Sie den Zugriff durch gruppenbasierte Berechtigungen
Warum Agenten
Ein Agent im Zusammenhang mit LLMs (Large Language Models) und MCP-Servern ist eine spezialisierte Softwarekomponente, die als Vermittler zwischen Sprachmodellen und Anwendungen fungiert. Er übernimmt Aufgaben wie die Bearbeitung von Anfragen, die Interaktion mit dem LLM über MCP, die Verwaltung von Workflows, die Gewährleistung von Sicherheit und Effizienz im Gesamtsystem und vieles mehr. Durch den Einsatz von Agenten können komplexe KI-basierte Anwendungen effektiv, sicher und skalierbar gestaltet werden. Der Code für Agenten in diesem Repository kann zur Implementierung in eigene Lösungen/Anwendungen verwendet werden.
Interaktion zwischen Agenten, LLMs und MCP-Servern
Das Zusammenspiel dieser Komponenten ermöglicht die Entwicklung leistungsstarker, skalierbarer und sicherer KI-Anwendungen. Ein vereinfachtes Szenario veranschaulicht dieses Zusammenspiel:
- Benutzereingabe: Ein Benutzer sendet eine Anfrage über eine auf dem MCP-Server gehostete Benutzeroberfläche.
- Agentenverarbeitung: Ein Agent auf dem MCP-Server empfängt die Anfrage, validiert sie und bereitet sie für das LLM vor.
- LLM-Interaktion: Der Agent leitet die Anfrage an das LLM weiter, das eine Antwort generiert.
- Antwortverarbeitung: Der Agent empfängt die Antwort vom LLM, verarbeitet sie bei Bedarf weiter (z. B. Formatierung, Integration mit anderen Datenquellen) und sendet sie an den Benutzer zurück.
- Sicherheit und Protokollierung: Während dieses Prozesses überwacht der Agent Interaktionen, stellt sicher, dass Sicherheitsrichtlinien eingehalten werden, und protokolliert relevante Informationen für eine spätere Analyse.
Vorteile der Verwendung von Agenten in diesem Kontext
- Modularität: Agenten ermöglichen eine klare Trennung der Verantwortlichkeiten, wodurch das System einfacher zu warten und zu skalieren ist.
- Sicherheit: Die zentrale Verwaltung des Zugriffs und die Überwachung der Aktivitäten tragen zur Minimierung von Sicherheitsrisiken bei.
- Effizienz: Automatisierte Agenten können Aufgaben schneller und konsistenter ausführen als manuelle Prozesse.
- Flexibilität: Agenten können einfach angepasst oder erweitert werden, um neue Funktionen oder Änderungen der Geschäftsanforderungen zu unterstützen.
Bedeutung der Passwortverschlüsselung
Bei jeder Anwendung, die vertrauliche Daten verarbeitet, ist Sicherheit oberstes Gebot. Dieser Server verwaltet zwei wichtige Anmeldeinformationen:
- Proxy-Header: Wird beispielsweise von HAProxy zur Authentifizierung und Verwaltung des Datenverkehrs verwendet.
- LLM-Zugriffskennwörter: Werden verwendet, um den Zugriff auf die großen Sprachmodelle zu sichern.
Die Speicherung dieser Passwörter im Klartext birgt erhebliche Sicherheitsrisiken, darunter unbefugten Zugriff und potenzielle Datenschutzverletzungen. Um diese Risiken zu minimieren, ist es wichtig, diese Passwörter zu verschlüsseln und nur ihren Geheimtext innerhalb des Systems zu verarbeiten.
Vorteile der ausschließlichen Verwendung von Geheimtext
- Erhöhte Sicherheit: Selbst wenn ein Angreifer Zugriff auf die Konfigurationsdateien oder Umgebungsvariablen erhält, bleiben verschlüsselte Passwörter ohne die entsprechenden Entschlüsselungsschlüssel unverständlich.
- Compliance: Verschlüsselung hilft bei der Einhaltung von Sicherheitsstandards und Vorschriften, die den Schutz vertraulicher Informationen vorschreiben.
- Integrität: Stellt sicher, dass Passwörter nicht manipuliert werden können, und bewahrt so die Integrität der Authentifizierungsmechanismen.
Sicherheit
Die folgenden Sicherheitsfunktionen gewährleisten Datenschutz und sichere Kommunikation zwischen Clientanwendung und Server. Diese Funktionen umfassen Verschlüsselung, Entschlüsselung, Schlüsselverwaltung und Transportsicherheit.
1. Transport Layer Security (TLS)
- Um die Kommunikation zwischen Client und Server abzusichern, kann TLS aktiviert werden. Alle zwischen Client und Server übertragenen Daten werden mit TLS (mindestens Version 1.2) verschlüsselt.
Warum sollte TLS zwischen Client und Server aktiviert werden?
a. Verschlüsselung der Kommunikation
- TLS (Transport Layer Security) stellt sicher, dass alle zwischen Client und Server übertragenen Daten verschlüsselt sind. Dadurch werden sensible Informationen wie Passwörter, Kreditkartendaten und persönliche Daten vor Lauschangriffen (Man-in-the-Middle-Angriffen) geschützt.
b. Datenintegrität
- TLS garantiert, dass die übertragenen Daten unverändert bleiben. Die Integritätsprüfung stellt sicher, dass die empfangenen Daten genau so sind, wie sie gesendet wurden.
c. Authentifizierung
- TLS ermöglicht die sichere Authentifizierung des Servers (und optional auch des Clients) durch digitale Zertifikate. Dies verhindert, dass Nutzer Opfer von Phishing-Angriffen auf gefälschten Webseiten werden.
d. Schutz vor Man-in-the-Middle-Angriffen
- TLS verschlüsselt die Verbindung und macht es Angreifern nahezu unmöglich, den Datenverkehr abzufangen oder zu manipulieren. Ohne TLS könnten Angreifer Datenpakete abfangen und verändern.
e. Einhaltung von Sicherheitsstandards und -vorschriften
- Viele gesetzliche Anforderungen (z. B. DSGVO, PCI-DSS) schreiben eine sichere Datenübertragung vor. TLS ist ein grundlegender Bestandteil dieser Sicherheitsanforderungen.
f. Verhinderung von Downgrade- und Replay-Angriffen
- TLS schützt vor Angriffen, die versuchen, eine Verbindung auf eine unsichere Version herunterzustufen (Downgrade-Angriffe) oder zuvor gültige Anfragen erneut abzuspielen (Replay-Angriffe).
Abschluss
Die Aktivierung von TLS zwischen Client und Server ist unerlässlich, um Datenschutz, Sicherheit und Kommunikationsintegrität zu gewährleisten. Es schützt nicht nur vertrauliche Informationen, sondern trägt auch zur Einhaltung von Compliance-Anforderungen bei und stärkt das Benutzervertrauen.
2. Passwortverschlüsselung
Passwörter können mit RSA (Rivest-Shamir-Adleman) Public-Key-Kryptografie verschlüsselt werden. Dadurch wird sichergestellt, dass sensible Daten, wie z. B. Benutzerpasswörter, niemals im Klartext übertragen werden.
Verfahren
- Public-Key-Verschlüsselung mit einer Schlüssellänge von 2048 Bit .
- Padding :
RSA_PKCS1_PADDING
zur Verbesserung der Sicherheit und Verhinderung bekannter Padding-Angriffe.
Verfahren
- Der Serveradministrator verschlüsselt das Passwort des Clients mit dem öffentlichen Schlüssel des Servers (
id_rsa_public.pem
), indem ernode security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem
ausführt und das verschlüsselte Passwort an den Client aushändigt. - Alternativ: Der Client verschlüsselt das Passwort mit dem öffentlichen Schlüssel des Servers (
id_rsa_public.pem
) mithilfe derkeygen
-Funktion. Dazu muss die Funktion in der Serverkonfiguration (privateGPT.env.json
) aktiviert werden. Wichtig: Die Verwendung dieser Funktion bedeutet auch die Datenübertragung über das Netzwerk. Stellen Sie daher sicher, dass der Datenverkehr sicher ist und nicht abgefangen werden kann. - Schließlich wird das verschlüsselte Passwort an den Server gesendet, wo es mit dem privaten Schlüssel des Servers entschlüsselt wird.
Vorteile
- Durch die asymmetrische Verschlüsselung wird sichergestellt, dass nur der Server das Passwort entschlüsseln kann.
- Selbst wenn der Kommunikationskanal kompromittiert wird, bleiben verschlüsselte Daten sicher.
3. Schlüsselverwaltung
Zur Sicherung der Datenkommunikation und Verschlüsselungsprozesse werden die folgenden Grundsätze der Schlüsselverwaltung befolgt:
Öffentlicher Schlüssel
- Sicher auf dem Server gespeichert (
id_rsa.pub
). - Wird nur zur Verschlüsselung verwendet und stellt bei Offenlegung kein Sicherheitsrisiko dar.
PEM-Schlüssel
- Sicher auf dem Server gespeichert (
id_rsa_public.pem
). - Muss mithilfe des öffentlichen Zertifikats erstellt werden (siehe: Serverkonfiguration )
Privater Schlüssel
- Sicher auf dem Server gespeichert (
id_rsa
). - Eingeschränkter Zugriff mit entsprechenden Dateiberechtigungen (
chmod 600
). - Wird ausschließlich für Entschlüsselungsvorgänge verwendet.
Schlüsselrotation
- Schlüssel können regelmäßig oder bei Erkennung eines Sicherheitsvorfalls rotiert werden. Wichtig: Bei einer Neuvergabe verlieren die Clients oder KI-Agenten sofort den Zugriff auf den MCP-Server und benötigen einen neuen RSA-Schlüssel (verschlüsseltes Passwort)!
- Alte Schlüssel werden sicher ungültig gemacht.
4. Entschlüsselung auf dem Server
Die Entschlüsselung erfolgt ausschließlich auf dem Server mit dem privaten Schlüssel:
Verfahren
- Der Server erhält das verschlüsselte Passwort vom Client.
- Der private Schlüssel entschlüsselt das Passwort, um den ursprünglichen Klartext abzurufen.
- Das entschlüsselte Passwort wird intern verwendet (z. B. zur Authentifizierung) und niemals im Klartext gespeichert.
Sichere Handhabung
- Entschlüsselte Passwörter bleiben nur für die Dauer der Verarbeitung im Speicher erhalten.
- Durch sichere Speicherverwaltungsverfahren wird sichergestellt, dass vertrauliche Daten unmittelbar nach der Verwendung gelöscht werden.
Zertifikatsvalidierung
- Um die Authentizität von Server und Client sicherzustellen, werden Zertifikate auf beiden Seiten validiert.
- Optional kann zur Erhöhung der Sicherheit gegenseitiges TLS aktiviert werden.
5. Autorisierungstoken
Token werden verwendet, um Anfragen zu authentifizieren und sicherzustellen, dass nur autorisierte Benutzer auf das System zugreifen können:
Token-Verwaltung
- Bei erfolgreicher Anmeldung werden Token generiert.
- Sie sind kurzlebig und verfallen automatisch nach einer vordefinierten Zeit.
- Token werden mit HMAC oder RSA signiert und sind somit manipulationssicher.
6. Einschränkung der Schlüsselgenerierung (Keygen)
Um Missbrauch des Systems zu verhindern, ist die Schlüsselgenerierung ( keygen
) eingeschränkt:
Konfiguration
- Der Server verfügt über eine Konfigurationsoption (
ALLOW_KEYGEN
), um die Schlüsselgenerierung zu aktivieren oder zu deaktivieren. - Versuche, die Keygen-Funktion aufzurufen, wenn sie deaktiviert ist, führen zu einer Fehlermeldung.
Überwachungsprotokollierung
- Alle Keygen-Vorgänge werden zu Prüf- und Überwachungszwecken protokolliert.
7. Zertifikatsbasierte Zugriffskontrolle (CBAC)
- Da der Agent bei aktivierter Zertifikatsauthentifizierung kein Passwort benötigt und sich mit einem Schlüssel am Server anmeldet, ist er automatisch an diesen Server gebunden. Möchte er sich bei einem anderen MCP privateGPT-Server anmelden, wird dieser Anmeldeversuch abgelehnt, da der Schlüssel mit dem privaten Zertifikat des Servers abgeglichen wird.
Merkmale
- Auf Funktionen wie
keygen
,store_user
undedit_source
können nur autorisierte Rollen zugreifen. - Unberechtigte Zugriffsversuche werden mit detaillierten Fehlermeldungen abgelehnt.
Konfiguration
- Aktivierte oder deaktivierte Funktionen können in der Konfiguration des Servers angegeben werden (
Functions
).
8. Sichere Konfiguration
Die Serverkonfiguration enthält mehrere sicherheitsrelevante Optionen:
SSL_VALIDATE
- Validiert SSL/TLS-Zertifikate, um eine sichere Kommunikation zu gewährleisten.
- Kann je nach Umgebungsanforderungen (z. B. Test vs. Produktion) aktiviert oder deaktiviert werden.
PW_ENCRYPTION
- Aktiviert oder deaktiviert die Kennwortverschlüsselung.
- Gewährleistet die Kompatibilität in Umgebungen, in denen eine Verschlüsselung nicht möglich ist.
9. Protokollierung und Überwachung
Alle sicherheitsrelevanten Ereignisse werden zur Überwachung und Fehlerbehebung protokolliert:
Protokollierte Ereignisse
- Fehlgeschlagene Anmeldeversuche.
- Anfragen zur Schlüsselgenerierung.
- Unbefugte Zugriffsversuche.
- Verschlüsselungs- und Entschlüsselungsfehler.
Zusammenfassung
Die implementierten Sicherheitsfunktionen gewährleisten:
- Vertraulichkeit sensibler Daten durch Verschlüsselung und sicheren Transport.
- Integrität der Vorgänge durch robustes Schlüsselmanagement und Token-Validierung.
- Rollenbasierte und konfigurierbare Zugriffskontrolle für Systemfunktionen.
- Umfassende Überwachung zur proaktiven Erkennung und Reaktion auf Sicherheitsbedrohungen.
Zusammen sorgen diese Maßnahmen für eine sichere Umgebung für die Client-Server-Kommunikation und Datenverarbeitung.
Funktionsübersicht für privateGPT Server
Der privateGPT-Server bietet umfangreiche Funktionen für eine effiziente, flexible und sichere Kommunikation mit dem Model Context Protocol (MCP). Nachfolgend finden Sie eine Übersicht über die wichtigsten Funktionen des Servers.
Hauptmerkmale
1. Authentifizierung und Autorisierung
- Anmeldefunktion : Authentifizieren Sie Benutzer mit E-Mail und Passwort, um Zugriffstoken zu generieren.
- Abmeldefunktion : Machen Sie Benutzertoken sicher ungültig, um Sitzungen zu beenden.
2. Chat-Verwaltung
- Chat starten : Beginnen Sie eine Unterhaltung mit dem Server, optional unter Verwendung öffentlicher Wissensdatenbanken oder bestimmter Gruppenkontexte.
- Chat fortsetzen : Setzen Sie eine laufende Unterhaltung fort, indem Sie die Chat-ID und eine Folgenachricht angeben.
- Chat-Informationen abrufen : Rufen Sie Metadaten und Nachrichten für einen bestimmten Chat anhand seiner ID ab.
- Alle Chats löschen : Löscht die bisherigen Chatverläufe des ausführenden Benutzers (Chatverlauf).
- Chat löschen : Löscht den aktuellen Chat des ausführenden Benutzers.
3. Konzernleitung
- Gruppen auflisten : Zeigen Sie persönliche und zuweisbare Gruppen an, die dem Benutzer zur Verfügung stehen.
- Gruppen erstellen : Fügen Sie zu Organisationszwecken neue Gruppen mit Namen und Beschreibungen hinzu.
- Gruppen löschen : Entfernen Sie vorhandene Gruppen (sofern in der Konfiguration aktiviert).
4. Quellenverwaltung
- Quellen erstellen : Fügen Sie neue Quellen mit Inhalten hinzu und weisen Sie sie bestimmten Gruppen zu.
- Quellen bearbeiten : Aktualisieren Sie vorhandene Quellen mit neuen Inhalten oder Metadaten.
- Quellen löschen : Entfernen Sie Quellen, die nicht mehr benötigt werden.
- Quellen abrufen : Rufen Sie Informationen zu einer bestimmten Quelle anhand ihrer ID ab.
- Quellen auflisten : Alle Quellen anzeigen, die einer bestimmten Gruppe zugewiesen sind.
5. Benutzerverwaltung
- Benutzer erstellen : Registrieren Sie neue Benutzer mit anpassbaren Rollen, Gruppen und Einstellungen.
- Benutzer bearbeiten : Aktualisieren Sie Benutzerinformationen, einschließlich Name, E-Mail, Passwort und Rollen.
- Benutzer löschen : Entfernen Sie Benutzer aus dem System (sofern in der Konfiguration aktiviert).
- Benutzer reaktivieren : Reaktivieren Sie einen Benutzer, der zuvor deaktiviert wurde.
6. Konfigurationsflexibilität
- Funktionsaktivierung/-deaktivierung : Aktivieren oder deaktivieren Sie einzelne Serverfunktionen über die
.env
Konfigurationsdatei. - Sprachunterstützung : Passen Sie die Systemnachrichten des Servers an Ihre bevorzugte Sprache an (z. B. Englisch oder Deutsch).
- SSL-Validierung : Aktivieren und deaktivieren Sie die SSL-Validierung für sichere Verbindungen zum Server.
7. Fehlerbehandlung und Protokollierung
- Detaillierte Fehlermeldungen und Protokollierung für:
- Ungültige Anfragen
- Authentifizierungsfehler
- API-Kommunikationsprobleme
- Konfigurierbare Reaktionen beim Zugriff auf eine deaktivierte Funktion.
8. Sicherheitsfunktionen
- Tokenbasierte Authentifizierung : Gewährleistet sicheren und kontrollierten Zugriff auf Serverfunktionen.
- Eingeschränkter Gruppenzugriff : Option zum Beschränken des Zugriffs auf
assignableGroups
für mehr Datenschutz.
Beispiel-Anwendungsfälle
- Kundensupport : Verwenden Sie Chatfunktionen, um intelligente Gesprächsagenten zu erstellen.
- Wissensmanagement : Verwalten und Abrufen strukturierter Daten mit Quellen und Gruppen.
- Zusammenarbeit mehrerer Benutzer : Erstellen, bearbeiten und weisen Sie Benutzer für kollaborative Arbeitsabläufe Gruppen zu.
- Anpassbare Funktionalität : Aktivieren Sie nur die Funktionen, die Sie für Ihre Anwendung benötigen.
Anwendung
- Kopieren Sie die Datei
privateGPT.env.json.example
nachprivateGPT.env.json
, z. B. mitcp .\privateGPT.env.json.example .\privateGPT.env.json
- Konfigurieren Sie den Server, indem Sie die Datei
privateGPT.env.json
bearbeiten. - Starten Sie den Server mit dem bereitgestellten Skript.
- Interagieren Sie mit dem Server über API-Aufrufe, um seine Funktionen zu nutzen.
Ausführliche Verwendungsanweisungen und Beispiele für jeden Endpunkt finden Sie in der API-Dokumentation .
Der privateGPT-Server ist ein leistungsstarkes Tool zur Verwaltung strukturierter Kommunikation und Daten in einer anpassbaren Umgebung. Passen Sie die Funktionen an Ihre Bedürfnisse an, um maximale Effizienz und Kontrolle zu gewährleisten.
Installation
- Klonen Sie das Repository:
Nun müssen Sie wählen: Manuell oder automatisch.
Manually step-by-step Installation
- Installieren Sie
npm
, zum Beispiel:
- Abhängigkeiten installieren
- Erstellen Sie das Projekt:
or Automatic Installation
- Machen Sie
InstallMPCServer.sh
ausführbar (Linux):
- Führen Sie das Skript aus. Fertig. Achten Sie auf Fehlermeldungen und stellen Sie sicher, dass alles in Ordnung ist.
Konfigurationsbeschreibung
Proxy-Konfiguration
Dieser Abschnitt enthält detaillierte Erklärungen zu den im System verwendeten Proxy_Config
-Einstellungen.
Use Proxy
Wenn ein Proxy verwendet wird, müssen Sie einen Header zur Authentifizierung beim Proxy definieren.
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
USE_PROXY | Legt fest, ob die Anwendung routen soll | true |
Anfragen über einen Proxy-Server. |
Beispielkonfiguration eines HAProxy-Backends. Nur Anfragen mit 1234567890ABCDEFHIJ
im Header werden akzeptiert:
Header Encryption
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
HEDER_ENCRYPTED | Gibt an, ob der benutzerdefinierte Proxy-Zugriffsheader verschlüsselt ist. | true |
"true"
: Der Zugriffsheader ist verschlüsselt. Verwenden Sie das Verschlüsselungstool im Sicherheitsordner auf dem Server, um den Header zu verschlüsseln."false"
: Der Zugriffsheader ist einfacher Text.
Access Header
Der benutzerdefinierte Header-Wert, der für die Proxy-Authentifizierung oder Zugriffskontrolle verwendet wird. Wenn HEADER_ENCRYPTED
"true"
ist, muss dieser Wert vor der Verwendung entschlüsselt werden.
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
ACCESS_HEADER | Wird für die Proxy-Authentifizierung oder Zugriffskontrolle verwendet. | 123abc.. |
Hinweise
- Stellen Sie sicher, dass
ACCESS_HEADER
ordnungsgemäß gesichert ist, wennHEADER_ENCRYPTED
auf"true"
gesetzt ist. - Überprüfen Sie die Proxyservereinstellungen doppelt, um Verbindungsprobleme zu vermeiden.
Serverkonfiguration
Erstellen Sie zur sicheren Zertifikatsauthentifizierung eine .env
Datei mit Ihren privateGPT-Anmeldeinformationen, z. B. privateGPT.env.json. In der .env
Datei können die Einstellungen angepasst werden, um den Server und seine Funktionen anzupassen.
Generieren Sie die Zertifikate (wenn Sie keine SSH-Zertifikate haben, verwenden Sie ssh-keygen -t rsa
), es werden .pem-Dateien benötigt:
Anschließend können Sie mit dem Encrypted Password Encryption Tool einen Chiffretext aus Passwörtern erstellen und diesen mit dem Encrypted Password Decryption Tool testen. Die Funktionsweise finden Sie im Abschnitt Security
dieses Dokuments.
Als Nächstes sollten Sie die SSL/TLS-Zertifikate server.crt
und server.key
bereitstellen, um die verschlüsselte Kommunikation mit Clients und Agenten sicherzustellen. Wenn Sie selbstsignierte Zertifikate verwenden möchten, können Sie diese beispielsweise mit folgendem Befehl generieren:
Hinweis: Clients und Agenten können erkennen, dass der Server selbstsignierte Zertifikate verwendet, da diese im Vergleich zu offiziellen Zertifikaten, bei denen die Organisation und mehr überprüft werden, potenziell unsicher sind. Clients und Agenten können jedoch die Kommunikation mit diesen Zertifikaten mit den entsprechenden Parametern akzeptieren (siehe Beschreibung der jeweiligen Client- und Agentenparameter).
Nachfolgend finden Sie ein Beispiel für eine .env
Konfigurationsdatei für den privateGPT-Server mit Beschreibungen der einzelnen Einstellungen. Passen Sie diese Werte an Ihre Umgebung und Anforderungen an.
Server Port
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
HAFEN | Der Port, auf dem der MCP-Server läuft. | 5000 |
Language
Das System unterstützt standardmäßig: de
, en
, pt
, es
, nl
und fr
. Jede Sprache kann einfach durch Anpassung der privateGPT-messages.js
hinzugefügt werden. Diese Datei sollte nach der Anpassung sowohl in /src
als auch in /dist
gespeichert werden.
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
SPRACHE | Die Sprache für die Systemmeldungen des Servers ( en oder de ). | "de" |
SSL Validation
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
SSL_VALIDATE | Verwenden Sie "false" nur, wenn das Zertifikat des Servers vom Client nicht validiert werden kann. | "false" |
Encryption
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
PW_ENCRYPTION | Wenn auf "true" gesetzt, akzeptiert der Server nur Passwörter im Geheimtext. | "false" |
ÖFFENTLICHER SCHLÜSSEL | Gibt den Dateisystempfad zur öffentlichen PEM-Datei des Servers an, die für RSA verwendet wird. | "~/.ssh/id_rsa_public.pem" |
PRIVATER_SCHLÜSSEL | Gibt den Dateisystempfad zur privaten Schlüsseldatei des Servers an, die für RSA verwendet wird. | "~/.ssh/id_rsa_public.pem" |
SSL/TLS
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
ENABLE_TLS | Wenn auf "true" gesetzt, ermöglicht der Server nur TLS-verschlüsselte Kommunikation mit Clients und Agenten. | "true" |
SSL_KEY_PATH | Gibt den Dateisystempfad zur SSL/TLS-Schlüsseldatei des Servers an, die für SSL/TLS verwendet wird. | "~/.ssh/certs/server.key" |
SSL_CERT_PATH | Gibt den Dateisystempfad zum für SSL/TLS verwendeten Serverzertifikat an. | "~/.ssh/certs/server.crt" |
Restrictions
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
EINGESCHRÄNKTE_GRUPPEN | Die Einstellung true verhindert den Clientzugriff auf assignableGroups . | true |
ENABLE_OPEN_AI_COMP_API | Die Einstellung true aktiviert den Kompatibilitätsmodus für die OpenAI-API. | false |
Logging
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
WRITTEN_LOGFILE | Logdatei aktivieren. Bei „ false wird keine Logdatei logs/server.log geschrieben. Bei „true“ kann das Log über „http://:3000“ des Servers abgerufen werden. | true |
LOG_IPs | Protokollieren Sie die IP-Adressen der Clients/Agenten. Wenn der Wert auf false gesetzt ist, werden diese Informationen durch \*\*\*\*\* ersetzt und können nicht wiederhergestellt werden. | false |
ANONYMOUS_MODE | Deaktivieren Sie alles was mit Logging zu tun hat. Es werden keine Kommunikation, Fehler oder ähnliches geschrieben/gespeichert oder angezeigt. | false\ |
Feature Activation/Deactivation
Steuern Sie die Verfügbarkeit einzelner Serverfunktionen. Setzen Sie den entsprechenden Wert auf true
, um die Funktion zu aktivieren, oder auf false
, um sie zu deaktivieren. Deaktivierte Funktionen geben eine Meldung zurück, dass sie nicht verfügbar sind.
Schlüssel | Beschreibung | Beispielwert |
---|---|---|
ENABLE_LOGIN | Aktiviert oder deaktiviert die Login-Funktion. | true |
ENABLE_LOGOUT | Aktiviert oder deaktiviert die Abmeldefunktion. | true |
ENABLE_CHAT | Aktiviert oder deaktiviert die Chat-Funktion. | true |
AKTIVIEREN_WEITER_CHAT | Aktiviert oder deaktiviert die Fortsetzung eines Chats. | true |
AKTIVIEREN_GET_CHAT_INFO | Aktiviert oder deaktiviert das Abrufen von Chatinformationen. | true |
AKTIVIEREN_LÖSCHEN_ALLER_CHATS | Aktiviert oder deaktiviert das Abrufen von Chatinformationen. | true |
ENABLE_DELETE_CHAT | Aktiviert oder deaktiviert das Abrufen von Chatinformationen. | true |
ENABLE_LIST_GROUPS | Aktiviert oder deaktiviert Listengruppen. | true |
AKTIVIEREN_STORE_GROUP | Aktiviert oder deaktiviert das Erstellen einer Gruppe. | true |
ENABLE_DELETE_GROUP | Aktiviert oder deaktiviert das Löschen einer Gruppe. | false |
ENABLE_CREATE_SOURCE | Aktiviert oder deaktiviert das Erstellen einer Quelle. | true |
ENABLE_EDIT_SOURCE | Aktiviert oder deaktiviert das Bearbeiten einer Quelle. | true |
ENABLE_DELETE_SOURCE | Aktiviert oder deaktiviert das Löschen einer Quelle. | true |
ENABLE_GET_SOURCE | Aktiviert oder deaktiviert das Abrufen einer Quelle. | true |
ENABLE_LIST_SOURCES | Aktiviert oder deaktiviert die Auflistung von Quellen. | true |
ENABLE_STORE_USER | Aktiviert oder deaktiviert das Erstellen eines Benutzers. | true |
ENABLE_EDIT_USER | Aktiviert oder deaktiviert das Bearbeiten eines Benutzers. | false |
ENABLE_DELETE_USER | Aktiviert oder deaktiviert das Löschen eines Benutzers. | false |
BENUTZER REAKTIVIEREN AKTIVIEREN | Aktiviert oder deaktiviert die Reaktivierung eines Benutzers. | false |
Verwendung
- Aktivieren einer Funktion : Setzen Sie den entsprechenden Wert in der
.env
Datei auftrue
. - Deaktivieren einer Funktion : Setzen Sie den entsprechenden Wert in der
.env
Datei auffalse
.- Der Server antwortet mit einer Meldung, dass die Funktion deaktiviert ist.
Beispiel für .env
-Eintrag:
Verwendung
Starten Sie den Server:
Der Server wird gestartet und wartet auf stdio auf MCP-Befehle.
Fehlerbehandlung
Der Server verarbeitet verschiedene Fehlerszenarien:
- Authentifizierungsfehler
- Netzwerkfehler
- Ungültige Anfragen
- API-Fehler
- Ratenbegrenzung
- Timeout-Fehler
Fehler werden den entsprechenden MCP-Fehlercodes zugeordnet und enthalten detaillierte Meldungen zur Fehlerbehebung.
Verfügbare Tools
Verschlüsseltes Passwort generieren
Generieren Sie ein Passwort für den Client und/oder den Proxy_Config->Password-Eintrag des Servers:
Überprüfen Sie das generierte verschlüsselte Passwort
Um die Verschlüsselung zu überprüfen, verwenden Sie:
Weitere Informationen finden Sie in den Abschnitten Encrypted Password Generation Tool
und Encrypted Password Decryption Tool
weiter unten.
Tool zur verschlüsselten Passwortgenerierung
Überblick
Das Tool zur verschlüsselten Passwortgenerierung ist ein Node.js-Skript zur sicheren Verschlüsselung von Benutzerpasswörtern mithilfe der RSA-Public-Key-Kryptografie. Dieses Tool gewährleistet durch robuste Verschlüsselungsmechanismen den Schutz vertraulicher Passwortdaten während der Übertragung und Speicherung. Es ist eine wesentliche Komponente für Systeme, die eine sichere Passwortverwaltung und -übertragung zwischen Clients und Servern erfordern.
Merkmale
- Sichere Verschlüsselung: Verwendet RSA (Rivest–Shamir–Adleman) Public-Key-Kryptografie zum Verschlüsseln vertraulicher Passwörter.
- Benutzerfreundliche Oberfläche: Fordert Benutzer auf, ihre Passwörter sicher über die Befehlszeile einzugeben.
- Fehlerbehandlung: Bietet umfassende Fehlermeldungen bei fehlenden Schlüsseln oder Verschlüsselungsproblemen.
- Flexible Integration: Kann in größere Systeme integriert werden, die eine sichere Kennwortverwaltung und Verschlüsselung erfordern.
Wie es funktioniert
- Laden des öffentlichen Schlüssels: Das Skript lädt den öffentlichen RSA-Schlüssel aus einem angegebenen Dateipfad, der als Befehlszeilenargument bereitgestellt wird.
- Passworteingabe: Der Benutzer wird aufgefordert, sein Passwort sicher über die Befehlszeile einzugeben.
- Verschlüsselungsprozess: Mithilfe des geladenen öffentlichen Schlüssels und
RSA_PKCS1_PADDING
verschlüsselt das Skript das eingegebene Passwort. - Ausgabe: Das verschlüsselte Passwort wird im Base64-Format angezeigt und ist bereit für die sichere Übertragung oder Speicherung.
Voraussetzungen
- Node.js: Stellen Sie sicher, dass Node.js auf Ihrem System installiert ist. Sie können es von der offiziellen Node.js-Website herunterladen.
- Öffentlicher RSA-Schlüssel: Sie müssen Zugriff auf den öffentlichen RSA-Schlüssel (
id_rsa_public.pem
) haben, der zum Verschlüsseln des Kennworts verwendet wird.
Installation
- Abhängigkeiten installieren: Das Skript verwendet integrierte Node.js-Module, sodass keine zusätzlichen Abhängigkeiten erforderlich sind. Stellen Sie jedoch sicher, dass Ihre Node.js-Version ES6-Module unterstützt.
Verwendung
- Bereiten Sie Ihren öffentlichen RSA-Schlüssel vor: Stellen Sie sicher, dass Ihr öffentlicher RSA-Schlüssel (
id_rsa_public.pem
) sicher auf Ihrem MCP-Server gespeichert ist. - Führen Sie das Skript aus. Sie finden es im
security
des MCP-Servers: Führen Sie das Skript mit Node.js aus und geben Sie den Pfad zu Ihrem öffentlichen Schlüssel als Befehlszeilenargument an.Beispiel: - Geben Sie Ihr Passwort ein: Geben Sie Ihr Passwort sicher ein, wenn Sie dazu aufgefordert werden.
- Verschlüsseltes Passwort anzeigen: Das Skript gibt das verschlüsselte Passwort im Base64-Format aus.
Tool zur Entschlüsselung verschlüsselter Passwörter
Überblick
Das Tool zur verschlüsselten Passwortentschlüsselung ist ein Node.js-Skript zum sicheren Entschlüsseln verschlüsselter Passwörter mithilfe der RSA-Private-Key-Kryptografie. Dieses Tool gewährleistet durch robuste Ver- und Entschlüsselungsmechanismen den Schutz vertraulicher Passwortdaten während der Übertragung und Speicherung. Verwenden Sie den privaten Schlüssel, um ein verschlüsseltes Passwort zu verifizieren oder zu entschlüsseln. Dies trägt dazu bei, die korrekte Verschlüsselung sicherzustellen.
Merkmale
- Sichere Entschlüsselung: Verwendet RSA (Rivest–Shamir–Adleman)-Private-Key-Kryptografie zum Entschlüsseln vertraulicher Kennwortdaten.
- Fehlerbehandlung: Bietet umfassende Fehlermeldungen bei fehlenden Schlüsseln oder Entschlüsselungsproblemen.
- Benutzerfreundliche Oberfläche: Fordert Benutzer auf, verschlüsselte Passwörter sicher über die Befehlszeile einzugeben.
- Flexible Integration: Kann in größere Systeme integriert werden, die eine sichere Kennwortverwaltung erfordern.
Wie es funktioniert
- Laden des privaten Schlüssels: Das Skript lädt den privaten RSA-Schlüssel aus einem angegebenen Dateipfad, der als Befehlszeilenargument bereitgestellt wird.
- Verschlüsselte Passworteingabe: Der Benutzer wird aufgefordert, ein verschlüsseltes Passwort im Base64-Format einzugeben.
- Entschlüsselungsprozess: Mithilfe des geladenen privaten Schlüssels und RSA_PKCS1_PADDING entschlüsselt das Skript das verschlüsselte Passwort.
- Ausgabe: Das entschlüsselte Klartextkennwort wird in der Konsole angezeigt.
Voraussetzungen
- Node.js: Stellen Sie sicher, dass Node.js auf Ihrem System installiert ist. Sie können es von der offiziellen Node.js-Website herunterladen.
- Privater RSA-Schlüssel: Sie müssen Zugriff auf den privaten RSA-Schlüssel (
id_rsa
) auf Ihrem MCP-Server haben, der zum Entschlüsseln des Kennworts verwendet wird.
Installation
- Abhängigkeiten installieren: Das Skript verwendet integrierte Node.js-Module, sodass keine zusätzlichen Abhängigkeiten erforderlich sind. Stellen Sie jedoch sicher, dass Ihre Node.js-Version ES6-Module unterstützt.
Verwendung
- Bereiten Sie Ihren privaten RSA-Schlüssel vor: Stellen Sie sicher, dass Ihr privater RSA-Schlüssel (
id_rsa
) sicher auf Ihrem Computer gespeichert ist. - Führen Sie das Skript aus. Sie finden es im
security
des MCP-Servers: :** Führen Sie das Skript mit Node.js aus und geben Sie den Pfad zu Ihrem privaten Schlüssel als Befehlszeilenargument an.Beispiel: - Geben Sie das verschlüsselte Passwort ein: Geben Sie bei der entsprechenden Aufforderung das verschlüsselte Passwort im Base64-Format ein.
- Entschlüsseltes Passwort anzeigen: Das Skript gibt das entschlüsselte Klartextpasswort aus.
Dadurch wird das verschlüsselte Passwort entschlüsselt und der ursprüngliche Wert angezeigt.
Hinweise
- Stellen Sie sicher, dass die Dateien
~/.ssh/id_rsa_public.pem
(öffentlicher Schlüssel) und~/.ssh/id_rsa
(privater Schlüssel) vorhanden sind und über die richtigen Berechtigungen verfügen. - Das Verschlüsselungstool ist auf den öffentlichen Schlüssel angewiesen, während das Entschlüsselungstool den privaten Schlüssel benötigt.
Projektstruktur
MCP-Server für MAS-Entwicklungen – Vollständige Projektübersicht
Dieses Repository enthält den MCP-Server und alle zugehörigen Client-Implementierungen .
Nachfolgend finden Sie eine vollständige Verzeichnisstruktur , wie sie ab dem Projektstamm aufgeführt ist, einschließlich:
clients
(C# .Net, C++, Go, Java, JavaScript, PHP, Python),dist
,docs
,logs
,security
,src
,tests
,ver
und alle Unterordner/Dateien.
Notiz:
Dies ist ein direkter Verzeichniseintrag mit minimalen Kommentaren.
Projektstruktur (vollständige Auflistung)
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Eine Serverimplementierung, die eine sichere Kommunikation zwischen MCP-Clients und privateGPT ermöglicht, sodass Benutzer über Wissensdatenbanken mit privateGPT chatten und Quellen, Gruppen und Benutzer über ein standardisiertes Model Context Protocol verwalten können.
- privateGPT MCP-Server
- Warum Agenten
- Sicherheit
- Transport Layer Security (TLS)
- Warum sollte TLS zwischen Client und Server aktiviert werden?
- Abschluss
- Passwortverschlüsselung
- Schlüsselverwaltung
- Entschlüsselung auf dem Server
- Autorisierungstoken
- Einschränkung der Schlüsselgenerierung (Keygen)
- Zertifikatsbasierte Zugriffskontrolle (CBAC)
- Sichere Konfiguration
- Protokollierung und Überwachung
- Zusammenfassung
- Funktionsübersicht für privateGPT Server
- Tool zur verschlüsselten Passwortgenerierung
- Tool zur Entschlüsselung verschlüsselter Passwörter
Related Resources
Related MCP Servers
- -securityFlicense-qualityFacilitates integration of PrivateGPT with MCP-compatible applications, enabling chat functionalities and secure management of knowledge sources and user access.Last updated -
- -securityAlicense-qualityA 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 -5PythonMIT License
- -security-license-qualityA 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 -1TypeScript
- AsecurityFlicenseAqualityAn 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 -1JavaScript