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.
Tabla de contenido
- Servidor MCP privadoGPT
- ¿Qué es MCP?
- Interacción entre agentes, LLM y servidores MCP
- Ventajas de utilizar agentes en este contexto
- Descripción general
- Descripción general de las funciones de seguridad
- 1. Seguridad de la capa de transporte (TLS)
- 2. Cifrado de contraseña
- 3. Gestión de claves
- 4. Descifrado en el servidor
- 5. Tokens de autorización
- 6. Restricción de la generación de claves (Keygen)
- 7. Control de acceso basado en certificados (CBAC)
- 8. Configuración segura
- 9. Registro y monitoreo
- Resumen
- Herramienta de generación de contraseñas cifradas
- Herramienta de descifrado de contraseñas cifradas
- Descripción general de las funciones del servidor privateGPT
- Instalación
- Descripción de la configuración
- Configuración de proxy
- Configuración del servidor
- Restricciones
- Explotación florestal
- Activación/desactivación de funciones
- HABILITAR INICIO DE SESIÓN
- HABILITAR CIERRE DE SESIÓN
- HABILITAR CHAT
- HABILITAR CONTINUAR EL CHAT
- HABILITAR OBTENER INFORMACIÓN DEL CHAT
- HABILITAR_ELIMINAR_TODOS_LOS_CHATS
- HABILITAR_ELIMINAR_CHAT
- HABILITAR_LISTA_GRUPOS
- HABILITAR GRUPO DE ALMACENES
- HABILITAR_ELIMINAR_GRUPO
- HABILITAR CREAR FUENTE
- HABILITAR EDICIÓN DE FUENTE
- HABILITAR_ELIMINAR_FUENTE
- HABILITAR OBTENER FUENTE
- HABILITAR_LISTA_FUENTES
- HABILITAR_ALMACENAMIENTO_USUARIO
- HABILITAR EDICIÓN DE USUARIO
- HABILITAR_ELIMINAR_USUARIO
- HABILITAR REACTIVAR USUARIO
- Uso
- Estructura del proyecto
- Licencia
Servidor MCP privadoGPT
Una implementación de servidor del Protocolo de Contexto de Modelo (MCP) que permite usar privateGPT como agente para su cliente MCP preferido. Esto facilita una integración fluida entre las potentes funciones de privateGPT y cualquier aplicación compatible con MCP.
¿Qué es MCP?
MCP es un protocolo abierto que estandariza cómo las aplicaciones proporcionan contexto a los LLM. Piense en MCP como un puerto USB-C para aplicaciones de IA. Así como USB-C proporciona una forma estandarizada de conectar sus dispositivos a diversos periféricos y accesorios, MCP proporciona una forma estandarizada de conectar los modelos de IA a diferentes fuentes de datos y herramientas.
¿Por qué MCP?
MCP le ayuda a crear agentes y flujos de trabajo complejos sobre LLM. Los LLM suelen necesitar integración con datos y herramientas, y MCP ofrece:
- Una lista creciente de integraciones prediseñadas a las que su LLM puede conectarse directamente
- La flexibilidad para cambiar entre proveedores y vendedores de LLM
- Mejores prácticas para proteger sus datos dentro de su infraestructura
Cómo funciona
En esencia, MCP sigue una arquitectura cliente-servidor donde una aplicación host puede conectarse a múltiples servidores:
- Hosts MCP : programas como aplicaciones, Claude Desktop, IDE o herramientas de IA que desean acceder a datos a través de MCP
- Clientes MCP : clientes de protocolo que mantienen conexiones 1:1 con servidores
- Servidores MCP : programas livianos que exponen capacidades específicas a través del Protocolo de Contexto de Modelo estandarizado
- Fuentes de datos locales : los archivos, bases de datos y servicios de su computadora a los que los servidores MCP pueden acceder de forma segura
- Servicios remotos : sistemas externos disponibles a través de Internet (por ejemplo, a través de API) a los que los servidores MCP pueden conectarse
Descripción general
Este servidor proporciona un puente entre los clientes MCP y la API privateGPT, lo que le permite:
- Chatea con privateGPT utilizando bases de conocimiento públicas y privadas
- Crear y gestionar fuentes de conocimiento
- Organizar las fuentes en grupos
- Controlar el acceso mediante permisos basados en grupos
¿Por qué los agentes?
Un agente , en relación con los LLM (Grandes Modelos de Lenguaje) y los servidores MCP, es un componente de software especializado que actúa como intermediario entre los modelos de lenguaje y las aplicaciones. Gestiona tareas como procesar solicitudes, interactuar con el LLM a través de MCP, gestionar flujos de trabajo, garantizar la seguridad y la eficiencia del sistema, y mucho más. Mediante el uso de agentes, se pueden diseñar aplicaciones complejas basadas en IA eficaces, seguras y escalables. El código de los agentes en este repositorio se puede utilizar para implementarlo en soluciones o aplicaciones propias.
Interacción entre agentes, LLM y servidores MCP
La interacción de estos componentes permite el desarrollo de aplicaciones de IA potentes, escalables y seguras. A continuación, se presenta un escenario simplificado que ilustra esta interacción:
- Entrada de usuario: un usuario envía una solicitud a través de una interfaz de usuario alojada en el servidor MCP.
- Procesamiento del agente: un agente en el servidor MCP recibe la solicitud, la valida y la prepara para el LLM.
- Interacción LLM: el agente reenvía la solicitud al LLM, que genera una respuesta.
- Procesamiento de respuesta: el agente recibe la respuesta del LLM, la procesa más si es necesario (por ejemplo, formateándola, integrándola con otras fuentes de datos) y la envía de vuelta al usuario.
- Seguridad y registro: durante este proceso, el agente supervisa las interacciones, garantiza que se cumplan las políticas de seguridad y registra información relevante para su análisis posterior.
Ventajas de utilizar agentes en este contexto
- Modularidad: Los agentes permiten una clara separación de responsabilidades, lo que hace que el sistema sea más fácil de mantener y escalar.
- Seguridad: La gestión centralizada del acceso y la monitorización de las actividades ayudan a minimizar los riesgos de seguridad.
- Eficiencia: Los agentes automatizados pueden realizar tareas de forma más rápida y consistente que los procesos manuales.
- Flexibilidad: Los agentes se pueden adaptar o ampliar fácilmente para soportar nuevas funciones o cambios en los requisitos comerciales.
Importancia de cifrar contraseñas
En cualquier aplicación que gestione datos confidenciales, la seguridad es primordial. Este servidor administra dos conjuntos críticos de credenciales:
- Encabezados de proxy: utilizados por ejemplo por HAProxy para autenticar y administrar el tráfico.
- Contraseñas de acceso LLM: se utilizan para proteger el acceso a los modelos de idiomas grandes.
Almacenar estas contraseñas en texto plano supone importantes riesgos de seguridad, como accesos no autorizados y posibles filtraciones de datos. Para mitigar estos riesgos, es fundamental cifrar estas contraseñas y gestionar únicamente su texto cifrado dentro del sistema.
Beneficios de usar solo texto cifrado
- Seguridad mejorada: incluso si un atacante obtiene acceso a los archivos de configuración o a las variables de entorno, las contraseñas cifradas siguen siendo ininteligibles sin las claves de descifrado correspondientes.
- Cumplimiento: el cifrado ayuda a cumplir con los estándares y regulaciones de seguridad que exigen la protección de información confidencial.
- Integridad: Garantiza que las contraseñas no puedan ser manipuladas, manteniendo la integridad de los mecanismos de autenticación.
Seguridad
Las siguientes funciones de seguridad se implementan para garantizar la protección de datos y la comunicación segura entre la aplicación cliente y el servidor. Estas funciones abarcan el cifrado, el descifrado, la gestión de claves y la seguridad del transporte.
1. Seguridad de la capa de transporte (TLS)
- Para proteger la comunicación entre el cliente y el servidor, se puede activar TLS. Todos los datos transmitidos entre ambos se cifran mediante TLS (versión mínima 1.2).
¿Por qué debería habilitarse TLS entre el cliente y el servidor?
a. Cifrado de la comunicación
- TLS (Seguridad de la Capa de Transporte) garantiza el cifrado de todos los datos transmitidos entre el cliente y el servidor. Esto protege información confidencial, como contraseñas, datos de tarjetas de crédito y datos personales, de ataques de espionaje (ataques de intermediario).
b. Integridad de los datos
- TLS garantiza que los datos transmitidos permanezcan inalterados e inalterados. La comprobación de integridad garantiza que los datos recibidos sean exactamente como se enviaron.
c. Autenticación
- TLS permite la autenticación segura del servidor (y, opcionalmente, del cliente) mediante certificados digitales. Esto evita que los usuarios sean víctimas de ataques de phishing en sitios web falsos.
d. Protección contra ataques de intermediario
- TLS cifra la conexión, lo que hace prácticamente imposible que los atacantes intercepten o manipulen el tráfico. Sin TLS, los atacantes podrían capturar y modificar paquetes de datos.
e. Cumplimiento de las normas y regulaciones de seguridad
- Numerosos requisitos regulatorios (p. ej., RGPD, PCI-DSS) exigen la transmisión segura de datos. TLS es un componente fundamental de estos requisitos de seguridad.
f. Prevención de ataques de degradación y repetición
- TLS protege contra ataques que intentan degradar una conexión a una versión insegura (ataques de degradación) o reproducir solicitudes previamente válidas (ataques de repetición).
Conclusión
Habilitar TLS entre el cliente y el servidor es esencial para garantizar la privacidad, la seguridad y la integridad de la comunicación de los datos. No solo protege la información confidencial, sino que también contribuye al cumplimiento normativo y aumenta la confianza del usuario.
2. Cifrado de contraseña
Las contraseñas se pueden cifrar mediante criptografía de clave pública RSA (Rivest-Shamir-Adleman). Esto garantiza que datos confidenciales, como las contraseñas de usuario, nunca se transmitan en texto plano.
Método
- Cifrado de clave pública con una longitud de clave de 2048 bits .
- Relleno :
RSA_PKCS1_PADDING
para mejorar la seguridad y evitar ataques de relleno conocidos.
Proceso
- El administrador del servidor encripta la contraseña del cliente utilizando la clave pública del servidor (
id_rsa_public.pem
) ejecutandonode security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem
y entrega la contraseña encriptada al cliente. - Alternativamente: El cliente cifra la contraseña con la clave pública del servidor (
id_rsa_public.pem
) mediante la funciónkeygen
. Por lo tanto, esta función debe estar habilitada en la configuración del servidor (privateGPT.env.json
). Importante: Usar esta función también implica la transmisión de datos a través de la red. Por lo tanto, asegúrese de que el tráfico de datos sea seguro e ininterceptable. - Finalmente, la contraseña cifrada se envía al servidor, donde se descifra utilizando la clave privada del servidor.
Ventajas
- El cifrado asimétrico garantiza que solo el servidor pueda descifrar la contraseña.
- Incluso si el canal de comunicación se ve comprometido, los datos cifrados permanecen seguros.
3. Gestión de claves
Para proteger los procesos de comunicación y cifrado de datos, se siguen los siguientes principios de gestión de claves:
Clave pública
- Almacenado de forma segura en el servidor (
id_rsa.pub
). - Se utiliza únicamente para cifrado y no representa ningún riesgo de seguridad si se expone.
Clave PEM
- Almacenado de forma segura en el servidor (
id_rsa_public.pem
). - Debe crearse utilizando el certificado público (ver: Configuración del servidor )
Clave privada
- Almacenado de forma segura en el servidor (
id_rsa
). - Acceso restringido con permisos de archivo adecuados (
chmod 600
). - Se utiliza exclusivamente para operaciones de descifrado.
Rotación de claves
- Las claves pueden rotarse periódicamente o al detectarse un incidente de seguridad. Importante: si se reemiten, los clientes o agentes de IA pierden inmediatamente el acceso al servidor MCP y requieren una nueva clave RSA (contraseña cifrada).
- Las claves antiguas se invalidan de forma segura.
4. Descifrado en el servidor
El descifrado se realiza exclusivamente en el servidor utilizando la clave privada:
Proceso
- El servidor recibe la contraseña cifrada del cliente.
- La clave privada descifra la contraseña para recuperar el texto original.
- La contraseña descifrada se utiliza internamente (por ejemplo, autenticación) y nunca se almacena en texto sin formato.
Manejo seguro
- Las contraseñas descifradas existen en la memoria sólo mientras dura el procesamiento.
- Las prácticas de gestión de memoria segura garantizan que los datos confidenciales se borren inmediatamente después de su uso.
Validación de certificados
- Los certificados se validan en ambos lados para garantizar la autenticidad del servidor y del cliente.
- Opcionalmente, se puede habilitar TLS mutuo para mejorar la seguridad.
5. Tokens de autorización
Los tokens se utilizan para autenticar solicitudes y garantizar que solo los usuarios autorizados puedan acceder al sistema:
Gestión de tokens
- Los tokens se generan luego de iniciar sesión exitosamente.
- Son de corta duración y expiran automáticamente después de un tiempo predefinido.
- Los tokens se firman mediante HMAC o RSA, lo que los hace a prueba de manipulaciones.
6. Restricción de la generación de claves (Keygen)
Para evitar el uso indebido del sistema, la generación de claves ( keygen
) está restringida:
Configuración
- El servidor tiene una opción de configuración (
ALLOW_KEYGEN
) para habilitar o deshabilitar la generación de claves. - Los intentos de llamar a la función keygen cuando está deshabilitada dan como resultado un mensaje de error.
Registro de auditoría
- Todas las operaciones de keygen se registran con fines de auditoría y supervisión.
7. Control de acceso basado en certificados (CBAC)
- Dado que el agente no requiere contraseña al activar la autenticación de certificado e inicia sesión en el servidor con una clave, se bloquea automáticamente en este servidor. Si intenta iniciar sesión en otro servidor MCP privateGPT, el intento de inicio de sesión se rechaza, ya que la clave se compara con el certificado privado del servidor.
Características
- Funciones como
keygen
,store_user
yedit_source
solo son accesibles para roles autorizados. - Los intentos de acceso no autorizado se niegan con mensajes de error detallados.
Configuración
- Las funciones habilitadas o deshabilitadas se pueden especificar en la configuración del servidor (objeto
Functions
).
8. Configuración segura
La configuración del servidor contiene varias opciones relacionadas con la seguridad:
Validación SSL
- Valida certificados SSL/TLS para garantizar una comunicación segura.
- Se puede habilitar o deshabilitar según los requisitos del entorno (por ejemplo, prueba vs. producción).
CIFRADO DE CONTRASEÑA
- Habilita o deshabilita el cifrado de contraseña.
- Garantiza la compatibilidad en entornos donde el cifrado no es posible.
9. Registro y monitoreo
Todos los eventos relacionados con la seguridad se registran para su supervisión y solución de problemas:
Eventos registrados
- Intentos de inicio de sesión fallidos.
- Solicitudes de generación de claves.
- Intentos de acceso no autorizados.
- Errores de cifrado y descifrado.
Resumen
Las características de seguridad implementadas garantizan:
- Confidencialidad de datos sensibles mediante encriptación y transporte seguro.
- Integridad de las operaciones mediante gestión robusta de claves y validación de tokens.
- Control de acceso configurable y basado en roles para funciones del sistema.
- Monitoreo integral para detección y respuesta proactiva a amenazas a la seguridad.
Estas medidas proporcionan colectivamente un entorno seguro para la comunicación cliente-servidor y el manejo de datos.
Descripción general de las funciones del servidor privateGPT
El servidor privateGPT ofrece un conjunto robusto de funciones diseñadas para proporcionar una comunicación eficiente, flexible y segura con el Protocolo de Contexto de Modelo (MCP). A continuación, se presenta un resumen de las principales características y funcionalidades disponibles en el servidor.
Características principales
1. Autenticación y autorización
- Funcionalidad de inicio de sesión : autentica a los usuarios con correo electrónico y contraseña para generar tokens de acceso.
- Funcionalidad de cierre de sesión : invalida de forma segura los tokens de usuario para finalizar sesiones.
2. Gestión del chat
- Iniciar un chat : inicia una conversación con el servidor, utilizando opcionalmente bases de conocimiento públicas o contextos de grupos específicos.
- Continuar un chat : reanude una conversación en curso proporcionando el ID del chat y un mensaje de seguimiento.
- Recuperar información del chat : obtiene metadatos y mensajes de un chat específico por su ID.
- Eliminar todos los chats : elimina los historiales de chat anteriores del usuario que realiza la ejecución (historial de chat).
- Eliminar chat : elimina el chat actual del usuario que lo está ejecutando.
3. Gestión de grupos
- Lista de grupos : vea los grupos personales y asignables disponibles para el usuario.
- Crear grupos : agregue nuevos grupos con nombres y descripciones para fines organizativos.
- Eliminar grupos : elimina los grupos existentes (si está habilitado en la configuración).
4. Gestión de fuentes
- Crear fuentes : agregue nuevas fuentes con contenido y asígnelas a grupos específicos.
- Editar fuentes : actualice las fuentes existentes con nuevo contenido o metadatos.
- Eliminar fuentes : elimine las fuentes que ya no sean necesarias.
- Recuperar fuentes : obtiene información sobre una fuente específica por su ID.
- Listar fuentes : ver todas las fuentes asignadas a un grupo específico.
5. Gestión de usuarios
- Crear usuarios : registre nuevos usuarios con roles, grupos y configuraciones personalizables.
- Editar usuarios : actualice la información del usuario, incluido el nombre, el correo electrónico, la contraseña y los roles.
- Eliminar usuarios : elimina usuarios del sistema (si está habilitado en la configuración).
- Reactivar usuario : reactiva un usuario que fue desactivado previamente.
6. Flexibilidad de configuración
- Activación/desactivación de funciones : habilite o deshabilite funcionalidades individuales del servidor a través del archivo de configuración
.env
. - Soporte de idiomas : personalice los mensajes del sistema del servidor en su idioma preferido (por ejemplo, inglés o alemán).
- Validación SSL : activa la validación SSL para conexiones seguras al servidor.
7. Manejo y registro de errores
- Mensajes de error detallados y registro para:
- Solicitudes no válidas
- Errores de autenticación
- Problemas de comunicación de la API
- Respuestas configurables cuando se accede a una función deshabilitada.
8. Características de seguridad
- Autenticación basada en token : garantiza un acceso seguro y controlado a las funciones del servidor.
- Acceso a grupos restringidos : opción para limitar el acceso a
assignableGroups
para una mayor privacidad.
Ejemplos de casos de uso
- Atención al cliente : utilice las funciones de chat para crear agentes conversacionales inteligentes.
- Gestión del conocimiento : gestione y recupere datos estructurados con fuentes y grupos.
- Colaboración multiusuario : cree, edite y asigne usuarios a grupos para flujos de trabajo colaborativos.
- Funcionalidad personalizable : active solo las funciones que necesita para su aplicación.
Cómo utilizar
- Copie el archivo
privateGPT.env.json.example
enprivateGPT.env.json
, por ejemplo, concp .\privateGPT.env.json.example .\privateGPT.env.json
- Configure el servidor editando el archivo
privateGPT.env.json
. - Inicie el servidor utilizando el script proporcionado.
- Interactúe con el servidor a través de llamadas API para utilizar sus funciones.
Consulte la documentación de la API para obtener instrucciones de uso detalladas y ejemplos para cada punto final.
El servidor privateGPT es una potente herramienta para gestionar comunicaciones y datos estructurados en un entorno personalizable. Adapte sus funciones a sus necesidades para obtener la máxima eficiencia y control.
Instalación
- Clonar el repositorio:
Ahora tienes que elegir: Manualmente o automático.
Manually step-by-step Installation
- Instalar
npm
, por ejemplo:
- Instalar dependencias
- Construir el proyecto:
or Automatic Installation
- Hacer que
InstallMPCServer.sh
sea ejecutable (Linux):
- Ejecuta el script y listo. Presta atención a los mensajes de error y asegúrate de que todo esté correcto.
Descripción de la configuración
Configuración de proxy
Esta sección proporciona explicaciones detalladas de las configuraciones Proxy_Config
utilizadas en el sistema.
Use Proxy
Si se utiliza un proxy, es necesario definir un encabezado para la autenticación en el proxy.
Llave | Descripción | Valor de ejemplo |
---|---|---|
USAR_PROXY | Determina si la aplicación debe enrutar | true |
solicitudes a través de un servidor proxy. |
Ejemplo de configuración del backend de un HAProxy. Solo se aceptarán solicitudes con el encabezado 1234567890ABCDEFHIJ
:
Header Encryption
Llave | Descripción | Valor de ejemplo |
---|---|---|
ENCABEZADO_ENCRYPTED | Indica si el encabezado de acceso de proxy personalizado está cifrado. | true |
"true"
: El encabezado de acceso está cifrado. Utilice la herramienta de cifrado de la carpeta de seguridad del servidor para cifrar el encabezado."false"
: el encabezado de acceso es texto simple.
Access Header
El valor del encabezado personalizado utilizado para la autenticación de proxy o el control de acceso. Si HEADER_ENCRYPTED
es "true"
, este valor debe descifrarse antes de su uso.
Llave | Descripción | Valor de ejemplo |
---|---|---|
ENCABEZADO DE ACCESO | Se utiliza para autenticación de proxy o control de acceso. | 123abc.. |
Notas
- Asegúrese de que
ACCESS_HEADER
esté protegido correctamente siHEADER_ENCRYPTED
está configurado como"true"
. - Verifique nuevamente la configuración del servidor proxy para evitar problemas de conectividad.
Configuración del servidor
Para una autenticación de certificado segura, cree un archivo .env
con sus credenciales privateGPT, por ejemplo, privateGPT.env.json. Se pueden ajustar las configuraciones en el archivo .env
para personalizar el servidor y sus funcionalidades.
Genere los certificados (si no tiene certificados ssh use ssh-keygen -t rsa
), se necesitan archivos .pem:
Tras este proceso, puede crear texto cifrado a partir de contraseñas con la Herramienta de cifrado de contraseñas cifradas y probar el cifrado con la Herramienta de descifrado de contraseñas cifradas. Encontrará la descripción de su funcionamiento en la sección Security
de este documento.
A continuación, debe proporcionar los certificados SSL/TLS server.crt
y server.key
para garantizar que la comunicación con los clientes y agentes esté cifrada. Si desea utilizar certificados autofirmados, puede generarlos ejecutando el siguiente comando:
Nota: Los clientes y agentes pueden detectar que el servidor utiliza certificados autofirmados, ya que estos son potencialmente inseguros en comparación con los certificados oficiales, que verifican la organización y otros aspectos. Sin embargo, los clientes y agentes pueden aceptar la comunicación con estos certificados mediante el parámetro correspondiente (consulte la descripción de los parámetros de cliente y agente correspondientes).
A continuación se muestra un ejemplo de archivo de configuración .env
para el servidor privateGPT, con descripciones de cada configuración. Personalice estos valores para adaptarlos a su entorno y requisitos.
Server Port
Llave | Descripción | Valor de ejemplo |
---|---|---|
PUERTO | El puerto en el que se ejecuta el servidor MCP. | 5000 |
Language
El sistema admite de fábrica: de
, en
, pt
, es
, nl
y fr
. Se pueden añadir fácilmente todos los idiomas modificando el privateGPT-messages.js
. Este archivo debe almacenarse, tras la modificación, tanto en /src
como en /dist
.
Llave | Descripción | Valor de ejemplo |
---|---|---|
IDIOMA | El idioma de los mensajes del sistema del servidor ( en o de ). | "de" |
SSL Validation
Llave | Descripción | Valor de ejemplo |
---|---|---|
Validación SSL | Utilice "false" sólo si el cliente no puede validar el certificado del servidor. | "false" |
Encryption
Llave | Descripción | Valor de ejemplo |
---|---|---|
CIFRADO DE CONTRASEÑA | Si se establece en "true" el servidor solo acepta contraseñas en texto cifrado. | "false" |
CLAVE PÚBLICA | Especifica la ruta del sistema de archivos al archivo PEM público del servidor utilizado para RSA. | "~/.ssh/id_rsa_public.pem" |
CLAVE PRIVADA | Especifica la ruta del sistema de archivos al archivo de clave privada del servidor utilizado para RSA. | "~/.ssh/id_rsa_public.pem" |
SSL/TLS
Llave | Descripción | Valor de ejemplo |
---|---|---|
HABILITAR TLS | Si se establece como "true" el servidor solo proporciona comunicación cifrada TLS con clientes y agentes. | "true" |
RUTA DE LA CLAVE SSL | Especifica la ruta del sistema de archivos al archivo de clave SSL/TLS del servidor utilizado para SSL/TLS. | "~/.ssh/certs/server.key" |
RUTA DEL CERTIFICADO SSL | Especifica la ruta del sistema de archivos al certificado del servidor utilizado para SSL/TLS. | "~/.ssh/certs/server.crt" |
Restrictions
Llave | Descripción | Valor de ejemplo |
---|---|---|
GRUPOS RESTRINGIDOS | Establecer como true evita el acceso del cliente a assignableGroups . | true |
HABILITAR ABRIR API AI COMP | Establecer true habilita el modo de compatibilidad para la API de OpenAI. | false |
Logging
Llave | Descripción | Valor de ejemplo |
---|---|---|
ARCHIVO DE REGISTRO ESCRITO | Habilitar archivo de registro. Si se establece en false , no se creará logs/server.log . Si esta opción se establece en "true", el registro se puede recuperar a través de "http://:3000" del servidor. | true |
LOG_IPs | Registra las IP de los clientes/agentes. Si se establece como false , esta información se reemplaza por \*\*\*\*\* y no se puede restaurar. | false |
MODO ANÓNIMO | Desactivar todo lo relacionado con el registro. No se registran, guardan ni muestran comunicaciones, errores ni nada similar. | false\ |
Feature Activation/Deactivation
Controle la disponibilidad de las funciones individuales del servidor. Configure el valor correspondiente como true
para habilitar la función o false
para deshabilitarla. Las funciones deshabilitadas mostrarán un mensaje indicando que no están disponibles.
Llave | Descripción | Valor de ejemplo |
---|---|---|
HABILITAR INICIO DE SESIÓN | Habilita o deshabilita la función de inicio de sesión. | true |
HABILITAR CIERRE DE SESIÓN | Habilita o deshabilita la función de cierre de sesión. | true |
HABILITAR CHAT | Habilita o deshabilita la funcionalidad de chat. | true |
HABILITAR CONTINUAR EL CHAT | Habilita o deshabilita la continuación de un chat. | true |
HABILITAR OBTENER INFORMACIÓN DEL CHAT | Habilita o deshabilita la recuperación de información del chat. | true |
HABILITAR_ELIMINAR_TODOS_LOS_CHATS | Habilita o deshabilita la recuperación de información del chat. | true |
HABILITAR_ELIMINAR_CHAT | Habilita o deshabilita la recuperación de información del chat. | true |
HABILITAR_LISTA_GRUPOS | Habilita o deshabilita la lista de grupos. | true |
HABILITAR GRUPO DE ALMACENES | Habilita o deshabilita la creación de un grupo. | true |
HABILITAR_ELIMINAR_GRUPO | Habilita o deshabilita la eliminación de un grupo. | false |
HABILITAR CREAR FUENTE | Habilita o deshabilita la creación de una fuente. | true |
HABILITAR EDICIÓN DE FUENTE | Habilita o deshabilita la edición de una fuente. | true |
HABILITAR_ELIMINAR_FUENTE | Habilita o deshabilita la eliminación de una fuente. | true |
HABILITAR OBTENER FUENTE | Habilita o deshabilita la recuperación de una fuente. | true |
HABILITAR_LISTA_FUENTES | Habilita o deshabilita la lista de fuentes. | true |
HABILITAR_ALMACENAMIENTO_USUARIO | Habilita o deshabilita la creación de un usuario. | true |
HABILITAR EDICIÓN DE USUARIO | Habilita o deshabilita la edición de un usuario. | false |
HABILITAR_ELIMINAR_USUARIO | Habilita o deshabilita la eliminación de un usuario. | false |
HABILITAR REACTIVAR USUARIO | Habilita o deshabilita la reactivación de un usuario. | false |
Uso
- Habilitar una función : establezca el valor correspondiente en el archivo
.env
entrue
. - Deshabilitar una función : establezca el valor correspondiente en el archivo
.env
enfalse
.- El servidor responderá con un mensaje indicando que la función está deshabilitada.
Ejemplo de entrada .env
:
Uso
Iniciar el servidor:
El servidor se iniciará y escuchará en stdio los comandos MCP.
Manejo de errores
El servidor gestiona varios escenarios de error:
- Errores de autenticación
- Errores de red
- Solicitudes no válidas
- Errores de API
- Limitación de velocidad
- Errores de tiempo de espera
Los errores se asignan a códigos de error MCP apropiados e incluyen mensajes detallados para la depuración.
Herramientas disponibles
Generar contraseña cifrada
Genere una contraseña para la entrada Proxy_Config->Password del cliente y/o del servidor:
Compruebe la contraseña cifrada generada
Para comprobar el uso de cifrado:
Consulte las secciones Encrypted Password Generation Tool
y Encrypted Password Decryption Tool
a continuación para obtener más información.
Herramienta de generación de contraseñas cifradas
Descripción general
La Herramienta de Generación de Contraseñas Cifradas es un script de Node.js diseñado para cifrar de forma segura las contraseñas de los usuarios mediante criptografía de clave pública RSA. Esta herramienta garantiza la protección de los datos confidenciales de las contraseñas durante su transmisión y almacenamiento mediante robustos mecanismos de cifrado. Es un componente esencial para sistemas que requieren la gestión y transmisión segura de contraseñas entre clientes y servidores.
Características
- Cifrado seguro: utiliza criptografía de clave pública RSA (Rivest–Shamir–Adleman) para cifrar contraseñas confidenciales.
- Interfaz fácil de usar: solicita a los usuarios que ingresen sus contraseñas de forma segura a través de la línea de comando.
- Manejo de errores: proporciona mensajes de error completos para claves faltantes o problemas de cifrado.
- Integración flexible: Se puede integrar en sistemas más grandes que requieran cifrado y manejo seguro de contraseñas.
Cómo funciona
- Carga de clave pública: el script carga la clave pública RSA desde una ruta de archivo específica proporcionada como un argumento de línea de comando.
- Entrada de contraseña: solicita al usuario que ingrese su contraseña de forma segura a través de la línea de comando.
- Proceso de cifrado: utilizando la clave pública cargada y
RSA_PKCS1_PADDING
, el script cifra la contraseña ingresada. - Salida: La contraseña cifrada se muestra en formato Base64, lista para su transmisión o almacenamiento seguro.
Prerrequisitos
- Node.js: Asegúrate de tener Node.js instalado en tu sistema. Puedes descargarlo desde el sitio web oficial de Node.js.
- Clave pública RSA: debe tener acceso a la clave pública RSA (
id_rsa_public.pem
) utilizada para cifrar la contraseña.
Instalación
- Instalar dependencias: El script utiliza módulos integrados de Node.js, por lo que no se requieren dependencias adicionales. Sin embargo, asegúrese de que su versión de Node.js sea compatible con los módulos ES6.Copy
Uso
- Prepare su clave pública RSA: asegúrese de tener su clave pública RSA (
id_rsa_public.pem
) almacenada de forma segura en su servidor MCP. - Ejecute el script, lo encontrará en el directorio
security
del servidor MCP: Ejecute el script usando Node.js, proporcionando la ruta a su clave pública como un argumento de línea de comando.Ejemplo:CopyCopy - Ingrese su contraseña: cuando se le solicite, ingrese su contraseña de forma segura.Copy
- Ver la contraseña cifrada: el script generará la contraseña cifrada en formato Base64.Copy
Herramienta de descifrado de contraseñas cifradas
Descripción general
La Herramienta de Descifrado de Contraseñas Cifradas es un script de Node.js diseñado para descifrar de forma segura contraseñas cifradas mediante criptografía de clave privada RSA. Esta herramienta garantiza la protección de los datos confidenciales de las contraseñas durante su transmisión y almacenamiento mediante robustos mecanismos de cifrado y descifrado. Para verificar o descifrar una contraseña cifrada, utilice la clave privada. Esto es útil para garantizar que el cifrado se realizó correctamente.
Características
- Descifrado seguro: utiliza criptografía de clave privada RSA (Rivest–Shamir–Adleman) para descifrar datos de contraseñas confidenciales.
- Manejo de errores: proporciona mensajes de error completos para claves faltantes o problemas de descifrado.
- Interfaz fácil de usar: solicita a los usuarios que ingresen contraseñas cifradas de forma segura a través de la línea de comandos.
- Integración flexible: Se puede integrar en sistemas más grandes que requieran un manejo seguro de contraseñas.
Cómo funciona
- Carga de clave privada: el script carga la clave privada RSA desde una ruta de archivo específica proporcionada como un argumento de línea de comando.
- Entrada de contraseña cifrada: solicita al usuario que ingrese una contraseña cifrada en formato Base64.
- Proceso de descifrado: utilizando la clave privada cargada y RSA_PKCS1_PADDING, el script descifra la contraseña cifrada.
- Salida: La contraseña de texto simple descifrada se muestra en la consola.
Prerrequisitos
- Node.js: Asegúrate de tener Node.js instalado en tu sistema. Puedes descargarlo desde el sitio web oficial de Node.js.
- Clave privada RSA: debe tener acceso a la clave privada RSA (
id_rsa
) en su servidor MCP utilizada para descifrar la contraseña.
Instalación
- Instalar dependencias: El script utiliza módulos integrados de Node.js, por lo que no se requieren dependencias adicionales. Sin embargo, asegúrese de que su versión de Node.js sea compatible con los módulos ES6.
Uso
- Prepare su clave privada RSA: asegúrese de tener su clave privada RSA (
id_rsa
) almacenada de forma segura en su máquina. - Ejecute el script, lo encontrará en el directorio
security
del servidor MCP: :** Ejecute el script usando Node.js, proporcionando la ruta a su clave privada como un argumento de línea de comando.Ejemplo:CopyCopy - Ingrese la contraseña cifrada: cuando se le solicite, ingrese la contraseña cifrada en formato Base64.Copy
- Ver la contraseña descifrada: el script generará la contraseña descifrada en texto simple.Copy
Esto descifrará la contraseña cifrada y mostrará el valor original.
Notas
- Asegúrese de que los archivos
~/.ssh/id_rsa_public.pem
(clave pública) y~/.ssh/id_rsa
(clave privada) existan y tengan los permisos correctos. - La herramienta de cifrado se basa en la clave pública, mientras que la herramienta de descifrado requiere la clave privada.
Estructura del proyecto
Servidor MCP para desarrollos MAS: descripción completa del proyecto
Este repositorio contiene el servidor MCP y todas las implementaciones de cliente relacionadas.
A continuación encontrará la estructura de directorio completa tal como aparece en la raíz del proyecto, que incluye:
clients
(C# .Net, C++, Go, Java, JavaScript, PHP, Python),dist
.,docs
,logs
,security
,src
,tests
,ver
y todas las subcarpetas/archivos.
Nota:
Este es un listado de directorio directo con comentarios mínimos.
Estructura del proyecto (lista completa)
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Una implementación de servidor que permite la comunicación segura entre clientes MCP y privateGPT, permitiendo a los usuarios chatear con privateGPT utilizando bases de conocimiento y administrar fuentes, grupos y usuarios a través de un Protocolo de Contexto de Modelo estandarizado.
- privateGPT MCP Server
- Why Agents
- Security
- 1. Transport Layer Security (TLS)
- Why Should TLS Be Enabled Between Client and Server?
- Conclusion
- 2. Password Encryption
- 3. Key Management
- 4. Decryption on the Server
- 5. Authorization Tokens
- 6. Restriction of Key Generation (Keygen)
- 7. Certificate-Based Access Control (CBAC)
- 8. Secure Configuration
- 9. Logging and Monitoring
- Summary
- Feature Overview for privateGPT Server
- Encrypted Password Generation Tool
- Encrypted Password Decryption Tool
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