Integracja MCP
Model Context Protocol dla asystentów AI
Model Context Protocol (MCP) to otwarty standard wprowadzony przez Anthropic, który pozwala asystentom AI (takim jak Claude, Cursor, VS Code Copilot) na integrację z zewnętrznymi narzędziami i źródłami danych.
Jak to działa
Asystent AI komunikuje się z serwerem MCP przez protokół STDIO, a serwer MCP wykonuje operacje na NetSendo za pomocą API REST v1.
┌─────────────────┐ STDIO ┌─────────────────┐ HTTP/S ┌─────────────────┐ │ Claude/Cursor │ ◄──────────► │ MCP Server │ ◄───────────► │ NetSendo │ │ (AI Client) │ │ (Docker/npx) │ │ (Your inst.) │ └─────────────────┘ └─────────────────┘ └─────────────────┘
Instalacja
Wymagania
- Node.js 18+
- Klucz API z NetSendo
Kroki
- Wygeneruj klucz API: Ustawienia → Klucze API
- Zainstaluj Node.js ze strony nodejs.org
- Skonfiguruj narzędzie AI używając poniższej konfiguracji
Claude Desktop i 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 odczytuje serwery MCP z pliku .vscode/mcp.json w projekcie (lub z profilu użytkownika – polecenie "MCP: Open User Configuration"). Ten plik używa klucza głównego "servers" zamiast "mcpServers".
{
"servers": {
"netsendo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@netsendo/mcp-client",
"--url",
"https://your-domain.com",
"--api-key",
"YOUR_API_KEY"
]
}
}
}Zamień https://your-domain.com na adres URL Twojej instancji NetSendo oraz YOUR_API_KEY na wygenerowany klucz API.
Wymagania
- Docker zainstalowany i uruchomiony
- Dostęp do pliku docker-compose.yml projektu NetSendo
Kroki
- Wygeneruj klucz API: Ustawienia → Klucze API
- Oznacz klucz API dla MCP w ustawieniach
- Dodaj klucz do pliku .env:
MCP_API_KEY=your-api-key - Zbuduj kontener MCP:
docker compose build mcp - Skonfiguruj narzędzie AI używając poniższej konfiguracji
Claude Desktop i Cursor
{
"mcpServers": {
"netsendo": {
"command": "docker",
"args": [
"compose",
"-f",
"/path/to/NetSendo/docker-compose.yml",
"run",
"--rm",
"-i",
"mcp"
]
}
}
}Zamień /path/to/NetSendo na pełną ścieżkę do katalogu z instalacją NetSendo.
W VS Code umieść ten sam wpis "netsendo" pod kluczem głównym "servers" w pliku .vscode/mcp.json i dodaj "type": "stdio".
Lokalizacje plików konfiguracyjnych
| Klient | Lokalizacja pliku |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor IDE | Ustawienia → MCP → Dodaj serwer |
| VS Code | .vscode/mcp.json |
Wspierani klienci AI
Oficjalna aplikacja desktopowa Claude od Anthropic
IDE z wbudowanym AI dla programistów
Visual Studio Code z GitHub Copilot (tryb agenta)
Dostępne funkcje
Subskrybenci
Zarządzaj kontaktami – dodawaj, edytuj, usuwaj
Listy kontaktów
Przeglądaj i organizuj listy mailingowe
Wiadomości Email
Wysyłaj spersonalizowane wiadomości e-mail
Wiadomości SMS
Wysyłaj wiadomości SMS do kontaktów
Tagi
Kategoryzuj subskrybentów za pomocą tagów
Statystyki
Sprawdzaj statystyki konta i dostarczalności
Dostępne narzędzia
Wersja 1.6.0 pakietu @netsendo/mcp-client udostępnia 140 narzędzi w 21 grupach.
Subskrybenci (6)
| Narzędzie | Opis |
|---|---|
| list_subscribers | Lista subskrybentów z filtrowaniem i paginacją |
| get_subscriber | Pobierz subskrybenta po ID lub adresie e-mail |
| create_subscriber | Utwórz subskrybenta, opcjonalnie z listami i tagami |
| update_subscriber | Zaktualizuj dane subskrybenta |
| delete_subscriber | Trwale usuń subskrybenta |
| sync_subscriber_tags | Zastąp wszystkie tagi przypisane do subskrybenta |
Listy kontaktów i ich ustawienia (11)
| Narzędzie | Opis |
|---|---|
| list_contact_lists | Pobierz wszystkie listy z liczbą subskrybentów i domyślną skrzynką |
| get_contact_list | Pobierz pełną konfigurację listy: ustawienia, tagi, współrejestrację, limity i webhook |
| get_list_subscribers | Pobierz subskrybentów z listy |
| get_list_stats | Stan listy: członkowie wg statusu, zaangażowanie, przyrost z 30 dni i ustawienia wysyłki |
| create_contact_list | Utwórz listę e-mail lub SMS z dowolnymi ustawieniami edytora listy |
| update_contact_list | Zmień ustawienia listy (tylko przekazane pola) |
| get_list_cron_settings | Pobierz harmonogram wysyłki listy: okna tygodniowe, limit na minutę i to, czy używa globalnych ustawień CRON |
| update_list_cron_settings | Ustaw, kiedy i jak szybko wychodzą wiadomości z kolejki listy, albo przywróć ustawienia globalne |
| get_list_defaults | Pobierz domyślne ustawienia list na koncie i globalne ustawienia CRON instancji |
| update_list_defaults | Zmień domyślne ustawienia list na koncie (tylko przekazane klucze) |
| delete_contact_list | Usuń listę; kontakty zostają na koncie |
Tagi i pola własne (9)
| Narzędzie | Opis |
|---|---|
| list_tags | Pobierz tagi konta z nazwą, kolorem i opisem |
| list_custom_fields | Pobierz pola własne konta z ich wstawkami i zakresem |
| create_tag | Utwórz tag (nazwy są unikalne w obrębie konta) |
| update_tag | Zmień nazwę, kolor lub opis tagu |
| delete_tag | Usuń tag i odepnij go od subskrybentów, list i wiadomości |
| get_custom_field | Pobierz pole własne ze wszystkimi ustawieniami |
| create_custom_field | Utwórz pole własne globalne lub dla jednej listy; jego nazwa staje się wstawką |
| update_custom_field | Zmień etykietę, typ, opcje lub nazwę pola własnego (zakres się nie zmienia) |
| delete_custom_field | Usuń pole własne razem ze wszystkimi zapisanymi wartościami |
Import (2)
| Narzędzie | Opis |
|---|---|
| preview_list_import | Próbny import: mapowanie kolumn, błędne adresy i duplikaty, bez zapisu |
| import_subscribers | Zaimportuj kontakty na listę z CSV, TSV, JSON lub listy adresów |
Eksport (3)
| Narzędzie | Opis |
|---|---|
| export_list | Eksportuj członków listy od razu jako JSON, CSV lub NDJSON, z filtrami |
| get_export_fields | Pokaż kolumny dostępne w eksporcie, w tym pola własne |
| queue_list_export | Zleć pełny eksport CSV; właściciel konta dostanie link do pobrania |
Higiena listy (5)
| Narzędzie | Opis |
|---|---|
| analyze_list_health | Raport higieny (tylko odczyt) z oceną 0–100 i rekomendacjami |
| clean_list | Wykonaj akcję na członkach z wybranych kategorii problemów (domyślnie na próbę) |
| dedupe_list | Scal zduplikowane adresy, także aliasy Gmaila z kropkami i +tagiem |
| verify_list_emails | Sprawdź dostarczalność: składnia, adresy jednorazowe i funkcyjne, literówki w domenach, rekordy MX |
| get_hygiene_options | Zwróć kategorie i akcje akceptowane przez clean_list |
Członkowie list (6)
| Narzędzie | Opis |
|---|---|
| add_list_members | Dodaj istniejące kontakty do listy |
| remove_list_members | Odłącz kontakty od listy i anuluj ich zaplanowane wiadomości |
| set_member_status | Zmień status na liście: aktywny, nieaktywny, wypisany lub odbity |
| copy_list_members | Skopiuj kontakty na inną listę tego samego kanału |
| move_list_members | Przenieś kontakty na inną listę tego samego kanału |
| tag_list_members | Dodaj lub usuń tagi w wybranym segmencie listy |
Aktywność i zaangażowanie (3)
| Narzędzie | Opis |
|---|---|
| get_list_activity | Kronika zdarzeń listy: zapisy, wypisy, odbicia, wysyłki, otwarcia i kliknięcia |
| get_list_engagement | Wyniki listy: przyrost, odpływ, wskaźniki otwarć i kliknięć, najlepsze wiadomości i linki |
| get_subscriber_activity | Pełna historia kontaktu: listy, tagi, zaplanowane wiadomości i oś czasu |
Lista blokad (3)
| Narzędzie | Opis |
|---|---|
| list_suppressions | Pokaż kontową listę adresów, do których nie wolno wysyłać, z powodem i datą |
| suppress_emails | Dodaj adresy do listy blokad i wypisz je ze wszystkich list |
| unsuppress_emails | Zdejmij blokadę z adresów (nikogo nie zapisuje ponownie) |
Powiadomienia (2)
| Narzędzie | Opis |
|---|---|
| send_notification | Wyślij powiadomienie do centrum powiadomień właściciela konta |
| list_notifications | Odczytaj ostatnie powiadomienia właściciela i liczbę nieprzeczytanych |
Wiadomości e-mail i SMS (6)
| Narzędzie | Opis |
|---|---|
| list_mailboxes | Pobierz dostępne skrzynki nadawcze |
| send_email | Wyślij pojedynczy e-mail do subskrybenta |
| get_email_status | Sprawdź status dostarczenia e-maila |
| list_sms_providers | Pobierz dostępnych dostawców SMS |
| send_sms | Wyślij pojedynczy SMS do subskrybenta lub na numer telefonu |
| get_sms_status | Sprawdź status dostarczenia SMS |
Kampanie (17)
| Narzędzie | Opis |
|---|---|
| list_campaigns | Lista kampanii e-mail i SMS z filtrowaniem |
| get_campaign | Pobierz wszystkie edytowalne pola kampanii, w tym listy, wyzwalacz i tłumaczenia |
| create_campaign | Utwórz kampanię e-mail lub SMS (zapisywaną jako szkic) |
| update_campaign | Zaktualizuj szkic lub zaplanowaną kampanię |
| set_campaign_lists | Ustaw listy odbiorców kampanii |
| set_campaign_exclusions | Ustaw listy wykluczeń – ich subskrybenci nie dostaną kampanii |
| schedule_campaign | Zaplanuj wysyłkę kampanii, z obsługą stref czasowych |
| send_campaign | Wyślij kampanię teraz lub aktywuj autoresponder |
| get_campaign_stats | Pobierz statystyki wysyłki kampanii |
| delete_campaign | Usuń szkic lub zaplanowaną kampanię |
| send_campaign_test | Wyślij test kampanii na maksymalnie 5 adresów; nic nie trafia do kolejki |
| preview_campaign | Pokaż kampanię tak, jak zobaczy ją odbiorca, z podstawionymi wstawkami |
| duplicate_campaign | Skopiuj kampanię jako nowy szkic |
| set_campaign_active | Aktywuj lub wstrzymaj autoresponder |
| get_campaign_recipient_count | Policz, do kogo kampania trafiłaby teraz, po wykluczeniach i filtrach |
| resend_campaign_failed | Ponownie zakolejkuj odbiorców, do których wysyłka się nie powiodła (wymaga potwierdzenia) |
| send_campaign_to_missed | Wyślij teraz aktywny autoresponder subskrybentom, którzy go ominęli (wymaga potwierdzenia) |
Testy A/B (7)
| Narzędzie | Opis |
|---|---|
| list_ab_tests | Lista testów A/B, z filtrem po statusie lub kampanii |
| create_ab_test | Utwórz test A/B dla kampanii |
| add_ab_variant | Dodaj wariant do testu A/B |
| start_ab_test | Uruchom test A/B (wymaga co najmniej 2 wariantów) |
| end_ab_test | Zakończ trwający test i opcjonalnie wybierz zwycięzcę |
| get_ab_test_results | Pobierz szczegółowe wyniki i statystyki testu |
| delete_ab_test | Usuń test A/B, który nie jest uruchomiony |
Lejki (automatyzacja) (12)
| Narzędzie | Opis |
|---|---|
| list_funnels | Lista lejków automatyzacji |
| get_funnel | Pobierz lejek ze wszystkimi krokami i statystykami |
| create_funnel | Utwórz lejek automatyzacji |
| update_funnel | Zmień nazwę lejka lub jego wyzwalacz |
| add_funnel_step | Dodaj krok do lejka i połącz go |
| update_funnel_step | Zmień ustawienia i połączenia kroku |
| delete_funnel_step | Usuń krok i połącz lejek z pominięciem go |
| enroll_subscriber_in_funnel | Od razu dodaj subskrybenta do aktywnego lejka |
| activate_funnel | Aktywuj lejek dla nowych subskrybentów |
| pause_funnel | Wstrzymaj lejek |
| get_funnel_stats | Pobierz statystyki lejka: liczby subskrybentów i wskaźniki ukończenia |
| delete_funnel | Usuń lejek (najpierw go wstrzymaj) |
Personalizacja (1)
| Narzędzie | Opis |
|---|---|
| list_placeholders | Pobierz wstawki do personalizacji treści e-mail i SMS |
Webhooki (8)
| Narzędzie | Opis |
|---|---|
| list_webhook_events | Pokaż nazwy zdarzeń, które może subskrybować webhook |
| list_webhooks | Lista webhooków konta ze stanem, liczbą błędów i ostatnim wywołaniem |
| get_webhook | Pobierz ustawienia webhooka (bez sekretu) |
| create_webhook | Zarejestruj webhook dla wybranych zdarzeń; sekret do podpisu pojawia się tylko raz |
| update_webhook | Zmień nazwę, URL, zdarzenia lub stan aktywności webhooka |
| delete_webhook | Trwale usuń webhook |
| test_webhook | Wyślij testowe zdarzenie i sprawdź, czy endpoint odpowiedział kodem 2xx |
| regenerate_webhook_secret | Wygeneruj nowy sekret do podpisu; stary od razu przestaje działać |
Szablony e-mail (13)
| Narzędzie | Opis |
|---|---|
| list_templates | Lista własnych szablonów e-mail i systemowych szablonów startowych |
| get_template | Pobierz szablon z HTML, MJML, blokami kreatora i ustawieniami |
| create_template | Utwórz szablon e-mail z HTML albo z bloków kreatora |
| update_template | Zmień własny szablon (tylko przekazane pola) |
| delete_template | Usuń własny szablon; kampanie utworzone z niego zachowują treść |
| duplicate_template | Skopiuj własny lub systemowy szablon na konto, aby go edytować |
| preview_template | Podstaw wstawki szablonu dla subskrybenta lub danych przykładowych; nic nie jest wysyłane |
| list_template_categories | Lista kategorii szablonów: systemowych i własnych |
| list_template_block_types | Lista typów bloków kreatora z domyślną treścią i ustawieniami |
| list_template_blocks | Lista zapisanych bloków kreatora: własnych i globalnych |
| create_template_block | Zapisz blok kreatora do ponownego użycia, np. nagłówek, stopkę lub przycisk |
| update_template_block | Zmień własny zapisany blok |
| delete_template_block | Usuń własny zapisany blok; szablony, które go zawierają, się nie zmieniają |
Wiadomości i strony systemowe (9)
| Narzędzie | Opis |
|---|---|
| list_system_emails | Lista automatycznych wiadomości systemowych (double opt-in, powitanie, wypis…) dla listy lub globalnie |
| get_system_email | Pobierz wiadomość systemową z tematem, HTML i dostępnymi wstawkami |
| update_system_email | Zmień temat, treść lub aktywność wiadomości systemowej dla jednej listy albo globalnie |
| set_system_email_active | Włącz lub wyłącz wiadomość systemową dla jednej listy |
| reset_system_email | Usuń wersję listy, aby znów używała globalnej wiadomości systemowej |
| list_system_pages | Lista stron systemowych pokazywanych po zapisie, aktywacji, wypisie i zmianie preferencji |
| get_system_page | Pobierz stronę systemową z tytułem, HTML, dostępem i wstawkami |
| update_system_page | Zmień tytuł, treść lub dostęp strony systemowej dla jednej listy albo globalnie |
| reset_system_page | Usuń wersję listy, aby znów używała globalnej strony systemowej |
Formularze zapisu (6)
| Narzędzie | Opis |
|---|---|
| list_forms | Lista formularzy zapisu ze statusem, listą, liczbą zgłoszeń i adresem strony z formularzem |
| get_form | Pobierz konfigurację formularza, adres jego strony i kody osadzenia HTML, JS i iframe |
| create_form | Utwórz formularz zapisu do listy e-mail (startuje jako szkic) |
| update_form | Zmień formularz, opublikuj go albo wstrzymaj zapisy |
| delete_form | Usuń formularz; strony, które go osadzają, przestają działać, a subskrybenci zostają |
| duplicate_form | Skopiuj formularz jako nowy szkic z nowym kodem osadzenia |
Reguły automatyzacji (9)
| Narzędzie | Opis |
|---|---|
| get_automation_options | Pobierz katalog zdarzeń, warunków i akcji do budowania reguł |
| list_automations | Lista reguł automatyzacji z wyzwalaczem, akcjami, stanem i liczbą uruchomień |
| get_automation | Pobierz pełną regułę ze statystykami z 7 dni |
| create_automation | Utwórz regułę: gdy zajdzie zdarzenie i warunki są spełnione, wykonaj akcje |
| update_automation | Zmień regułę (tylko przekazane pola) |
| set_automation_active | Włącz, wyłącz lub przełącz regułę |
| duplicate_automation | Skopiuj regułę; kopia startuje jako nieaktywna |
| delete_automation | Trwale usuń regułę razem z dziennikiem wykonań |
| get_automation_logs | Pobierz dziennik wykonań reguły: status, subskrybent i wynik każdej akcji |
Konto (2)
| Narzędzie | Opis |
|---|---|
| test_connection | Przetestuj połączenie z API i dane dostępowe |
| get_account_info | Pobierz informacje o połączonym koncie |
Oprócz narzędzi klient udostępnia 5 gotowych promptów (analyze_subscribers, send_newsletter, cleanup_list, import_contacts, list_report) i 3 zasoby (netsendo://info, netsendo://stats, netsendo://lists).
Przykładowe zapytania
Bezpieczeństwo
Rozwiązywanie problemów
- Upewnij się, że NetSendo jest uruchomiony i dostępny
- Sprawdź, czy klucz API jest prawidłowy
- Zweryfikuj poprawność URL-a (uwzględnij https://)
Uruchom ponownie narzędzie AI po zmianach konfiguracji.
Zainstaluj Node.js ze strony nodejs.org (zawiera npm/npx).
Wiele instancji NetSendo
Możesz połączyć się z wieloma instancjami NetSendo, używając różnych nazw serwerów:
{
"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"]
}
}
}
