Entwicklerdokumentation: MCP-Integration
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
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 lesenDas könnte dich auch interessieren
Bereit für deine Auslosung?
Ganz ohne KI: Erstelle deine Secret-Santa-Auslosung direkt auf unserer Website. Kostenlos, schnell, ohne Registrierung.
Kostenlose Auslosung erstellen