mcp-gateway.yaml
Die Konfigurationsdateien unterstützen die Einbindung von Umgebungsvariablen mit der Syntax ${VAR:default}
. Wenn die Umgebungsvariable nicht gesetzt ist, wird der Standardwert verwendet.
Die übliche Praxis ist die Einbindung über verschiedene .env
, .env.development
, .env.prod
Dateien, oder Sie können die Konfiguration direkt mit einem festen Wert ändern.
Grundkonfiguration
port: ${MCP_GATEWAY_PORT:5235} # Service-Listening-Port
pid: "${MCP_GATEWAY_PID:/var/run/mcp-gateway.pid}" # PID-Dateipfad
Die PID hier sollte mit der unten erwähnten PID übereinstimmen
Speicherkonfiguration
Das Speicherkonfigurationsmodul wird hauptsächlich zur Speicherung von Gateway-Proxy-Konfigurationsinformationen verwendet. Derzeit werden zwei Speichermethoden unterstützt:
- disk: Konfigurationen werden als Dateien auf der Festplatte gespeichert, wobei jede Konfiguration in einer separaten Datei liegt, ähnlich dem vhost-Konzept von nginx, z.B.
svc-a.yaml
,svc-b.yaml
- db: Speicherung in Datenbank, wobei jede Konfiguration ein Datensatz ist. Derzeit werden drei Datenbanken unterstützt:
- SQLite3
- PostgreSQL
- MySQL
storage:
type: "${GATEWAY_STORAGE_TYPE:db}" # Speichertyp: db, disk
# Datenbankkonfiguration (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} # Datenbankport
user: "${GATEWAY_DB_USER:postgres}" # Datenbankbenutzername
password: "${GATEWAY_DB_PASSWORD:example}" # Datenbankpasswort
dbname: "${GATEWAY_DB_NAME:./data/mcp-gateway.db}" # Datenbankname oder Dateipfad
sslmode: "${GATEWAY_DB_SSL_MODE:disable}" # Datenbank-SSL-Modus
# Festplattenkonfiguration (verwendet wenn type 'disk' ist)
disk:
path: "${GATEWAY_STORAGE_DISK_PATH:}" # Datenspeicherungspfad
Benachrichtigungskonfiguration
Das Benachrichtigungskonfigurationsmodul wird verwendet, um mcp-gateway
über Konfigurationsaktualisierungen zu informieren und Hot-Reload ohne Neustart des Dienstes auszulösen.
Derzeit werden vier Benachrichtigungsmethoden unterstützt:
- signal: Benachrichtigung über Betriebssystemsignale, ähnlich wie
kill -SIGHUP <pid>
odernginx -s reload
, kann über den Befehlmcp-gateway reload
aufgerufen werden, geeignet für Einzelmaschinen-Deployment - api: Benachrichtigung über API-Aufrufe,
mcp-gateway
hört auf einem separaten Port und führt Hot-Reload bei Empfang von Anfragen durch, kann direkt übercurl http://localhost:5235/_reload
aufgerufen werden, geeignet für Einzelmaschinen- und Cluster-Deployment - redis: Benachrichtigung über Redis-Pub/Sub-Funktionalität, geeignet für Einzelmaschinen- und Cluster-Deployment
- composite: Kombinierte Benachrichtigung, verwendet mehrere Methoden, mit standardmäßig aktiviertem
signal
undapi
, kann mit anderen Methoden kombiniert werden. Geeignet für Einzelmaschinen- und Cluster-Deployment, empfohlen als Standardmethode
Benachrichtigungsrollen:
- sender: Sender, verantwortlich für das Senden von Benachrichtigungen,
apiserver
kann nur diesen Modus verwenden - receiver: Empfänger, verantwortlich für den Empfang von Benachrichtigungen, Einzelmaschinen-
mcp-gateway
sollte nur diesen Modus verwenden - both: Sowohl Sender als auch Empfänger, Cluster-deployed
mcp-gateway
kann diesen Modus verwenden
notifier:
role: "${NOTIFIER_ROLE:receiver}" # Rolle: 'sender' oder 'receiver'
type: "${NOTIFIER_TYPE:signal}" # Typ: 'signal', 'api', 'redis' oder 'composite'
# Signalkonfiguration (verwendet wenn type 'signal' ist)
signal:
signal: "${NOTIFIER_SIGNAL:SIGHUP}" # Zu sendendes Signal
pid: "${NOTIFIER_SIGNAL_PID:/var/run/mcp-gateway.pid}" # PID-Dateipfad
# API-Konfiguration (verwendet wenn type 'api' ist)
api:
port: ${NOTIFIER_API_PORT:5235} # API-Port
target_url: "${NOTIFIER_API_TARGET_URL:http://localhost:5235/_reload}" # Reload-Endpunkt
# Redis-Konfiguration (verwendet wenn type 'redis' ist)
redis:
addr: "${NOTIFIER_REDIS_ADDR:localhost:6379}" # Redis-Adresse
password: "${NOTIFIER_REDIS_PASSWORD:UseStrongPasswordIsAGoodPractice}" # Redis-Passwort
db: ${NOTIFIER_REDIS_DB:0} # Redis-Datenbanknummer
topic: "${NOTIFIER_REDIS_TOPIC:mcp-gateway:reload}" # Redis-Pub/Sub-Thema
Sitzungsspeicherkonfiguration
Die Sitzungsspeicherkonfiguration wird zur Speicherung von MCP-Sitzungsinformationen verwendet. Derzeit werden zwei Speichermethoden unterstützt:
- memory: In-Memory-Speicherung, geeignet für Einzelmaschinen-Deployment (Hinweis: Sitzungsinformationen gehen beim Neustart verloren)
- redis: Redis-Speicherung, geeignet für Einzelmaschinen- und Cluster-Deployment
session:
type: "${SESSION_STORAGE_TYPE:memory}" # Speichertyp: memory, redis
redis:
addr: "${SESSION_REDIS_ADDR:localhost:6379}" # Redis-Adresse
password: "${SESSION_REDIS_PASSWORD:}" # Redis-Passwort
db: ${SESSION_REDIS_DB:0} # Redis-Datenbanknummer
topic: "${SESSION_REDIS_TOPIC:mcp-gateway:session}" # Redis-Pub/Sub-Thema