apiserver.yaml
Die Konfigurationsdatei unterstützt die Injektion von Umgebungsvariablen mit der Syntax ${VAR:default}
. Wenn die Umgebungsvariable nicht gesetzt ist, wird der Standardwert verwendet.
Die übliche Praxis ist, Werte über verschiedene .env
, .env.development
, .env.prod
Dateien zu injizieren, oder die Konfiguration direkt mit festen Werten zu ändern.
Chat-Nachrichten-Datenbank-Konfiguration
Diese Konfiguration ist speziell für die Speicherung von Chat-Nachrichten im Backend (obwohl sie die gleiche Datenbank mit Proxy-Konfigurationen teilen kann). Sie entspricht den Informationen, die im folgenden Bild gezeigt werden:
Derzeit werden 3 Arten von Datenbanken unterstützt:
- SQLite3
- PostgreSQL
- MySQL
Wenn Sie Unterstützung für zusätzliche Datenbanken benötigen, können Sie dies im Issue Bereich anfordern oder die entsprechende Implementierung selbst erstellen und einen PR einreichen :)
database:
type: "${APISERVER_DB_TYPE:sqlite}" # Datenbanktyp (sqlite, postgres, mysql)
host: "${APISERVER_DB_HOST:localhost}" # Datenbank-Host-Adresse
port: ${APISERVER_DB_PORT:5432} # Datenbank-Port
user: "${APISERVER_DB_USER:postgres}" # Datenbank-Benutzername
password: "${APISERVER_DB_PASSWORD:example}" # Datenbank-Passwort
dbname: "${APISERVER_DB_NAME:./mcp-gateway.db}" # Datenbankname oder Dateipfad
sslmode: "${APISERVER_DB_SSL_MODE:disable}" # SSL-Modus für die Datenbankverbindung
Gateway-Proxy-Speicher-Konfiguration
Dies wird verwendet, um Gateway-Proxy-Konfigurationen zu speichern, insbesondere die Mappings von MCP zu API, wie im folgenden Bild gezeigt:
Derzeit werden 2 Arten unterstützt:
- disk: Konfigurationen werden als Dateien auf der Festplatte gespeichert, wobei jede Konfiguration in einer separaten Datei gespeichert wird, ähnlich dem vhost-Konzept von nginx, z.B.
svc-a.yaml
,svc-b.yaml
- db: Speicherung in der Datenbank, jede Konfiguration ist ein Datensatz. Derzeit werden drei Arten von Datenbanken unterstützt:
- SQLite3
- PostgreSQL
- MySQL
storage:
type: "${GATEWAY_STORAGE_TYPE:db}" # Speichertyp: db, disk
# Datenbank-Konfiguration (wird verwendet, wenn type 'db' ist)
database:
type: "${GATEWAY_DB_TYPE:sqlite}" # Datenbanktyp (sqlite, postgres, mysql)
host: "${GATEWAY_DB_HOST:localhost}" # Datenbank-Host-Adresse
port: ${GATEWAY_DB_PORT:5432} # Datenbank-Port
user: "${GATEWAY_DB_USER:postgres}" # Datenbank-Benutzername
password: "${GATEWAY_DB_PASSWORD:example}" # Datenbank-Passwort
dbname: "${GATEWAY_DB_NAME:./data/mcp-gateway.db}" # Datenbankname oder Dateipfad
sslmode: "${GATEWAY_DB_SSL_MODE:disable}" # SSL-Modus für die Datenbankverbindung
# Festplatten-Konfiguration (wird verwendet, wenn type 'disk' ist)
disk:
path: "${GATEWAY_STORAGE_DISK_PATH:}" # Datendatei-Speicherpfad
Benachrichtigungs-Konfiguration
Das Benachrichtigungs-Modul wird hauptsächlich verwendet, um mcp-gateway
über Konfigurationsaktualisierungen zu informieren und Hot-Reloads ohne Neustart des Dienstes auszulösen.
Derzeit werden 4 Benachrichtigungsmethoden unterstützt:
- signal: Benachrichtigung über Betriebssystem-Signale, ähnlich wie
kill -SIGHUP <pid>
odernginx -s reload
. Kann über den Befehlmcp-gateway reload
ausgelöst werden, geeignet für Einzelmaschinen-Bereitstellungen - api: Benachrichtigung über einen API-Aufruf.
mcp-gateway
hört auf einem unabhängigen Port und führt Hot-Reloads durch, wenn Anfragen empfangen werden. Kann übercurl http://localhost:5235/_reload
direkt ausgelöst werden, geeignet für Einzelmaschinen- und Cluster-Bereitstellungen - redis: Benachrichtigung über die Redis Pub/Sub-Funktionalität, geeignet für Einzelmaschinen- und Cluster-Bereitstellungen
- composite: Kombinierte Benachrichtigung, die mehrere Methoden verwendet. Standardmäßig sind
signal
undapi
immer aktiviert und können mit anderen Methoden kombiniert werden. Geeignet für Einzelmaschinen- und Cluster-Bereitstellungen und die empfohlene Standardmethode
Benachrichtigungs-Rollen:
- sender: Absender-Rolle, verantwortlich für das Senden von Benachrichtigungen.
apiserver
kann nur diesen Modus verwenden - receiver: Empfänger-Rolle, verantwortlich für das Empfangen von Benachrichtigungen. Einzelmaschinen-
mcp-gateway
sollte nur diesen Modus verwenden - both: Sowohl Absender- als auch Empfänger-Rolle. Cluster-bereitgestellter
mcp-gateway
kann diesen Modus verwenden
notifier:
role: "${APISERVER_NOTIFIER_ROLE:sender}" # Rolle: sender, receiver, oder both
type: "${APISERVER_NOTIFIER_TYPE:signal}" # Typ: signal, api, redis, oder composite
# Signal-Konfiguration (wird verwendet, wenn type 'signal' ist)
signal:
signal: "${APISERVER_NOTIFIER_SIGNAL:SIGHUP}" # Zu sendendes Signal
pid: "${APISERVER_NOTIFIER_SIGNAL_PID:/var/run/mcp-gateway.pid}" # PID-Dateipfad
# API-Konfiguration (wird verwendet, wenn type 'api' ist)
api:
port: ${APISERVER_NOTIFIER_API_PORT:5235} # API-Port
target_url: "${APISERVER_NOTIFIER_API_TARGET_URL:http://localhost:5235/_reload}" # Reload-Endpunkt
# Redis-Konfiguration (wird verwendet, wenn type 'redis' ist)
redis:
addr: "${APISERVER_NOTIFIER_REDIS_ADDR:localhost:6379}" # Redis-Adresse
password: "${APISERVER_NOTIFIER_REDIS_PASSWORD:UseStrongPasswordIsAGoodPractice}" # Redis-Passwort
db: ${APISERVER_NOTIFIER_REDIS_DB:0} # Redis-Datenbanknummer
topic: "${APISERVER_NOTIFIER_REDIS_TOPIC:mcp-gateway:reload}" # Redis Pub/Sub-Thema
OpenAI API-Konfiguration
Der OpenAI-Konfigurationsblock definiert die Einstellungen für die OpenAI API-Integration:
openai:
api_key: "${OPENAI_API_KEY}" # OpenAI API-Schlüssel (erforderlich)
model: "${OPENAI_MODEL:gpt-4.1}" # Zu verwendendes Modell
base_url: "${OPENAI_BASE_URL:https://api.openai.com/v1/}" # API-Basis-URL
Derzeit werden nur OpenAI API-kompatible LLMs-Aufrufe integriert
Super-Administrator-Konfiguration
Die Super-Administrator-Konfiguration wird verwendet, um das initiale Administrator-Konto des Systems einzurichten. Jedes Mal, wenn apiserver
gestartet wird, prüft es, ob es existiert, und erstellt es automatisch, wenn es nicht existiert
super_admin:
username: "${SUPER_ADMIN_USERNAME:admin}" # Super-Administrator-Benutzername
password: "${SUPER_ADMIN_PASSWORD:admin}" # Super-Administrator-Passwort (in Produktion ändern)
Es wird dringend empfohlen, in Produktionsumgebungen oder öffentlichen Netzwerken starke Passwörter zu verwenden!
JWT-Konfiguration
Die JWT-Konfiguration wird verwendet, um die Web-Authentifizierungsparameter einzurichten:
jwt:
secret_key: "${APISERVER_JWT_SECRET_KEY:Pls-Change-Me!}" # JWT-Schlüssel (in Produktion ändern)
duration: "${APISERVER_JWT_DURATION:24h}" # Token-Gültigkeitsdauer
Es wird dringend empfohlen, in Produktionsumgebungen oder öffentlichen Netzwerken starke Passwörter zu verwenden!