NetSendo
Platform Updates

NetSendo v2.10.0: Połącz Claude i aplikacje AI przez zdalne MCP

NetSendo Team7 min czytania
NetSendo v2.10.0: Połącz Claude i aplikacje AI przez zdalne MCP

Asystenci AI potrafią dziś wykonywać prawdziwą pracę, ale podłączenie ich do narzędzi marketingowych było kłopotliwe. Trzeba było utworzyć klucz API, wkleić go do pliku konfiguracyjnego, zainstalować lokalnie Node.js i liczyć na to, że klucz nie wycieknie. Dla platformy self-hosted, która stawia na własność danych, to za mało.

NetSendo v2.10.0 to zmienia. Każda instalacja udostępnia teraz własny zdalny endpoint MCP pod adresem https://<twoja-domena>/mcp. Wklej ten adres do Claude, ChatGPT, Cursora, Hermes Agent lub innego hosta MCP, zaloguj się do NetSendo i wybierz uprawnienia. Asystent będzie wtedy pracował na Twoich listach, subskrybentach i wiadomościach za pomocą tych samych 140 narzędzi co klient MCP z npm.

TL;DR: NetSendo v2.10.0 dodaje wbudowany konektor AI z logowaniem OAuth (PKCE, rotowane refresh tokeny, unieważnianie), uprawnieniami dla każdej aplikacji, izolacją danych użytkowników i limitami zapytań. Jest włączony po aktualizacji, a aplikacje chmurowe wymagają publicznego adresu HTTPS. Pierwsze ładowanie panelu jest mniejsze o około 75%, a strona logowania spadła z ok. 9 MB do 1,2 MB.

🚀 Co nowego w v2.10.0

🔌

Zdalny endpoint MCP

Jeden adres, /mcp, wbudowany w każdą instalację. Bez nowego kontenera.

🔐

Logowanie OAuth

Nie tworzysz ani nie wklejasz klucza API. Zatwierdzasz aplikację w przeglądarce.

👤

Dostęp per użytkownik

Połączona aplikacja widzi tylko dane osoby, która ją zatwierdziła.

⚡

Szybszy panel

Panel pobiera jeden język zamiast czterech, a zbudowane pliki są wstępnie skompresowane.

Konektor AI: jak przycisk „Zaloguj przez…” dla asystenta

Na pewno znasz „Zaloguj przez Google”. Konektor AI działa podobnie, tylko w drugą stronę: to aplikacja AI prosi o dostęp do Twojego NetSendo. Gdy dodajesz konektor, aplikacja przekierowuje Cię do Twojej instalacji. Logujesz się, widzisz, co aplikacja chce robić, i ją zatwierdzasz.

Ekran logowania pokazuje:

  • Nazwę aplikacji i status jej tożsamości: potwierdzona (opublikowana tożsamość Claude jest), zadeklarowana przez samą aplikację albo ostrzeżenie, jeśli aplikacja jest opublikowana na jednej stronie, a wraca na inną
  • Zalogowane konto NetSendo, żeby nie zatwierdzić dostępu do niewłaściwego
  • Żądane uprawnienia z polami wyboru, np. lists:read, subscribers:write i messages:write. Możesz przyznać mniej, niż prosi aplikacja.

Ustawienia → Konektor AI

Ta nowa strona pokazuje adres konektora Twojej instalacji, listę połączonych aplikacji z przyciskiem Rozłącz (działa od następnego zapytania) oraz instrukcje krok po kroku dla Claude, Claude Code, Hermes Agent, ChatGPT, Cursora, VS Code, Gemini CLI i hostów uruchamiających tylko lokalne polecenia. Instrukcje są dostępne po polsku, angielsku, niemiecku i hiszpańsku.

Na przykład w Claude Code:

claude mcp add --transport http netsendo https://twoja-domena.pl/mcp

Zgodność ze standardami hostów MCP

  • ✅ OAuth authorization code z PKCE
  • ✅ Client ID Metadata Documents i dynamiczna rejestracja klientów
  • ✅ Refresh tokeny wymieniane przy każdym użyciu oraz unieważnianie tokenów
  • ✅ Dokumenty discovery w /.well-known/
  • ✅ Tokeny dostępu ważne godzinę. Aplikacja nieużywana przez 90 dni musi zalogować się ponownie.
  • ✅ Przechowywane są tylko skróty (hashe) tokenów
ℹ️ Uwaga: Jeśli host nie obsługuje logowania OAuth, może wywoływać /mcp ze zwykłym kluczem API NetSendo w nagłówku Authorization: Bearer. Klucze API, REST API i lokalny klient @netsendo/mcp-client działają jak dotąd.
{
  "mcpServers": {
    "netsendo": {
      "url": "https://twoja-domena.pl/mcp",
      "headers": { "Authorization": "Bearer TWOJ_KLUCZ_API" }
    }
  }
}

Dokładny format konfiguracji zależy od hosta. Sprawdź dokumentację swojej aplikacji AI.

Limity uczciwego użycia

Żadna aplikacja nie zajmie całego serwera. Każda może wysłać 120 zapytań na minutę i wykonywać dwa wywołania narzędzi jednocześnie, a wszystkie aplikacje razem najwyżej trzy. Wywołanie ponad limit dostaje odpowiedź „zajęte, spróbuj ponownie”, a asystent sam ponawia próbę. Limity zmienisz w pliku .env.

💼 Korzyści i przypadki użycia

🛒

E-commerce: kampanie w formie rozmowy

Poproś Claude: „przygotuj follow-up po zakupie dla klientów z zeszłego tygodnia i zapisz jako szkic”. Z uprawnieniami lists:read i messages:write asystent może:

  • Znaleźć właściwą listę
  • Napisać i zapisać wiadomość
  • Zostawić wysyłkę Tobie, jeśli nie przyznałeś szerszych uprawnień
🚀

SaaS: kontrola churnu w edytorze kodu

Programiści w Cursorze lub VS Code mogą przeglądać dane subskrybentów, sprawdzać wielkość list onboardingowych i dodawać kontakty testowe bez wychodzenia z edytora i bez instalowania pakietów Node.js.

🏢

Agencje: bezpieczny dostęp dla zespołu

Połączona aplikacja działa jako użytkownik, który ją zatwierdził. Gdy członek zespołu podłącza swojego asystenta, ten widzi tylko jego dane, a nie dostęp właściciela konta. Właściciel widzi aplikacje członków zespołu i może je w każdej chwili rozłączyć.

🛠️ Przewodnik krok po kroku

  1. Zaktualizuj NetSendo
    docker compose pull && docker compose up -d

    Migracja dodaje cztery tabele: connector_clients, connector_connections, connector_tokens i connector_auth_codes. Codzienne zadanie connector:prune usuwa wygasłe kody, tokeny i połączenia.

  2. Sprawdź, czy instalacja jest dostępna przez publiczny HTTPS

    Aplikacje chmurowe, takie jak Claude, łączą się z serwerów swojego dostawcy, więc adres localhost ani adres dostępny tylko przez VPN nie zadziała. Dołączona konfiguracja nginx nie wymaga zmian.

  3. Otwórz Ustawienia → Konektor AI

    Skopiuj adres /mcp i postępuj zgodnie z instrukcją dla swojej aplikacji AI.

  4. Zatwierdź aplikację

    Na ekranie logowania sprawdź status tożsamości i zalogowane konto, a potem odznacz uprawnienia, których aplikacja nie potrzebuje.

  5. Opcjonalnie: włącz skompresowane pliki

    Pobierz nowy plik docker/nginx/default.conf i zrestartuj kontener webserver:

    docker compose restart webserver
⚠️ Ważne: Konektor jest włączony po aktualizacji. Odpowiada pod /mcp, /oauth/* i /.well-known/oauth-*, ale nic nie robi, dopóki ktoś się nie zaloguje i nie zatwierdzi aplikacji. Aby go wyłączyć, ustaw poniższą zmienną i zrestartuj kontenery:
MCP_CONNECTOR_ENABLED=false

Częste problemy

  • Claude nie może się połączyć: Instalacja prawdopodobnie nie jest dostępna z internetu przez HTTPS albo reverse proxy blokuje /.well-known/. Uwagi o proxy i rozwiązywanie problemów znajdziesz w docs/MCP_CONNECTOR.md.
  • Własne obrazy Docker: Dodaj dwa nowe kroki z docker/php/Dockerfile. Pierwszy buduje narzędzia MCP w /opt/netsendo-mcp, drugi tworzy pliki .gz zbudowanych zasobów.
  • Pliki wciąż nieskompresowane: Jeśli proxy łączy się z nginx NetSendo przez HTTP/1.0, podmień default.conf albo włącz kompresję w samym proxy.

⚡ Wydajność: znacznie lżejszy panel

  • Pierwsze ładowanie to około ćwierć dawnego rozmiaru. Wcześniej każda strona miała w skrypcie startowym wszystkie cztery języki interfejsu (1,85 MB). Teraz to 0,42 MB skryptu i około 0,36 MB tekstów, tylko dla używanego języka. Angielski, czyli język zapasowy, jest pobierany dopiero wtedy, gdy jakiegoś tekstu naprawdę brakuje.
  • Goście nie pobierają już całego panelu w tle. Wstępne pobieranie 286 plików (7,7 MB) dotyczy teraz tylko zalogowanych użytkowników. Strona logowania zeszła z ok. 250 zapytań i 9 MB do 15 zapytań i 1,2 MB.
  • Wstępnie skompresowane zasoby: Każdy zbudowany skrypt i arkusz stylów ma obok gotowy plik .gz. Pliki w /build/assets/ są cache'owane przez rok jako niezmienne.

Pozostałe zmiany

  • Obraz aplikacji zawiera teraz narzędzia MCP (/opt/netsendo-mcp) i uruchamia je za pomocą Node.js, który już jest w obrazie.
  • mcp/dist zbudowano od nowa z aktualnego źródła, więc send_sms poprawnie przekazuje treść SMS. Pakiet npm @netsendo/mcp-client 1.6.0 nie zmienia się w tym wydaniu.
  • Atrybut lang strony zmienia się teraz po przełączeniu języka.

🎯 Wskazówki ekspertów

1
Przyznawaj minimalne uprawnienia

Zacznij od uprawnień tylko do odczytu. messages:write dodaj dopiero wtedy, gdy chcesz, żeby asystent tworzył treści.

2
Nie ignoruj ostrzeżeń o tożsamości

Jeśli ekran logowania ostrzega, że aplikacja jest opublikowana na jednej stronie, a wraca na inną, nie zatwierdzaj jej, dopóki nie sprawdzisz, skąd pochodzi.

3
Regularnie przeglądaj połączone aplikacje

Jako właściciel konta sprawdzaj połączenia członków zespołu w Ustawienia → Konektor AI. Rozłączenie działa od następnego zapytania.

4
Dostosuj limity na małych serwerach

Na niewielkim VPS-ie obniż limity współbieżności w .env, żeby wywołania AI nie konkurowały z kolejką wysyłki.

5
Wybieraj OAuth zamiast kluczy API

Klucza API w nagłówku Bearer używaj tylko dla hostów, które nie obsługują logowania. Tokeny OAuth wygasają, są rotowane i można je unieważnić dla każdej aplikacji osobno.

🎉 Podsumowanie

NetSendo v2.10.0 łączy Twoją platformę marketingową self-hosted z nowoczesnymi asystentami AI, a kontrola zostaje po Twojej stronie. Nie kopiujesz kluczy, każda aplikacja dostaje tylko wybrane przez Ciebie uprawnienia, dane każdego użytkownika są oddzielone, a wszystko zostaje na Twoim serwerze. Panel ładuje się też znacznie szybciej.

Gotowy, by podłączyć asystenta AI?

Zaktualizuj do v2.10.0 i połącz Claude w niecałą minutę.

Podoba Ci się NetSendo? Daj nam ⭐ na GitHubie. Pełną listę zmian znajdziesz w notatkach do wydania v2.10.0.

#mcp#ai#claude#oauth#performance#self-hosted#release
Udostępnij