MCP-Integration
Model Context Protocol für KI-Assistenten
Model Context Protocol (MCP) ist ein offener Standard von Anthropic, der KI-Assistenten (wie Claude, Cursor, VS Code Copilot) die Integration mit externen Tools und Datenquellen ermöglicht.
So funktioniert es
Der KI-Assistent kommuniziert mit dem MCP-Server über das STDIO-Protokoll, und der MCP-Server führt Operationen auf NetSendo über die REST API v1 aus.
┌─────────────────┐ STDIO ┌─────────────────┐ HTTP/S ┌─────────────────┐ │ Claude/Cursor │ ◄──────────► │ MCP Server │ ◄───────────► │ NetSendo │ │ (AI Client) │ │ (Docker/npx) │ │ (Your inst.) │ └─────────────────┘ └─────────────────┘ └─────────────────┘
Installation
Voraussetzungen
- Node.js 18+
- API-Schlüssel von NetSendo
Schritte
- API-Schlüssel generieren: Einstellungen → API-Schlüssel
- Node.js von nodejs.org installieren
- KI-Tool mit der folgenden Konfiguration einrichten
Claude Desktop und Cursor
{
"mcpServers": {
"netsendo": {
"command": "npx",
"args": [
"-y",
"@netsendo/mcp-client",
"--url",
"https://your-domain.com",
"--api-key",
"YOUR_API_KEY"
]
}
}
}VS Code .vscode/mcp.json
VS Code liest MCP-Server aus .vscode/mcp.json im Workspace (oder aus deinem Benutzerprofil über den Befehl "MCP: Open User Configuration"). Diese Datei verwendet den Schlüssel "servers" auf oberster Ebene statt "mcpServers".
{
"servers": {
"netsendo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@netsendo/mcp-client",
"--url",
"https://your-domain.com",
"--api-key",
"YOUR_API_KEY"
]
}
}
}Ersetze https://your-domain.com durch deine NetSendo-URL und YOUR_API_KEY durch deinen API-Schlüssel.
Voraussetzungen
- Docker installiert und gestartet
- Zugriff auf die docker-compose.yml von NetSendo
Schritte
- API-Schlüssel generieren: Einstellungen → API-Schlüssel
- API-Schlüssel für MCP in den Einstellungen markieren
- Schlüssel zur .env-Datei hinzufügen:
MCP_API_KEY=your-api-key - MCP-Container bauen:
docker compose build mcp - KI-Tool mit der folgenden Konfiguration einrichten
Claude Desktop und Cursor
{
"mcpServers": {
"netsendo": {
"command": "docker",
"args": [
"compose",
"-f",
"/path/to/NetSendo/docker-compose.yml",
"run",
"--rm",
"-i",
"mcp"
]
}
}
}Ersetze /path/to/NetSendo durch den vollständigen Pfad zu deinem NetSendo-Verzeichnis.
Trage in VS Code denselben Eintrag "netsendo" unter dem Schlüssel "servers" auf oberster Ebene in .vscode/mcp.json ein und ergänze "type": "stdio".
Speicherorte der Konfigurationsdateien
| Client | Dateipfad |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor IDE | Einstellungen → MCP → Server hinzufügen |
| VS Code | .vscode/mcp.json |
Unterstützte KI-Clients
Offizielle Claude Desktop-App von Anthropic
IDE mit integrierter KI für Entwickler
Visual Studio Code mit GitHub Copilot (Agentenmodus)
Verfügbare Funktionen
Abonnenten
Kontakte verwalten – hinzufügen, bearbeiten, löschen
Kontaktlisten
Mailinglisten durchsuchen und organisieren
E-Mail-Nachrichten
Personalisierte E-Mails versenden
SMS-Nachrichten
SMS an Kontakte senden
Tags
Abonnenten mit Tags kategorisieren
Statistiken
Konto- und Zustellstatistiken prüfen
Verfügbare Tools
Version 1.6.0 von @netsendo/mcp-client bietet 140 Tools in 21 Gruppen.
Abonnenten (6)
| Tool | Beschreibung |
|---|---|
| list_subscribers | Abonnenten mit Filter und Pagination auflisten |
| get_subscriber | Abonnenten per ID oder E-Mail-Adresse abrufen |
| create_subscriber | Abonnenten anlegen, optional mit Listen und Tags |
| update_subscriber | Abonnentendaten aktualisieren |
| delete_subscriber | Abonnenten endgültig löschen |
| sync_subscriber_tags | Alle Tags eines Abonnenten ersetzen |
Kontaktlisten und Listeneinstellungen (11)
| Tool | Beschreibung |
|---|---|
| list_contact_lists | Alle Kontaktlisten mit Abonnentenzahl und Standardpostfach abrufen |
| get_contact_list | Vollständige Konfiguration einer Liste abrufen: Einstellungen, Tags, Co-Registrierung, Limits und Webhook |
| get_list_subscribers | Abonnenten einer Kontaktliste abrufen |
| get_list_stats | Listenüberblick: Mitglieder nach Status, Engagement, Wachstum (30 Tage) und Versandeinstellungen |
| create_contact_list | E-Mail- oder SMS-Liste mit allen Einstellungen des Listeneditors anlegen |
| update_contact_list | Listeneinstellungen ändern (nur übergebene Felder) |
| get_list_cron_settings | Versandplan einer Liste abrufen: Wochenfenster, Limit pro Minute und ob sie den globalen CRON-Einstellungen folgt |
| update_list_cron_settings | Festlegen, wann und wie schnell die Nachrichten einer Liste versendet werden, oder zu den globalen Einstellungen zurückkehren |
| get_list_defaults | Kontoweite Listenvorgaben und die instanzweiten CRON-Einstellungen abrufen |
| update_list_defaults | Kontoweite Listenvorgaben ändern (nur übergebene Schlüssel) |
| delete_contact_list | Kontaktliste löschen; die Kontakte bleiben im Konto |
Tags und benutzerdefinierte Felder (9)
| Tool | Beschreibung |
|---|---|
| list_tags | Tags des Kontos mit Name, Farbe und Beschreibung abrufen |
| list_custom_fields | Benutzerdefinierte Felder des Kontos mit Platzhalter und Geltungsbereich abrufen |
| create_tag | Tag anlegen (Namen sind pro Konto eindeutig) |
| update_tag | Tag umbenennen oder Farbe und Beschreibung ändern |
| delete_tag | Tag löschen und von Abonnenten, Listen und Nachrichten entfernen |
| get_custom_field | Ein benutzerdefiniertes Feld mit allen Einstellungen abrufen |
| create_custom_field | Globales oder listenspezifisches Feld anlegen; sein Name wird zum Platzhalter |
| update_custom_field | Bezeichnung, Typ, Optionen oder Namen eines Felds ändern (der Geltungsbereich bleibt) |
| delete_custom_field | Benutzerdefiniertes Feld samt allen gespeicherten Werten löschen |
Import (2)
| Tool | Beschreibung |
|---|---|
| preview_list_import | Import testen: Spaltenzuordnung, ungültige Adressen und Duplikate, ohne zu speichern |
| import_subscribers | Kontakte aus CSV, TSV, JSON oder einer Adressliste in eine Liste importieren |
Export (3)
| Tool | Beschreibung |
|---|---|
| export_list | Listenmitglieder direkt als JSON, CSV oder NDJSON exportieren, mit Filtern |
| get_export_fields | Exportierbare Spalten inkl. benutzerdefinierter Felder anzeigen |
| queue_list_export | Vollständigen CSV-Export einreihen; der Kontoinhaber erhält einen Download-Link |
Listenhygiene (5)
| Tool | Beschreibung |
|---|---|
| analyze_list_health | Hygienebericht (nur lesend) mit Score von 0–100 und Empfehlungen |
| clean_list | Aktion auf Mitglieder ausgewählter Problemkategorien anwenden (standardmäßig Probelauf) |
| dedupe_list | Doppelte Adressen zusammenführen, auch Gmail-Aliase mit Punkt und +Tag |
| verify_list_emails | Zustellbarkeit prüfen: Syntax, Wegwerf- und Rollenadressen, Tippfehler-Domains, MX-Einträge |
| get_hygiene_options | Von clean_list akzeptierte Kategorien und Aktionen zurückgeben |
Listenmitglieder (6)
| Tool | Beschreibung |
|---|---|
| add_list_members | Bestehende Kontakte einer Liste hinzufügen |
| remove_list_members | Kontakte von einer Liste entfernen und geplante Nachrichten abbrechen |
| set_member_status | Mitgliedsstatus ändern: aktiv, inaktiv, abgemeldet oder gebounct |
| copy_list_members | Kontakte in eine andere Liste desselben Kanals kopieren |
| move_list_members | Kontakte in eine andere Liste desselben Kanals verschieben |
| tag_list_members | Tags für ein Segment einer Liste hinzufügen oder entfernen |
Aktivität und Engagement (3)
| Tool | Beschreibung |
|---|---|
| get_list_activity | Ereignis-Feed einer Liste: Anmeldungen, Abmeldungen, Bounces, Versand, Öffnungen, Klicks |
| get_list_engagement | Listen-Performance: Wachstum, Abwanderung, Öffnungs- und Klickraten, Top-Nachrichten und -Links |
| get_subscriber_activity | Gesamte Historie eines Kontakts: Listen, Tags, geplante Nachrichten und Zeitachse |
Sperrliste (3)
| Tool | Beschreibung |
|---|---|
| list_suppressions | Kontoweite Sperrliste mit Grund und Datum anzeigen |
| suppress_emails | Adressen sperren und von allen Listen abmelden |
| unsuppress_emails | Sperre für Adressen aufheben (meldet niemanden wieder an) |
Benachrichtigungen (2)
| Tool | Beschreibung |
|---|---|
| send_notification | Benachrichtigung an das Benachrichtigungscenter des Kontoinhabers senden |
| list_notifications | Letzte Benachrichtigungen des Inhabers und Anzahl ungelesener abrufen |
E-Mail- und SMS-Nachrichten (6)
| Tool | Beschreibung |
|---|---|
| list_mailboxes | Verfügbare Absender-Postfächer abrufen |
| send_email | Einzelne E-Mail an einen Abonnenten senden |
| get_email_status | E-Mail-Zustellstatus prüfen |
| list_sms_providers | Verfügbare SMS-Anbieter abrufen |
| send_sms | Einzelne SMS an einen Abonnenten oder eine Telefonnummer senden |
| get_sms_status | SMS-Zustellstatus prüfen |
Kampagnen (17)
| Tool | Beschreibung |
|---|---|
| list_campaigns | E-Mail- und SMS-Kampagnen mit Filter auflisten |
| get_campaign | Alle bearbeitbaren Felder einer Kampagne abrufen, inkl. Listen, Auslöser und Übersetzungen |
| create_campaign | E-Mail- oder SMS-Kampagne anlegen (als Entwurf) |
| update_campaign | Entwurf oder geplante Kampagne aktualisieren |
| set_campaign_lists | Empfängerlisten einer Kampagne festlegen |
| set_campaign_exclusions | Ausschlusslisten festlegen, deren Abonnenten die Kampagne nicht erhalten |
| schedule_campaign | Kampagne für später planen, mit Zeitzonen-Unterstützung |
| send_campaign | Kampagne sofort senden oder Autoresponder aktivieren |
| get_campaign_stats | Versandstatistiken einer Kampagne abrufen |
| delete_campaign | Entwurf oder geplante Kampagne löschen |
| send_campaign_test | Testversand einer Kampagne an bis zu 5 Adressen; nichts wird eingereiht |
| preview_campaign | Kampagne so rendern, wie ein Empfänger sie sieht, mit aufgelösten Platzhaltern |
| duplicate_campaign | Kampagne als neuen Entwurf kopieren |
| set_campaign_active | Autoresponder aktivieren oder pausieren |
| get_campaign_recipient_count | Zählen, wen eine Kampagne jetzt erreichen würde, nach Ausschlüssen und Filtern |
| resend_campaign_failed | Empfänger mit fehlgeschlagener Zustellung erneut einreihen (mit Bestätigung) |
| send_campaign_to_missed | Aktiven Autoresponder jetzt an Abonnenten senden, die ihn verpasst haben (mit Bestätigung) |
A/B-Tests (7)
| Tool | Beschreibung |
|---|---|
| list_ab_tests | A/B-Tests auflisten, gefiltert nach Status oder Kampagne |
| create_ab_test | A/B-Test für eine Kampagne anlegen |
| add_ab_variant | Variante zu einem A/B-Test hinzufügen |
| start_ab_test | A/B-Test starten (mindestens 2 Varianten) |
| end_ab_test | Laufenden Test beenden und optional den Gewinner wählen |
| get_ab_test_results | Detaillierte Ergebnisse und Statistiken eines Tests abrufen |
| delete_ab_test | Nicht laufenden A/B-Test löschen |
Funnels (Automatisierung) (12)
| Tool | Beschreibung |
|---|---|
| list_funnels | Automatisierungs-Funnels auflisten |
| get_funnel | Funnel mit allen Schritten und Statistiken abrufen |
| create_funnel | Automatisierungs-Funnel anlegen |
| update_funnel | Funnel umbenennen oder Auslöser ändern |
| add_funnel_step | Schritt zu einem Funnel hinzufügen und verbinden |
| update_funnel_step | Einstellungen und Verbindungen eines Schritts ändern |
| delete_funnel_step | Schritt löschen und den Funnel darum herum neu verbinden |
| enroll_subscriber_in_funnel | Abonnenten sofort in einen aktiven Funnel aufnehmen |
| activate_funnel | Funnel für neue Abonnenten aktivieren |
| pause_funnel | Funnel pausieren |
| get_funnel_stats | Funnel-Statistiken abrufen: Abonnentenzahlen und Abschlussraten |
| delete_funnel | Funnel löschen (vorher pausieren) |
Personalisierung (1)
| Tool | Beschreibung |
|---|---|
| list_placeholders | Platzhalter zur Personalisierung von E-Mail- und SMS-Inhalten abrufen |
Webhooks (8)
| Tool | Beschreibung |
|---|---|
| list_webhook_events | Ereignisnamen auflisten, die ein Webhook abonnieren kann |
| list_webhooks | Webhooks des Kontos mit Status, Fehlerzähler und letzter Zustellung auflisten |
| get_webhook | Einstellungen eines Webhooks abrufen (ohne Secret) |
| create_webhook | Webhook für ausgewählte Ereignisse registrieren; das Signatur-Secret wird nur einmal angezeigt |
| update_webhook | Name, URL, Ereignisse oder Aktivstatus eines Webhooks ändern |
| delete_webhook | Webhook dauerhaft löschen |
| test_webhook | Testzustellung senden und prüfen, ob der Endpunkt mit 2xx antwortet |
| regenerate_webhook_secret | Neues Signatur-Secret erzeugen; das alte ist sofort ungültig |
E-Mail-Vorlagen (13)
| Tool | Beschreibung |
|---|---|
| list_templates | Eigene E-Mail-Vorlagen und die System-Startvorlagen auflisten |
| get_template | Vorlage mit HTML, MJML, Builder-Blöcken und Einstellungen abrufen |
| create_template | E-Mail-Vorlage aus HTML oder aus Builder-Blöcken anlegen |
| update_template | Eigene Vorlage aktualisieren (nur übergebene Felder) |
| delete_template | Eigene Vorlage löschen; daraus erstellte Kampagnen behalten ihren Inhalt |
| duplicate_template | Eigene oder System-Vorlage zum Bearbeiten ins Konto kopieren |
| preview_template | Platzhalter einer Vorlage für einen Abonnenten oder Beispieldaten auflösen; nichts wird gesendet |
| list_template_categories | System- und eigene Vorlagenkategorien auflisten |
| list_template_block_types | Builder-Blocktypen mit Standardinhalt und -einstellungen auflisten |
| list_template_blocks | Gespeicherte Builder-Blöcke auflisten, eigene und globale |
| create_template_block | Wiederverwendbaren Builder-Block speichern, etwa Kopfzeile, Fußzeile oder Button |
| update_template_block | Eigenen gespeicherten Block ändern |
| delete_template_block | Eigenen gespeicherten Block löschen; Vorlagen, die ihn enthalten, bleiben unverändert |
System-E-Mails und -Seiten (9)
| Tool | Beschreibung |
|---|---|
| list_system_emails | Automatische System-E-Mails (Double-Opt-in, Willkommen, Abmeldung…) einer Liste oder global auflisten |
| get_system_email | Eine System-E-Mail mit Betreff, HTML und verfügbaren Platzhaltern abrufen |
| update_system_email | Betreff, Inhalt oder Aktivstatus einer System-E-Mail für eine Liste oder global ändern |
| set_system_email_active | Eine System-E-Mail für eine Liste ein- oder ausschalten |
| reset_system_email | Listeneigene Version entfernen, damit wieder die globale System-E-Mail gilt |
| list_system_pages | Systemseiten auflisten, die nach Anmeldung, Aktivierung, Abmeldung und Präferenzänderung erscheinen |
| get_system_page | Eine Systemseite mit Titel, HTML, Zugriff und Platzhaltern abrufen |
| update_system_page | Titel, Inhalt oder Zugriff einer Systemseite für eine Liste oder global ändern |
| reset_system_page | Listeneigene Version entfernen, damit wieder die globale Systemseite gilt |
Anmeldeformulare (6)
| Tool | Beschreibung |
|---|---|
| list_forms | Anmeldeformulare mit Status, Liste, Anzahl der Einsendungen und gehosteter URL auflisten |
| get_form | Konfiguration eines Formulars samt gehosteter URL und Einbettungscode für HTML, JS und iframe abrufen |
| create_form | Anmeldeformular für eine E-Mail-Liste anlegen (startet als Entwurf) |
| update_form | Formular ändern, veröffentlichen oder Anmeldungen stoppen |
| delete_form | Formular löschen; Seiten, die es einbetten, funktionieren nicht mehr, Abonnenten bleiben |
| duplicate_form | Formular als neuen Entwurf mit neuem Einbettungscode kopieren |
Automatisierungsregeln (9)
| Tool | Beschreibung |
|---|---|
| get_automation_options | Katalog der Auslöser, Bedingungen und Aktionen zum Erstellen von Regeln abrufen |
| list_automations | Automatisierungsregeln mit Auslöser, Aktionen, Status und Ausführungszahlen auflisten |
| get_automation | Eine Regel vollständig abrufen, mit Statistik der letzten 7 Tage |
| create_automation | Regel anlegen: Tritt ein Ereignis ein und sind die Bedingungen erfüllt, werden die Aktionen ausgeführt |
| update_automation | Regel ändern (nur übergebene Felder) |
| set_automation_active | Regel aktivieren, deaktivieren oder umschalten |
| duplicate_automation | Regel kopieren; die Kopie ist zunächst inaktiv |
| delete_automation | Regel samt Ausführungsprotokoll dauerhaft löschen |
| get_automation_logs | Ausführungsprotokoll einer Regel abrufen: Status, Abonnent und Ergebnis jeder Aktion |
Konto (2)
| Tool | Beschreibung |
|---|---|
| test_connection | API-Verbindung und Zugangsdaten testen |
| get_account_info | Informationen zum verbundenen Konto abrufen |
Neben den Tools stellt der Client 5 vorgefertigte Prompts (analyze_subscribers, send_newsletter, cleanup_list, import_contacts, list_report) und 3 Ressourcen (netsendo://info, netsendo://stats, netsendo://lists) bereit.
Beispielanfragen
Sicherheit
Fehlerbehebung
- Stelle sicher, dass NetSendo läuft und erreichbar ist
- Prüfe, ob der API-Schlüssel gültig ist
- Überprüfe die URL (inkl. https://)
Starte dein KI-Tool nach Konfigurationsänderungen neu.
Installiere Node.js von nodejs.org (enthält npm/npx).
Mehrere NetSendo-Instanzen
Du kannst dich mit mehreren NetSendo-Instanzen verbinden, indem du verschiedene Servernamen verwendest:
{
"mcpServers": {
"netsendo-production": {
"command": "npx",
"args": ["-y", "@netsendo/mcp-client", "--url", "https://app.company.com", "--api-key", "prod-key"]
},
"netsendo-staging": {
"command": "npx",
"args": ["-y", "@netsendo/mcp-client", "--url", "https://staging.company.com", "--api-key", "staging-key"]
}
}
}
