Was ist das Secret Santa Raffle MCP?

Der Secret-Santa-Raffle-MCP-Server (Model Context Protocol) ermöglicht es jedem KI-Assistenten — etwa ChatGPT, Claude oder Gemini —, per natürlicher Sprache automatisch Wichtel-Auslosungen zu erstellen. Statt Formulare auszufüllen, nennt der Nutzer der KI einfach die Teilnehmer, und die KI kommuniziert mit unserem Server, um die Auslosung automatisch zu erzeugen.

Der Server implementiert JSON-RPC 2.0 über HTTPS gemäß der MCP-Spezifikation (Version 2025-06-18). Er stellt drei öffentliche Tools bereit: create_draw, send_invitations_email und get_group_share_message.

Endpunkt & Protokoll

Anfragen werden per JSON-RPC 2.0 über HTTPS gesendet. Die Protokollversion ist 2025-06-18.

POST https://mcp.secretsantaraffle.net/mcp

POST https://mcp.secretsantaraffle.net/openai/mcp

Content-Type: application/json

MCP-Protokollversion: 2025-06-18

Dieser Server stellt zwei Kanäle unter derselben Domain bereit: POST /mcp — der Standardkanal mit dem vollständigen Toolset, für Assistenten wie Claude; und POST /openai/mcp — der OpenAI-konforme Kanal, den die ChatGPT-App nutzt und der nur die drei unten dokumentierten öffentlichen Tools bereitstellt. Beide sprechen dasselbe JSON-RPC-2.0-Protokoll.

Handshake (Initialisierung)

Jeder MCP-Client muss vor dem Aufruf von Tools einen Initialize-Handshake abschließen. Nach Erhalt der Antwort muss der Client eine notifications/initialized-Nachricht senden (ohne id-Feld).

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": {
      "name": "my-client",
      "version": "1.0.0"
    }
  }
}

Nach der Initialize-Antwort sende: { "jsonrpc": "2.0", "method": "notifications/initialized" } — der Server antwortet mit 202 Accepted und leerem Body.

create_draw — JSON-Schema

Das Haupttool ist create_draw. Es erstellt eine Wichtel-Auslosung mit N Teilnehmern (mindestens 3), verlost sie zufällig unter Beachtung von Ausschlussregeln und liefert eine drawId sowie einen shareCode für weitere Vorgänge zurück.

{
  "type": "object",
  "required": ["date", "participants"],
  "properties": {
    "date": {
      "type": "string",
      "format": "date",
      "description": "Draw date, YYYY-MM-DD. Today or future."
    },
    "participants": {
      "type": "array",
      "minItems": 3,
      "description": "Minimum 3 participants. The first is treated as the organiser.",
      "items": {
        "type": "object",
        "required": ["name", "email"],
        "properties": {
          "name": { "type": "string", "maxLength": 255 },
          "email": { "type": "string", "format": "email" },
          "exclusions": {
            "type": "array",
            "items": { "type": "string", "format": "email" },
            "description": "Emails of participants this person must NOT be matched with."
          }
        }
      }
    },
    "drawName": {
      "type": "string",
      "maxLength": 255,
      "description": "Optional. Defaults to e.g. \"Secret Santa 2026\"."
    },
    "price": {
      "type": "string",
      "description": "Gift budget, free text. Examples: \"£25\", \"$30\"."
    },
    "message": {
      "type": "string",
      "description": "Invitation email body. If omitted, a localised default is used. Placeholder \"ParticipantX\" replaced with the recipient's name."
    },
    "locale": {
      "type": "string",
      "description": "BCP 47 language tag. E.g. \"en-GB\", \"es-ES\", \"es-MX\". Determines brand and templates."
    }
  }
}

Feldübersicht

Feld Typ Pflichtfeld Beschreibung
date string (date) Ja Datum der Auslosung im Format YYYY-MM-DD. Muss heute oder in der Zukunft liegen.
participants array (min 3) Ja Liste der Teilnehmer. Jeder hat Name, E-Mail und optionale Ausschlüsse.
drawName string Nein Optionaler Name für die Auslosung. Standardwert ist „Secret Santa 2026".
price string Nein Geschenkbudget als Freitext (z. B. „£25", „$30").
message string Nein Individueller Einladungstext per E-Mail. Ohne Angabe wird eine lokalisierte Standardversion verwendet.
locale string (BCP 47) Nein Bestimmt Marke (SS/AS/MX/AI) und lokalisierte Vorlagen. Fällt auf den Accept-Language-Header zurück.

Verfügbare Tools

create_draw — Auslosung erstellen

Erstellt eine Wichtel-Auslosung mit N Teilnehmern (mindestens 3). Verlost die Teilnehmer zufällig unter Beachtung von Ausschlussregeln. Liefert drawId und shareCode für weitere Vorgänge zurück.

send_invitations_email — Einladungen per E-Mail senden

Sendet jedem Teilnehmer eine personalisierte E-Mail mit einem persönlichen Link, um der Auslosung beizutreten. Kann pro Auslosung nur einmal aufgerufen werden.

Benötigt drawId und shareCode aus create_draw.

get_group_share_message — WhatsApp-/Telegram-Nachricht erzeugen

Erzeugt eine fertige Nachricht zum Einfügen in einen Gruppenchat. Keine Nebeneffekte — es werden keine Daten angelegt und keine E-Mails versendet.

Typischer Integrationsablauf

1 Initialize → Den Initialize-Handshake senden und die Server-Fähigkeiten erhalten.
2 notifications/initialized → Den Handshake abschließen (der Server antwortet mit 202 Accepted).
3 tools/list → Die drei verfügbaren Tools ermitteln.
4 tools/call create_draw → Die Auslosung erstellen und drawId + shareCode aus structuredContent erhalten.
5 Option A: tools/call send_invitations_email → E-Mails an alle Teilnehmer senden.
6 Option B: tools/call get_group_share_message → Eine fertige WhatsApp-/Telegram-Nachricht erhalten.

Sprach- und Marken-Routing

Der Parameter locale in den Argumenten jedes Tools bestimmt, welche Marke und welche Vorlagen verwendet werden. Gib locale immer an, um die besten Ergebnisse zu erzielen.

locale Marke Spiel
es-ES, es-AR, es-UY AI (Amigo Invisible) Amigo Invisible
es-MX MX (Intercambio de Regalos) Intercambio de Regalos
es-CO, es-CL, es-PE, es-VE, es AS (Amigo Secreto) Amigo Secreto
en-* (or omitted) SS (Secret Santa) Secret Santa Raffle

Sicherheit & Datenschutz bei der KI-Integration

Flüchtige Verarbeitung

Namen und E-Mail-Adressen, die über die Chat-Oberfläche angegeben werden, dienen ausschließlich der Erstellung der Auslosung. Sie werden nicht im Sprachmodell gespeichert und nicht für künftiges KI-Training verwendet.

Ende-zu-Ende-Verschlüsselung

Die gesamte Kommunikation zwischen dem KI-Assistenten und unseren Servern erfolgt über sicheres HTTPS.

Datenverwahrung

Sobald die Auslosung erstellt ist, geht die Verwaltung der personenbezogenen Daten (E-Mails und Zuordnungen) an unsere sichere Infrastruktur über — vollständig DSGVO-konform.

Kontrolle durch den Nutzer

Die KI greift ausschließlich auf die Daten zu, die der Organisator während des Gesprächs in natürlicher Sprache ausdrücklich angegeben hat.

Fehlerbehandlung

Der Server liefert Fehler auf Tool-Ebene mit isError: true im Ergebnis zurück und unterscheidet so „Tool ist fehlgeschlagen" von „Tool existiert nicht".

Fehler Ursache
lottery_impossible Die Ausschlüsse verhindern eine gültige Auslosung. Empfehlung: einige Ausschlüsse entfernen oder weitere Teilnehmer hinzufügen.
validation Das Backend hat die Daten abgelehnt (422 mit Fehlern). Listet die fehlerhaften Felder auf.
not_found Die drawId existiert nicht. Empfehlung: prüfen oder die Auslosung neu erstellen.
forbidden Falscher shareCode. Sollte nicht vorkommen, wenn er aus derselben create_draw-Antwort stammt.
already_sent Für diese Auslosung wurden bereits Einladungen versendet. Jede Auslosung kann nur einmal per Massen-E-Mail eingeladen werden.
server Vorübergehender Backend-Fehler (5xx). Empfehlung: in einigen Minuten erneut versuchen.

Wie funktioniert es für Nutzer?

Wenn du eine Schritt-für-Schritt-Anleitung ohne Fachjargon bevorzugst, lies unseren Blogbeitrag darüber, wie jeder einfach durch ein Gespräch mit ChatGPT eine Secret-Santa-Auslosung erstellen kann.

Nutzeranleitung lesen

Bereit für deine Auslosung?

Ganz ohne KI: Erstelle deine Secret-Santa-Auslosung direkt auf unserer Website. Kostenlos, schnell, ohne Registrierung.

Kostenlose Auslosung erstellen