privateGPT MCP Server

by Fujitsu-AI

Integrations

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

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

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

목차

privateGPT MCP 서버

privateGPT를 원하는 MCP 클라이언트의 에이전트로 사용할 수 있는 MCP(모델 컨텍스트 프로토콜) 서버 구현입니다. 이를 통해 privateGPT의 강력한 기능과 모든 MCP 호환 애플리케이션 간의 원활한 통합이 가능합니다.

MCP란 무엇인가요?

MCP는 애플리케이션이 LLM에 컨텍스트를 제공하는 방식을 표준화하는 개방형 프로토콜입니다. MCP는 AI 애플리케이션을 위한 USB-C 포트와 같습니다. USB-C가 다양한 주변 기기 및 액세서리에 기기를 연결하는 표준화된 방식을 제공하는 것처럼, MCP는 AI 모델을 다양한 데이터 소스 및 도구에 연결하는 표준화된 방식을 제공합니다.

왜 MCP인가?

MCP는 LLM을 기반으로 에이전트와 복잡한 워크플로를 구축하는 데 도움을 줍니다. LLM은 데이터 및 도구와 통합해야 하는 경우가 많으며, MCP는 다음과 같은 기능을 제공합니다.

  • LLM이 직접 연결할 수 있는 미리 구축된 통합 목록이 점점 늘어나고 있습니다.
  • LLM 공급자와 공급업체 간 전환의 유연성
  • 인프라 내에서 데이터를 보호하기 위한 모범 사례

작동 원리

MCP는 본질적으로 호스트 애플리케이션이 여러 서버에 연결할 수 있는 클라이언트-서버 아키텍처를 따릅니다.

  • MCP 호스트 : MCP를 통해 데이터에 액세스하려는 애플리케이션, Claude Desktop, 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. 보안 및 로깅: 이 과정에서 에이전트는 상호작용을 모니터링하고, 보안 정책이 준수되는지 확인하고, 추후 분석을 위해 관련 정보를 로깅합니다.

이 맥락에서 에이전트를 사용하는 이점

  • 모듈성: 에이전트를 사용하면 책임을 명확하게 분리할 수 있으므로 시스템을 유지 관리하고 확장하기가 더 쉽습니다.
  • 보안: 액세스와 활동 모니터링을 중앙에서 관리하면 보안 위험을 최소화하는 데 도움이 됩니다.
  • 효율성: 자동화된 에이전트는 수동 프로세스보다 더 빠르고 일관되게 작업을 수행할 수 있습니다.
  • 유연성: 에이전트는 새로운 기능이나 비즈니스 요구 사항의 변화를 지원하도록 쉽게 조정하거나 확장할 수 있습니다.

비밀번호 암호화의 중요성

민감한 데이터를 처리하는 모든 애플리케이션에서 보안은 매우 중요합니다. 이 서버는 두 가지 중요한 자격 증명 세트를 관리합니다.

  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 활성화는 데이터 개인 정보 보호, 보안 및 통신 무결성을 보장하는 데 필수적입니다. 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 )이 있습니다.
  • 비활성화된 상태에서 키젠 함수를 호출하려고 하면 오류 메시지가 표시됩니다.

감사 로깅

  • 모든 키젠 작업은 감사 및 모니터링 목적으로 기록됩니다.

7. 인증서 기반 액세스 제어(CBAC)

  • 인증서 인증이 활성화되어 키를 사용하여 서버에 로그인할 때 에이전트는 비밀번호를 요구하지 않으므로, 해당 서버에 자동으로 잠깁니다. 다른 MCP privateGPT 서버에 로그인하려는 경우, 키가 서버의 개인 인증서와 일치하는지 확인되므로 이 로그인 시도는 거부됩니다.

특징

  • keygen , store_user , edit_source 와 같은 기능은 권한이 있는 역할만 접근할 수 있습니다.
  • 승인되지 않은 접근 시도는 자세한 오류 메시지와 함께 거부됩니다.

구성

  • 활성화 또는 비활성화된 기능은 서버 구성( Functions 객체)에서 지정할 수 있습니다.

8. 보안 구성

서버 구성에는 여러 가지 보안 관련 옵션이 포함되어 있습니다.

SSL 유효성 검사

  • 안전한 통신을 보장하기 위해 SSL/TLS 인증서를 검증합니다.
  • 환경 요구 사항(예: 테스트 대 프로덕션)에 따라 활성화하거나 비활성화할 수 있습니다.

비밀번호 암호화

  • 비밀번호 암호화를 활성화하거나 비활성화합니다.
  • 암호화가 불가능한 환경에서도 호환성을 보장합니다.

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. 저장소를 복제합니다.

지엑스피1

이제 수동 또는 자동을 선택해야 합니다.

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"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

이 시스템은 de , en , pt , es , nl , fr 등의 기본 언어를 지원합니다. privateGPT-messages.js 파일을 수정하여 모든 언어를 쉽게 추가할 수 있습니다. 수정 후 이 파일은 /src/dist 에 모두 저장해야 합니다.

열쇠설명예시 값
언어서버의 시스템 메시지에 사용되는 언어( en 또는 de )."de"

SSL Validation

열쇠설명예시 값
SSL 유효성 검사클라이언트가 서버의 인증서를 검증할 수 없는 경우에만 "false" 사용하세요."false"

Encryption

열쇠설명예시 값
비밀번호 암호화"true" 로 설정하면 서버는 암호문으로 된 비밀번호만 허용합니다."false"
공개 키RSA에 사용되는 서버의 공개 PEM 파일에 대한 파일 시스템 경로를 지정합니다."~/.ssh/id_rsa_public.pem"
개인 키RSA에 사용되는 서버의 개인 키 파일에 대한 파일 시스템 경로를 지정합니다."~/.ssh/id_rsa_public.pem"

SSL/TLS

열쇠설명예시 값
TLS 사용 설정"true" 로 설정하면 서버는 클라이언트 및 에이전트와 TLS 암호화된 통신만 제공합니다."true"
SSL__경로SSL/TLS에 사용되는 서버의 SSL/TLS 키 파일에 대한 파일 시스템 경로를 지정합니다."~/.ssh/certs/server.key"
SSL_인증_경로SSL/TLS에 사용되는 서버 인증서의 파일 시스템 경로를 지정합니다."~/.ssh/certs/server.crt"

Restrictions

열쇠설명예시 값
제한 그룹true 설정하면 클라이언트가 assignableGroups 에 액세스하지 못합니다.true
AI COMP API를 엽니다true 설정하면 OpenAI API에 대한 호환 모드가 허용됩니다.false

Logging

열쇠설명예시 값
작성된 로그 파일로그 파일을 활성화합니다. false 로 설정하면 로그 logs/server.log 이 작성되지 않습니다. 이 옵션을 'true'로 설정하면 서버의 `http://:3000'을 통해 로그를 검색할 수 있습니다.true
LOG_IPs클라이언트/에이전트의 IP 주소를 기록합니다. false 로 설정하면 이 정보는 \*\*\*\*\* 로 대체되며 복원할 수 없습니다.false
익명 모드로깅과 관련된 모든 기능을 비활성화하세요. 통신, 오류 등이 기록/저장되거나 표시되지 않습니다.false\

Feature Activation/Deactivation

개별 서버 기능의 가용성을 제어합니다. 해당 값을 true 로 설정하면 기능을 활성화하고, false 로 설정하면 비활성화합니다. 비활성화된 기능은 사용할 수 없다는 메시지를 반환합니다.

열쇠설명예시 값
로그인 활성화로그인 기능을 활성화하거나 비활성화합니다.true
로그아웃 활성화로그아웃 기능을 활성화하거나 비활성화합니다.true
채팅 활성화채팅 기능을 활성화하거나 비활성화합니다.true
채팅 계속하기채팅을 계속할지 여부를 설정합니다.true
채팅 정보 받기 활성화채팅 정보 검색을 활성화하거나 비활성화합니다.true
모든 채팅 삭제 활성화채팅 정보 검색을 활성화하거나 비활성화합니다.true
채팅 삭제 활성화채팅 정보 검색을 활성화하거나 비활성화합니다.true
목록 그룹 활성화목록 그룹을 활성화하거나 비활성화합니다.true
매장 그룹 활성화그룹 생성을 활성화하거나 비활성화합니다.true
그룹 삭제 활성화그룹 삭제를 활성화하거나 비활성화합니다.false
소스 생성 활성화소스 생성을 활성화하거나 비활성화합니다.true
소스 편집 활성화소스 편집을 활성화하거나 비활성화합니다.true
소스 삭제 활성화소스 삭제를 활성화하거나 비활성화합니다.true
소스 가져오기 활성화소스 검색을 활성화하거나 비활성화합니다.true
소스 목록 활성화소스 목록을 활성화하거나 비활성화합니다.true
ENABLE_STORE_USER사용자 생성을 활성화하거나 비활성화합니다.true
사용자 편집 활성화사용자 편집을 활성화하거나 비활성화합니다.false
사용자 삭제 활성화사용자 삭제를 활성화하거나 비활성화합니다.false
사용자 활성화사용자 재활성화를 활성화하거나 비활성화합니다.false

용법

  • 함수 활성화 : .env 파일에서 해당 값을 true 로 설정합니다.
  • 함수 비활성화 : .env 파일에서 해당 값을 false 로 설정합니다.
    • 서버는 해당 기능이 비활성화되었음을 나타내는 메시지로 응답합니다.

.env 항목 예시:

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

용법

서버를 시작합니다:

node dist/index.js

서버가 시작되어 stdio에서 MCP 명령을 수신합니다.

오류 처리

서버는 다양한 오류 시나리오를 처리합니다.

  • 인증 실패
  • 네트워크 오류
  • 잘못된 요청
  • API 오류
  • 속도 제한
  • 시간 초과 오류

오류는 적절한 MCP 오류 코드에 매핑되며 디버깅을 위한 자세한 메시지가 포함됩니다.

사용 가능한 도구

암호화된 비밀번호 생성

클라이언트 및/또는 서버의 Proxy_Config->Password 항목에 대한 비밀번호를 생성합니다.

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

생성된 암호화된 비밀번호를 확인하세요

암호화 사용을 확인하려면:

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

자세한 내용은 아래의 Encrypted Password Generation ToolEncrypted Password Decryption Tool 섹션을 참조하세요.


암호화된 비밀번호 생성 도구

개요

암호화된 비밀번호 생성 도구는 RSA 공개 키 암호화를 사용하여 사용자 비밀번호를 안전하게 암호화하도록 설계된 Node.js 스크립트입니다. 이 도구는 강력한 암호화 메커니즘을 활용하여 민감한 비밀번호 데이터가 전송 및 저장 중에 안전하게 보호되도록 합니다. 클라이언트와 서버 간의 안전한 비밀번호 처리 및 전송이 필요한 시스템에 필수적인 구성 요소입니다.

특징

  • 안전한 암호화: RSA(Rivest–Shamir–Adleman) 공개 키 암호화를 활용하여 민감한 비밀번호를 암호화합니다.
  • 사용자 친화적인 인터페이스: 명령줄을 통해 사용자에게 안전하게 비밀번호를 입력하라는 메시지를 표시합니다.
  • 오류 처리: 키 누락이나 암호화 문제에 대한 포괄적인 오류 메시지를 제공합니다.
  • 유연한 통합: 안전한 암호 처리 및 암호화가 필요한 대규모 시스템에 통합할 수 있습니다.

작동 원리

  1. 공개 키 로딩: 스크립트는 명령줄 인수로 제공된 지정된 파일 경로에서 RSA 공개 키를 로드합니다.
  2. 비밀번호 입력: 명령줄을 통해 사용자에게 비밀번호를 안전하게 입력하라는 메시지를 표시합니다.
  3. 암호화 프로세스: 로드된 공개 키와 RSA_PKCS1_PADDING 사용하여 스크립트는 입력된 비밀번호를 암호화합니다.
  4. 출력: 암호화된 비밀번호가 Base64 형식으로 표시되어 안전한 전송이나 저장이 가능합니다.

필수 조건

  • Node.js: 시스템에 Node.js가 설치되어 있는지 확인하세요. Node.js 공식 웹사이트 에서 다운로드할 수 있습니다.
  • RSA 공개 키: 비밀번호를 암호화하는 데 사용되는 RSA 공개 키( id_rsa_public.pem )에 액세스할 수 있어야 합니다.

설치

  • 종속성 설치: 스크립트는 기본 Node.js 모듈을 사용하므로 추가 종속성이 필요하지 않습니다. 단, Node.js 버전이 ES6 모듈을 지원하는지 확인하세요.
    rm -rf node_modules package-lock.json npm cache clean --force npm install

용법

  1. RSA 공개 키 준비: RSA 공개 키( id_rsa_public.pem )가 MCP 서버에 안전하게 저장되어 있는지 확인하세요.
  2. 스크립트를 실행하세요. 스크립트는 MCP 서버의 security 디렉토리에서 찾을 수 있습니다. Node.js를 사용하여 스크립트를 실행하고, 공개 키 경로를 명령줄 인수로 제공합니다.
    node encrypt_password.js /path/to/your/id_rsa_public.pem
    예:
    node security/encrypt_password.js ~/.ssh/id_rsa_public.pem
  3. 비밀번호 입력: 메시지가 표시되면 비밀번호를 안전하게 입력하세요.
    Please enter your password: ********
  4. 암호화된 비밀번호 보기: 스크립트는 Base64 형식으로 암호화된 비밀번호를 출력합니다.
    Encrypted Password: <Your_Encrypted_Password>

암호화된 비밀번호 해독 도구

개요

암호화된 비밀번호 복호화 도구는 RSA 개인 키 암호화를 사용하여 암호화된 비밀번호를 안전하게 복호화하도록 설계된 Node.js 스크립트입니다. 이 도구는 강력한 암호화 및 복호화 메커니즘을 활용하여 전송 및 저장 중에 민감한 비밀번호 데이터를 안전하게 보호합니다. 암호화된 비밀번호를 확인하거나 복호화하려면 개인 키를 사용하세요. 이는 암호화가 올바르게 수행되었는지 확인하는 데 유용합니다.

특징

  • 안전한 암호 해독: RSA(Rivest–Shamir–Adleman) 개인 키 암호화를 활용하여 민감한 비밀번호 데이터를 해독합니다.
  • 오류 처리: 키 누락이나 암호 해독 문제에 대한 포괄적인 오류 메시지를 제공합니다.
  • 사용자 친화적인 인터페이스: 명령줄을 통해 사용자에게 암호화된 비밀번호를 안전하게 입력하라는 메시지를 표시합니다.
  • 유연한 통합: 안전한 암호 처리가 필요한 대규모 시스템에 통합할 수 있습니다.

작동 원리

  1. 개인 키 로딩: 스크립트는 명령줄 인수로 제공된 특정 파일 경로에서 RSA 개인 키를 로드합니다.
  2. 암호화된 비밀번호 입력: 사용자에게 Base64 형식으로 암호화된 비밀번호를 입력하라는 메시지를 표시합니다.
  3. 복호화 프로세스: 로드된 개인 키와 RSA_PKCS1_PADDING을 사용하여 스크립트는 암호화된 비밀번호를 복호화합니다.
  4. 출력: 복호화된 일반 텍스트 비밀번호가 콘솔에 표시됩니다.

필수 조건

  • Node.js: 시스템에 Node.js가 설치되어 있는지 확인하세요. Node.js 공식 웹사이트 에서 다운로드할 수 있습니다.
  • RSA 개인 키: 비밀번호를 해독하는 데 사용되는 MCP 서버의 RSA 개인 키( id_rsa )에 액세스할 수 있어야 합니다.

설치

  • 종속성 설치: 스크립트는 기본 Node.js 모듈을 사용하므로 추가 종속성이 필요하지 않습니다. 단, Node.js 버전이 ES6 모듈을 지원하는지 확인하세요.

용법

  1. RSA 개인 키 준비: RSA 개인 키( id_rsa )가 컴퓨터에 안전하게 저장되어 있는지 확인하세요.
  2. 스크립트를 실행하면 MCP 서버의 security 디렉토리에서 찾을 수 있습니다. :** Node.js를 사용하여 스크립트를 실행하고 명령줄 인수로 개인 키 경로를 제공합니다.
    node decrypt_password.js /path/to/your/id_rsa
    예:
    node decrypt_password.js ~/.ssh/id_rsa
  3. 암호화된 비밀번호를 입력하세요. 메시지가 표시되면 Base64 형식으로 암호화된 비밀번호를 입력하세요.
    Please enter the encrypted password: <Your_Encrypted_Password>
  4. 복호화된 비밀번호 보기: 스크립트는 복호화된 일반 텍스트 비밀번호를 출력합니다.
    Decrypted Password: your_plaintext_password

이렇게 하면 암호화된 비밀번호가 해독되어 원래 값이 표시됩니다.

노트

  • ~/.ssh/id_rsa_public.pem (공개 키) 및 ~/.ssh/id_rsa (비공개 키) 파일이 있는지, 그리고 올바른 권한이 있는지 확인하세요.
  • 암호화 도구는 공개 키를 사용하는 반면, 복호화 도구에는 개인 키가 필요합니다.

프로젝트 구조

MAS 개발을 위한 MCP 서버 – 전체 프로젝트 개요

이 저장소에는 MCP 서버 와 관련된 모든 클라이언트 구현이 포함되어 있습니다.
아래에서 프로젝트 루트에 나열된 전체 디렉토리 구조를 확인할 수 있습니다. 여기에는 다음이 포함됩니다.

  • clients (C# .Net, C++, Go, Java, JavaScript, PHP, Python),
  • dist ,
  • docs ,
  • logs ,
  • security ,
  • src ,
  • tests ,
  • ver 및 모든 하위 폴더/파일.

메모:
이것은 최소한의 해설이 담긴 직접적인 디렉토리 목록 입니다.


프로젝트 구조(전체 목록)

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

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

Related MCP Servers

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

View all related MCP servers

ID: 79dp2wmo8v