본문으로 건너뛰기

apiserver.yaml

설정 파일은 ${VAR:default} 구문을 사용하여 환경 변수 주입을 지원합니다. 환경 변수가 설정되지 않은 경우 기본값이 사용됩니다.

일반적인 방법은 다양한 .env, .env.development, .env.prod 파일을 통해 값을 주입하거나, 하드코딩된 값으로 직접 설정을 변경하는 것입니다.

채팅 메시지 데이터베이스 설정

이 설정은 백엔드에서 채팅 메시지를 저장하기 위해 특별히 설계되었습니다 (프록시 설정과 동일한 데이터베이스를 공유할 수 있습니다). 아래 이미지에 표시된 정보에 해당합니다:

Chat Sessions and Messages

현재 3가지 데이터베이스 유형을 지원합니다:

  • SQLite3
  • PostgreSQL
  • MySQL

추가 데이터베이스 지원이 필요한 경우 Issue 섹션에서 요청하거나, 해당 구현을 직접 구현하여 PR을 제출할 수 있습니다 :)

database:
type: "${APISERVER_DB_TYPE:sqlite}" # 데이터베이스 유형 (sqlite, postgres, mysql)
host: "${APISERVER_DB_HOST:localhost}" # 데이터베이스 호스트 주소
port: ${APISERVER_DB_PORT:5432} # 데이터베이스 포트
user: "${APISERVER_DB_USER:postgres}" # 데이터베이스 사용자 이름
password: "${APISERVER_DB_PASSWORD:example}" # 데이터베이스 비밀번호
dbname: "${APISERVER_DB_NAME:./mcp-gateway.db}" # 데이터베이스 이름 또는 파일 경로
sslmode: "${APISERVER_DB_SSL_MODE:disable}" # 데이터베이스 연결의 SSL 모드

게이트웨이 프록시 스토리지 설정

이는 게이트웨이 프록시 설정을 저장하는 데 사용되며, 특히 MCP에서 API로의 매핑을 저장합니다. 아래 이미지에 표시되어 있습니다:

Gateway Proxy Configuration

현재 2가지 유형을 지원합니다:

  • disk: 설정은 디스크의 파일로 저장되며, 각 설정은 별도의 파일에 저장됩니다. nginx의 vhost 개념과 유사하며, 예를 들어 svc-a.yaml, svc-b.yaml 등입니다
  • db: 데이터베이스에 저장하며, 각 설정은 하나의 레코드입니다. 현재 세 가지 데이터베이스 유형을 지원합니다:
    • SQLite3
    • PostgreSQL
    • MySQL
storage:
type: "${GATEWAY_STORAGE_TYPE:db}" # 스토리지 유형: db, disk

# 데이터베이스 설정 (type이 'db'일 때 사용)
database:
type: "${GATEWAY_DB_TYPE:sqlite}" # 데이터베이스 유형 (sqlite, postgres, mysql)
host: "${GATEWAY_DB_HOST:localhost}" # 데이터베이스 호스트 주소
port: ${GATEWAY_DB_PORT:5432} # 데이터베이스 포트
user: "${GATEWAY_DB_USER:postgres}" # 데이터베이스 사용자 이름
password: "${GATEWAY_DB_PASSWORD:example}" # 데이터베이스 비밀번호
dbname: "${GATEWAY_DB_NAME:./data/mcp-gateway.db}" # 데이터베이스 이름 또는 파일 경로
sslmode: "${GATEWAY_DB_SSL_MODE:disable}" # 데이터베이스 연결의 SSL 모드

# 디스크 설정 (type이 'disk'일 때 사용)
disk:
path: "${GATEWAY_STORAGE_DISK_PATH:}" # 데이터 파일 저장 경로

알림 설정

알림 모듈은 주로 mcp-gateway에 설정 업데이트를 알리고 서비스 재시작 없이 핫 리로드를 트리거하는 데 사용됩니다.

현재 4가지 알림 방법을 지원합니다:

  • signal: 운영 체제 신호를 통해 알림을 보냅니다. kill -SIGHUP <pid> 또는 nginx -s reload와 유사합니다. mcp-gateway reload 명령을 통해 트리거할 수 있으며, 단일 머신 배포에 적합합니다
  • api: API 호출을 통해 알림을 보냅니다. mcp-gateway는 별도의 포트에서 수신 대기하고 요청을 받으면 핫 리로드를 수행합니다. curl http://localhost:5235/_reload를 통해 트리거할 수 있으며, 단일 머신 및 클러스터 배포에 적합합니다
  • redis: Redis의 pub/sub 기능을 통해 알림을 보냅니다. 단일 머신 및 클러스터 배포에 적합합니다
  • composite: 여러 방법을 사용하는 복합 알림입니다. 기본적으로 signalapi가 항상 활성화되어 있으며 다른 방법과 결합할 수 있습니다. 단일 머신 및 클러스터 배포에 적합하며 권장되는 기본 접근 방식입니다

알림 역할:

  • sender: 발신자 역할로, 알림 전송을 담당합니다. apiserver는 이 모드만 사용할 수 있습니다
  • receiver: 수신자 역할로, 알림 수신을 담당합니다. 단일 머신의 mcp-gateway는 이 모드만 사용하는 것이 좋습니다
  • both: 발신자와 수신자 역할 모두입니다. 클러스터 배포된 mcp-gateway는 이 모드를 사용할 수 있습니다
notifier:
role: "${APISERVER_NOTIFIER_ROLE:sender}" # 역할: sender, receiver 또는 both
type: "${APISERVER_NOTIFIER_TYPE:signal}" # 유형: signal, api, redis 또는 composite

# 신호 설정 (type이 'signal'일 때 사용)
signal:
signal: "${APISERVER_NOTIFIER_SIGNAL:SIGHUP}" # 전송할 신호
pid: "${APISERVER_NOTIFIER_SIGNAL_PID:/var/run/mcp-gateway.pid}" # PID 파일 경로

# API 설정 (type이 'api'일 때 사용)
api:
port: ${APISERVER_NOTIFIER_API_PORT:5235} # API 포트
target_url: "${APISERVER_NOTIFIER_API_TARGET_URL:http://localhost:5235/_reload}" # 리로드 엔드포인트

# Redis 설정 (type이 'redis'일 때 사용)
redis:
addr: "${APISERVER_NOTIFIER_REDIS_ADDR:localhost:6379}" # Redis 주소
password: "${APISERVER_NOTIFIER_REDIS_PASSWORD:UseStrongPasswordIsAGoodPractice}" # Redis 비밀번호
db: ${APISERVER_NOTIFIER_REDIS_DB:0} # Redis 데이터베이스 번호
topic: "${APISERVER_NOTIFIER_REDIS_TOPIC:mcp-gateway:reload}" # Redis pub/sub 토픽

OpenAI API 설정

OpenAI 설정 블록은 OpenAI API 통합을 위한 설정을 정의합니다:

openai:
api_key: "${OPENAI_API_KEY}" # OpenAI API 키 (필수)
model: "${OPENAI_MODEL:gpt-4.1}" # 사용할 모델
base_url: "${OPENAI_BASE_URL:https://api.openai.com/v1/}" # API 기본 URL

현재 OpenAI API 호환 LLM 호출만 통합되어 있습니다