Skip to content

Skript-Authentifizierung

Zweck

Authentifizierung über ein externes Skript. swag2mcp unterstützt zwei Skripttypen:

  • .sh — Shell-Skripte unter Linux und macOS
  • .bat — Batch-Skripte unter Windows

Das Skript muss im Verzeichnis auth_scripts Ihres Arbeitsbereichs abgelegt werden und ein JSON-Token auf stdout ausgeben.

Wann verwenden

  • Benutzerdefinierte oder nicht standardmäßige Authentifizierungsschemata
  • Komplexe Token-Beschaffungslogik (mehrstufig, mit zusätzlichen Prüfungen)
  • Wenn keine der Standardmethoden Ihren Anforderungen entspricht

Konfiguration

yaml
specs:
  - domain: jokes
    llm_title: Dad Joke API
    base_url: https://icanhazdadjoke.com
    collections:
      - llm_title: Jokes
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml
    auth:
      type: script
      config:
        domain: "jokes"

Parameter

ParameterErforderlichBeschreibung
domainJaSkriptdateiname (ohne Erweiterung). Muss mit dem domain der Spec übereinstimmen — z. B. wenn domain: jokes, muss die Skriptdatei jokes.sh (Unix) oder jokes.bat (Windows) heißen.

Skript-Speicherort

Das Skript muss im Verzeichnis auth_scripts Ihres Arbeitsbereichs platziert werden:

  • Linux / macOS: {workspace}/auth_scripts/{domain}.sh
  • Windows: {workspace}/auth_scripts/{domain}.bat

Skript-Ausgabeformat

Das Skript muss JSON an die Standardausgabe ausgeben, mit dem Token und seiner Ablaufzeit:

bash
#!/bin/bash
# auth_scripts/jokes.sh

TOKEN=$(curl -s -X POST https://auth.example.com/token \
  -d "grant_type=client_credentials" \
  -d "client_id=$CLIENT_ID" \
  -d "client_secret=$CLIENT_SECRET" | jq -r '.access_token')

echo "{\"token\": \"$TOKEN\", \"expires_in\": 3600}"

JSON-Felder

FeldErforderlichBeschreibung
tokenJaAuthentifizierungstoken
expires_inNeinToken-Lebensdauer in Sekunden (Standard: 3600)

Hinweise

  • swag2mcp führt das Skript bei jeder Anfrage aus, wenn das zwischengespeicherte Token abgelaufen ist
  • Das Skript muss innerhalb von 30 Sekunden abgeschlossen sein
  • Das Token wird bis zu seiner Ablaufzeit zwischengespeichert
  • Skriptdateiname = {domain}.sh (Unix) oder {domain}.bat (Windows)
  • domain darf keine / oder \ enthalten