Claude Code · Serwer MCP
Serwer MCP dla Claude Code: wiadomości i e-mail w aplikacji
Jedno polecenie claude mcp add podłącza serwer Unipile MCP. Claude Code buduje potem w projekcie funkcje LinkedIn, WhatsApp i e-mail.
7 dni za darmo, bez karty kredytowej.
Claude Code · crm-app
Unipile MCP połączony
Dodaj do mojego CRM połączenie konta LinkedIn.
Odczyt endpointuPOST /v2/auth/linkschemat wczytany
Dodano endpoint połączenia i przycisk w Ustawieniach. ID konta jest zapisywane przy użytkowniku.
Opisz kolejną funkcję…
Zadanie
Co trzeba zrobić
Dodanie do produktu połączenia z LinkedIn, WhatsApp, e-mailem lub kalendarzem oznacza lekturę dokumentacji API, wybór właściwych endpointów, podłączenie Hosted Auth i jego callbacków, a potem pilnowanie właściwych ID od wyszukiwania po wiadomość. Z serwerem Unipile MCP w Claude Code agent czyta to wszystko za Państwa i pisze kod w Państwa stacku, z terminala lub z rozszerzenia IDE.
Podłącz serwer Unipile MCP do Claude CodeUnipile MCP połączony
Wybierz kanały do podłączenia
developer.unipile.com/mcpPodłącz wszystkie kanały9 kanałów
↑↓nawigacja spacjawybór ↵połączjeden URL, jeden nagłówek
Bez tego
Karty, zgadywanie, kod klejący
Claude Code zgaduje nazwy endpointów i payloady na podstawie danych treningowych i myli ID.
Schematy z dokumentacji wkleja się do czatu ręcznie, endpoint po endpoincie.
Pierwsze prawdziwe wywołanie następuje na produkcji, już po code review.
Z serwerem Unipile MCP
Efekt w aplikacji
Endpoint połączenia i przycisk w Ustawieniach: każdy użytkownik podłącza własne konto przez Hosted Auth.
Odbiornik webhooków i inbox, który pokazuje wiadomości i e-maile na bieżąco.
Każde żądanie wykonane już raz w aplikacji Development, zanim przejrzą Państwo diff.
claude mcp add, trzy zakresy
Dodaj serwer Unipile MCP do Claude Code
Serwer jest zdalny: jeden URL przez streamable HTTP i jeden nagłówek. Bez npx, bez lokalnego procesu. Rejestruje go jedno polecenie; wybrany zakres decyduje, gdzie się wczytuje i czy dostaje go też zespół. Polecenie i JSON sprawdzone z oficjalną dokumentacją Claude Code.
Zainstalowany Claude Code (CLI lub rozszerzenie IDE), zalogowany, uruchomiony z folderu projektu.
Aplikacja Development w dashboardzie Unipile, ze Scope i kluczem Account API przypisanym do tego Scope.
Co najmniej jedno konto testowe podłączone do tego Scope przez Hosted Auth, aby agent mógł wykonywać prawdziwe żądania.
Zakres user--scope user · każdy projekt, tylko dla Państwa
Zakres project.mcp.json w katalogu głównym repozytorium, współdzielony
Zakres local (domyślny)tylko ten projekt, prywatnie, w ~/.claude.json
?
Który zakres?User, gdy buduje się kilka integracji Unipile na jednej maszynie. Project, gdy cały zespół ma dostać serwer z repozytorium, a każdy developer trzyma własny klucz w zmiennej środowiskowej. Local do jednorazowej próby. Gdy ta sama nazwa istnieje w kilku zakresach, local wygrywa z project, a project z user.
# Zakres user: każdy projekt na tej maszynie, prywatnie
claude mcp add --transport http --scope user \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
# Claude Code wyświetli "Added …", potem: claude mcp list
// Zakres project: commitowany w katalogu głównym repozytorium, współdzielony z zespołem
{
"mcpServers": {
"unipile": {
"type": "http",
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "${UNIPILE_API_KEY}"
}
}
}
}
// "type": "http" jest wymagane; każdy developer eksportuje UNIPILE_API_KEY
# Zakres local (domyślny): tylko ten projekt, prywatnie, zapisany w ~/.claude.json
claude mcp add --transport http \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
Sprawdzone na Claude Code 2.1: „Added …”, potem ✔ Connected w claude mcp list. URL trzeba ująć w cudzysłów (zsh traktuje ? jako wzorzec), a --header umieścić po URL, bo flaga przyjmuje kilka wartości.
claude mcp addRejestruje serwer w wybranym zakresie i po zapisaniu wyświetla „Added …”.--transport httpSerwer Unipile to zdalny serwer streamable HTTP. Bez polecenia, bez npx, bez lokalnego procesu.--scope userKażdy projekt na tej maszynie, tylko dla Państwa. Bez tej flagi zakres to local (tylko ten projekt); --scope project zapisuje .mcp.json.unipileNazwa widoczna w claude mcp list, claude mcp get i /mcp."https://developer.unipile.com/mcp?branch=v2.0"Jedyny URL serwera, w cudzysłowie. Parametr ?branch=v2.0 wybiera API v2.--header "X-API-KEY: …"Klucz Account API przypisany do Scope. Na końcu, bo flaga przyjmuje kilka nagłówków.Weryfikacja
Sprawdzenie połączenia
Trzy testy: z terminala, w sesji, a potem na czacie. Żaden nie dotyka podłączonego konta.
1Z terminalaLista pokazuje stan każdego serwera: ✔ Connected to pożądany wynik; ✘ Failed to connect wskazuje na URL, ! Needs authentication na nagłówek, a ⏸ Pending approval na serwer projektu, który nie został jeszcze zatwierdzony.claude mcp list
claude mcp get unipile
2W sesjiWpisz tę komendę slash w Claude Code, aby zobaczyć stan serwera, a w przypadku .mcp.json w zakresie project zatwierdzić go przy pierwszym otwarciu folderu./mcp
3Na czacie, bez dotykania kontaWystarczy zapytać o coś, co wymaga tylko odczytu specyfikacji API. Jeśli agent odpowie prawdziwymi endpointami i parametrami, serwer jest podłączony.Korzystając z Unipile MCP, wypisz endpointy wyszukiwania osób na LinkedIn i ich wymagane parametry.
Prompty zamiast kodu klejącego
Prompt dla agenta
Trzy zadania integracyjne, a przy każdym dokładny prompt do wklejenia w Claude Code, endpointy Unipile, które agent czyta i wywołuje, oraz to, co trafia do projektu. Ścieżki są pełne, względem bazowego URL API
https://api.unipile.com, z kluczem przypisanym do Scope w nagłówku X-API-KEY każdego żądania.Dodaj wiadomości WhatsApp do naszej konsoli supportu: synchronizuj rozmowy każdego agenta i pozwól mu odpowiadać z poziomu zgłoszenia.
Wyszukiwanie endpointów"chats messages send"3 wyniki
Wykonaj zapytanieGET /v2/{account_id}/chats9 czatów
Utworzono
whatsapp/chat-sync.ts (czaty i wiadomości zapisywane przy zgłoszeniu metodą upsert, paginacja kursorem) oraz POST /tickets/:id/reply wywołujący endpoint wysyłki na koncie, do którego należy czat. Synchronizacja uruchomiona w aplikacji Development: 9 czatów, 41 wiadomości.Inbox WhatsApp w produkcie, z jednego promptu
Claude Code czyta przez serwer kontrakty czatów i wiadomości, pisze w Państwa stacku zadanie synchronizacji i endpoint odpowiedzi, a pierwsze żądania wykonuje w aplikacji Development. LinkedIn, Instagram i Telegram używają tych samych endpointów czatów, więc drugi kanał to krótszy prompt niż pierwszy.
Endpointy używane przez agenta
GET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Częsty błąd: Mieszanie ID. Wiadomość zawsze wysyła się z konta, do którego należy czat; trzeba trzymać
API WhatsApp
account_id i chat_id razem od wywołania listy aż do wysyłki.Pozwól użytkownikom wysyłać e-maile ze strony kontaktu przez ich własną skrzynkę Gmail lub Outlook i grupuj odpowiedzi w wątku przy kontakcie.
Odczyt endpointuPOST /v2/{account_id}/emails/sendschemat wczytany
Wykonaj zapytanieGET /v2/{account_id}/emails200 OK
Dodano
POST /contacts/:id/email wywołujący endpoint wysyłki na koncie skrzynki użytkownika, a także opcję odpowiedzi w wątku z użyciem ID wątku i synchronizację przychodzących wiadomości, która przypina odpowiedzi do kontaktu. Wysłano testowy e-mail ze skrzynki aplikacji Development, odpowiedź trafiła do wątku.E-mail z własnej skrzynki użytkownika, w wątku w CRM
Gmail, Outlook i IMAP mają jeden wspólny schemat e-maila. Agent czyta kontrakty wysyłki i listy, podłącza wysyłkę do skrzynki, którą użytkownik podłączył przez Hosted Auth, i zachowuje ID wątku, aby odpowiedzi trafiały do właściwego kontaktu.
Endpointy używane przez agenta
POST/v2/{account_id}/emails/sendGET/v2/{account_id}/emailsGET/v2/{account_id}/threads/{thread_id}
Częsty błąd: Wysyłanie ze wspólnej skrzynki technicznej. Każdy e-mail wychodzi z konta użytkownika, który je podłączył, więc odpowiedź trafia do jego skrzynki.
API e-mail
Każdy workspace w moim SaaS ma kilku użytkowników z własnymi kontami LinkedIn i e-mail. Odizoluj ich: jeden Scope i jeden klucz przypisany do Scope na workspace.
Wyszukiwanie endpointów"scopes api-keys"4 wyniki
Wykonaj zapytaniePOST /v2/scopes/201 · scope
Przy tworzeniu workspace backend tworzy teraz Scope oraz klucz Account API przypisany do Scope, zapisany w postaci zaszyfrowanej przy workspace, a każde konto podłączone przez członka zespołu trafia do tego Scope. Wszystkie wywołania kont używają klucza workspace. Przetestowane na dwóch workspace'ach w aplikacji Development.
Wielu użytkowników, wiele kont, jedna granica na tenanta
Scope to granica dostępu w API Unipile: klucz przypisany do Scope widzi tylko konta przypisane do tego Scope. Agent przekłada to na model tenantów, więc logika wielu kont żyje w API, a nie w Państwa kodzie.
Endpointy używane przez agenta
POST/v2/scopes/POST/v2/api-keys/GET/v2/accounts/
Częsty błąd: Jeden globalny klucz Account dla wszystkich tenantów. Klucz globalny zostaje w backendzie do administracji; każdy tenant dostaje własny klucz przypisany do Scope.
Konta, Scope'y i klucze
Od Development do produkcji
Najpierw testy w aplikacji Development
Dashboard Unipile oddziela aplikację Development od aplikacji Production. Claude Code dostaje klucz przypisany do Scope z aplikacji Development i jedno lub dwa konta testowe podłączone przez Hosted Auth. Agent wykonuje prawdziwe żądania na tych kontach, w imieniu uwierzytelnionego użytkownika, który je podłączył, w granicach limitów każdego dostawcy, a konta użytkowników pozostają nietknięte aż do wdrożenia.
Sprawdzić przepływ połączenia od początku do końca: link auth tworzony po stronie serwera, ID konta zapisane przy użytkowniku.
Sprawdzić jeden odczyt i jeden zapis na funkcję: lista czatów, wysłanie wiadomości z konta testowego.
Sprawdzić dostarczenie webhooka oraz stan ponownego połączenia lub checkpointu przed przełączeniem klucza na Production.
crm-app · DevelopmentUżywana przez Claude Code
Scopedev-tests · 2 konta
Klucz
klucz Account API przypisany do ScopeKontaTestowe konto LinkedIn, testowa skrzynka Gmail
Webhooki1 endpoint · zdarzenia wiadomości
crm-app · ProductionNietknięta
Scopejeden na workspace
Klucz
klucze przypisane do Scope, tylko w backendzieKontawłasne konta użytkowników, przez Hosted Auth
Rozwiązywanie problemów
Częste błędy i ich znaczenie
Stany i ostrzeżenia, które Claude Code pokazuje, gdy wpis MCP jest nieprawidłowy (tak jak wyświetlają je claude mcp list i /mcp), oraz rozwiązanie dla każdego z nich.
✘ Failed to connect
claude mcp list pokazuje serwer, ale test stanu kończy się błędem.
RozwiązaniePole url musi mieć dokładnie wartość https://developer.unipile.com/mcp?branch=v2.0 wraz z --transport http. Claude Code ponawia błąd przejściowy trzy razy, ale nigdy błąd not found ani błąd uwierzytelnienia: należy poprawić URL lub nagłówek, a potem uruchomić claude mcp get unipile.
⏸ Pending approval
Serwer z zakresu project z .mcp.json jest na liście, ale nie jest połączony.
RozwiązanieUruchom claude w folderze, zaakceptuj okno zaufania workspace, a potem zatwierdź serwer w /mcp. Sklonowane repozytorium nie może samo zatwierdzić swoich serwerów przez commitowane ustawienia.
401 przy żądaniach
Serwer jest połączony, ale wykonanie żądania kończy się błędem.
RozwiązanieW nagłówku brakuje klucza, nazwa nagłówka to nie X-API-KEY, albo użyto klucza Service lub globalnego klucza Account zamiast klucza Account API przypisanego do Scope z aplikacji Development.
Ostrzeżenie o brakującej zmiennej
claude mcp list zgłasza, że ${UNIPILE_API_KEY} nie jest ustawiona.
RozwiązanieWyeksportuj zmienną w powłoce, z której startuje Claude Code, albo dodaj wartość domyślną, stosując zapis ${UNIPILE_API_KEY:-} we wpisie. Nieustawione zmienne w url lub headers mogą zostać odczytane jako puste, co kończy się błędem 401.
Ukryte białe znaki w headers.X-API-KEY
Token wklejony ze znakiem nowej linii na końcu.
RozwiązanieClaude Code wskazuje to pole w claude mcp list i /mcp bez wyświetlania wartości. Dodaj serwer ponownie z przyciętym kluczem; Claude Code używa wartości dokładnie w takiej postaci, w jakiej je wpisano.
Ta sama nazwa w kilku zakresach
unipile istnieje w zakresach user i project z różnymi ustawieniami.
RozwiązanieClaude Code łączy się raz, według definicji o najwyższym priorytecie (local, potem project, potem user), i ostrzega o konflikcie. Duplikat usuwa się poleceniem claude mcp remove unipile --scope user albo trzyma jeden zakres na maszynę.
MCP endpoint not found at
404 na URL: ścieżka jest błędna.
RozwiązaniePełny URL to https://developer.unipile.com/mcp?branch=v2.0, łącznie z parametrem branch. Można to sprawdzić poleceniem curl -I ze swojej maszyny, a potem claude mcp get unipile.
/mcp pokazuje No MCP servers configured
Edytowany plik nie jest czytany przez Claude Code.
RozwiązanieClaude Code czyta ~/.claude.json i .mcp.json wyłącznie w katalogu głównym projektu, nigdy ~/.claude/mcp.json, ~/.claude/.mcp.json lub ~/.claude/config/mcp.json. Trzeba też zrestartować sesję: .mcp.json jest czytany przy starcie.
Powłoka odrzuca URL albo brakuje parametru branch
zsh traktuje ? w ?branch=v2.0 jako wzorzec.
RozwiązanieURL zawsze trzeba ująć w cudzysłów w claude mcp add. Bez cudzysłowu zsh odpowiada „no matches found”, a bash może pominąć parametr, co łączy z niewłaściwą wersją API.
Wolny start lub timeout
Start serwera trwa dłużej niż domyślne 30 s.
RozwiązanieWystarczy podnieść limit dla tej sesji: MCP_TIMEOUT=60000 claude. Jeśli serwer projektu został odrzucony w oknie zatwierdzania, claude mcp reset-project-choices przywraca to okno.
6000+
Firmy, które wprowadzają innowacje z Unipile
Zaufali nam liderzy branży
1 API
Usprawnij obsługę wszystkich głównych kanałów komunikacji
2 dni
Szybkie uruchomienie integracji przy minimalnej konfiguracji
30%
Mniej pracy i zasobów na utrzymanie
Wbudowane bezpieczeństwo i zgodność
Ochrona klasy enterprise dla danych i procesów Więcej o naszym bezpieczeństwie
SOC 2 Type II
Certyfikat
Niezależnie audytowane mechanizmy bezpieczeństwa, które zapewniają ochronę danych i ciągłość działania.
GDPR
Zgodność
Pełna zgodność z europejskimi przepisami o ochronie danych osobowych.
99.9%
Dostępności platformy w ciągu ostatnich 24 miesięcy
24/7
Globalne wsparcie i wydajne API
FAQ: serwer MCP w Claude Code
Pytania, które ludzie naprawdę wpisują: zakresy, gdzie leży konfiguracja, klucze poza repozytorium, własne nagłówki, Failed to connect, cudzysłów wokół URL, zmiany w .mcp.json i klucze API.
Local jest domyślny: zapisany w
~/.claude.json pod bieżącym projektem, prywatny i ograniczony do tego projektu. Project zapisuje .mcp.json w katalogu głównym repozytorium i jest współdzielony przez system kontroli wersji. User zapisuje w ~/.claude.json pod głównym kluczem mcpServers i obowiązuje we wszystkich projektach. Priorytet: local, potem project, potem user. Dla Unipile: --scope user dla osobistego klucza deweloperskiego, --scope project gdy cały zespół pracuje nad tą samą integracją.W
~/.claude.json (w Windows %USERPROFILE%\.claude.json) dla zakresów local i user oraz w .mcp.json w katalogu głównym projektu dla zakresu project. Claude Code nie czyta ~/.claude/.mcp.json, ~/.claude/config/mcp.json, ~/.claude/mcp.json lub %APPDATA%\Claude\mcp.json. claude mcp get unipile pokazuje, w którym zakresie znajduje się wpis.Claude Code rozwija
${VAR} i ${VAR:-default} w command, args, env, url i headers. Wystarczy wpisać "X-API-KEY": "${UNIPILE_API_KEY}" w .mcp.json, zacommitować plik, a każdy developer poda własny klucz przypisany do Scope przez swoje środowisko. Jeśli zmienna nie jest ustawiona i nie ma wartości domyślnej, konfiguracja i tak się wczyta, a claude mcp list pokaże ostrzeżenie.Tak:
--header "X-API-KEY: your-scoped-api-key", można powtórzyć dla kilku nagłówków, krótka forma -H. Należy ją umieścić po URL, bo flaga przyjmuje kilka wartości. Serwer Unipile to zdalny serwer HTTP: nic do instalowania lokalnie, bez npx, bez Node do utrzymywania.Uruchom
claude mcp get unipile i zobacz szczegóły (status HTTP i treść błędu), sprawdź ostrzeżenia o białych znakach na początku lub końcu, które claude mcp list wyświetla po wklejeniu klucza, i potwierdź, że URL odpowiada z lokalnej maszyny, poleceniem curl -I. 404 wyświetla MCP endpoint not found at <origin>: ścieżka jest błędna, pełny URL to https://developer.unipile.com/mcp?branch=v2.0, łącznie z parametrem branch.URL zawiera znak
?, który zsh odczytuje jako znak wzorca. URL zawsze trzeba ująć w cudzysłów w claude mcp add. Bez cudzysłowu zsh odpowiada „no matches found”, a bash może pominąć parametr branch i połączyć z niewłaściwą wersją serwera.Claude Code czyta
.mcp.json przy starcie sesji: trzeba wyjść i uruchomić ponownie. Błędny wpis jest ignorowany bez komunikatu, a claude mcp list wyświetla ostrzeżenie parsowania z błędnym polem. Jeśli serwer został odrzucony w oknie zatwierdzania projektu, należy uruchomić claude mcp reset-project-choices.Serwer odpowiada bez klucza, gdy agent tylko czyta specyfikację API. Aby wykonywać prawdziwe żądania, należy utworzyć Scope w aplikacji Development, przypisać do niego tylko potrzebne konta i wygenerować dla tego Scope klucz Account API. Klientowi MCP nigdy nie należy dawać klucza Service ani globalnego klucza Account.