Claude Code · Server MCP
Server MCP per Claude Code: messaggistica ed email nella sua app
Un solo comando claude mcp add collega il Server MCP Unipile. Claude Code costruisce poi funzionalità LinkedIn, WhatsApp ed email nel suo progetto.
Prova gratuita di 7 giorni, senza carta di credito.
Claude Code · crm-app
Unipile MCP connesso
Aggiungi la connessione dell'account LinkedIn al mio CRM.
Lettura endpointPOST /v2/auth/linkschema caricato
Aggiunti la route di connessione e il pulsante Settings. L'account ID viene salvato sull'utente.
Descriva la prossima funzionalità…
L'obiettivo
Che cosa si vuole ottenere
Aggiungere al suo prodotto una connessione LinkedIn, WhatsApp, email o calendario. Significa leggere un riferimento API, scegliere gli endpoint giusti, collegare Hosted Auth e i suoi callback, e poi conservare gli ID corretti dalla ricerca fino al messaggio. Con il server MCP di Unipile in Claude Code, è l'agente a fare quella lettura per lei e a scrivere il codice nel suo stack, dal terminale o dall'estensione per l'IDE.
Connettere il server MCP Unipile a Claude CodeUnipile MCP connesso
Selezioni i canali da connettere
developer.unipile.com/mcpConnetti tutti i canali9 canali
↑↓naviga spazioseleziona ↵connettiun URL, un header
Senza
Schede aperte, tentativi, codice di collegamento
Claude Code indovina nomi di endpoint e payload dai dati di training, e sbaglia gli ID.
Si incollano gli schemi del riferimento nella chat, un endpoint alla volta.
La prima chiamata reale avviene in produzione, dopo la code review.
Con il server MCP di Unipile
Il risultato nella sua applicazione
Una route di connessione e un pulsante Settings: ogni utente collega il proprio account tramite Hosted Auth.
Un ricevitore di webhook e una inbox che mostra messaggi ed email man mano che arrivano.
Ogni richiesta già eseguita una volta sulla sua applicazione Development prima di rivedere il diff.
claude mcp add, tre scope
Aggiungere il server MCP Unipile a Claude Code
Il server è remoto: un URL su streamable HTTP e un header. Niente npx, nessun processo locale. Un solo comando lo registra; lo scope che sceglie decide dove viene caricato e se lo riceve anche il suo team. Comando e JSON verificati sulla documentazione ufficiale di Claude Code.
Claude Code installato (CLI o estensione IDE), con accesso effettuato, eseguito dalla cartella del progetto.
Un'applicazione Development nella dashboard Unipile, con uno Scope e una chiave API Account scoped.
Almeno un account di test collegato a quello Scope tramite Hosted Auth, così l'agente può eseguire richieste reali.
Scope user--scope user · tutti i progetti, privato
Scope project.mcp.json nella radice del repository, condiviso
Scope local (predefinito)solo questo progetto, privato, in ~/.claude.json
?
Quale scope?User quando sviluppa più integrazioni Unipile dalla stessa macchina. Project quando tutto il team deve ricevere il server dal repository, con la chiave personale di ogni sviluppatore in una variabile d'ambiente. Local per una prova rapida. Quando un nome esiste in più scope, local prevale su project, che prevale su user.
# Scope user: tutti i progetti su questa macchina, privato
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 stampa "Added …", poi: claude mcp list
// Scope project: committato nella radice del repository, condiviso con il team
{
"mcpServers": {
"unipile": {
"type": "http",
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "${UNIPILE_API_KEY}"
}
}
}
}
// "type": "http" è obbligatorio; ogni sviluppatore esporta UNIPILE_API_KEY
# Scope local (predefinito): solo questo progetto, privato, salvato in ~/.claude.json
claude mcp add --transport http \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
Verificato su Claude Code 2.1: "Added …" poi ✔ Connected in claude mcp list. Mantenga l'URL tra virgolette (zsh interpreta il ? come un pattern) e metta --header dopo l'URL, perché accetta più valori.
claude mcp addRegistra un server nello scope scelto e stampa "Added …" una volta scritto.--transport httpIl server Unipile è un server remoto streamable HTTP. Nessun comando, niente npx, nessun processo locale.--scope userTutti i progetti su questa macchina, privato. Lo ometta per local (solo questo progetto), oppure usi --scope project per scrivere .mcp.json.unipileIl nome che vedrà in claude mcp list, claude mcp get e /mcp."https://developer.unipile.com/mcp?branch=v2.0"L'unico URL del server, tra virgolette. Il parametro ?branch=v2.0 seleziona l'API v2.--header "X-API-KEY: …"La sua chiave API Account scoped. Messa per ultima perché il flag accetta più header.Verifica
Verificare la connessione
Tre controlli: dal terminale, dentro una sessione, poi in una chat. Nessuno tocca un account collegato.
1Dal terminaleL'elenco mostra uno stato di salute accanto a ogni server: ✔ Connected è quello che serve; ✘ Failed to connect indica un problema di URL, ! Needs authentication di header, ⏸ Pending approval un server di progetto non ancora approvato.claude mcp list
claude mcp get unipile
2Dentro una sessioneDigiti lo slash command in Claude Code per vedere lo stato del server e, per un .mcp.json con scope project, approvarlo la prima volta che apre la cartella./mcp
3In una chat, senza toccare un accountChieda qualcosa che legga soltanto la specifica dell'API. Se l'agente risponde con route e parametri reali, il server è collegato.Usando l'MCP di Unipile, elenca gli endpoint per la ricerca di persone su LinkedIn e i loro parametri obbligatori.
Prompt, non codice di collegamento
Dia il prompt al suo agente
Tre integrazioni, ciascuna con il prompt esatto da incollare in Claude Code, gli endpoint Unipile che l'agente legge ed esegue e ciò che arriva nel suo progetto. I percorsi sono completi, sull'URL di base dell'API
https://api.unipile.com, con la sua chiave scoped passata nell'header X-API-KEY della richiesta.Aggiungi la messaggistica WhatsApp alla nostra console di assistenza: sincronizza le conversazioni di ogni operatore e permettigli di rispondere dal ticket.
Ricerca endpoint"chats messages send"3 risultati
Esecuzione richiestaGET /v2/{account_id}/chats9 chat
Creati
whatsapp/chat-sync.ts (chat e messaggi salvati sul ticket, paginazione a cursore) e POST /tickets/:id/reply che chiama la route di invio sull'account della chat stessa. Sync eseguita sull'app Development: 9 chat, 41 messaggi.Una inbox WhatsApp nel suo prodotto, con un solo prompt
Claude Code legge i contratti di chat e messaggi tramite il server, scrive il job di sincronizzazione e l'endpoint di risposta nel suo stack ed esegue le prime richieste sulla sua applicazione Development. LinkedIn, Instagram e Telegram usano le stesse route di chat, quindi il secondo canale richiede un prompt più breve del primo.
Endpoint usati dall'agente
GET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Errore comune: mescolare gli ID. Un messaggio parte sempre dall'account proprietario della chat; tenga
API WhatsApp
account_id e chat_id insieme dalla chiamata di lista fino a quella di invio.Permetti agli utenti di inviare email dalla pagina del contatto tramite la propria casella Gmail o Outlook, e raggruppa le risposte in thread sul contatto.
Lettura endpointPOST /v2/{account_id}/emails/sendschema caricato
Esecuzione richiestaGET /v2/{account_id}/emails200 OK
Aggiunta
POST /contacts/:id/email che chiama la route di invio sull'account della casella dell'utente, l'opzione di risposta nel thread tramite il thread ID e la sincronizzazione in entrata che collega le risposte al contatto. Inviata un'email di test dalla casella dell'app Development e verificata la risposta nel thread.Email dalla casella dell'utente, in thread nel suo CRM
Gmail, Outlook e IMAP condividono un unico schema email. L'agente legge i contratti di invio e di lista, collega l'azione di invio alla casella che l'utente ha connesso tramite Hosted Auth e conserva il thread ID, così le risposte arrivano sul contatto giusto.
Endpoint usati dall'agente
POST/v2/{account_id}/emails/sendGET/v2/{account_id}/emailsGET/v2/{account_id}/threads/{thread_id}
Errore comune: inviare da una casella tecnica condivisa. Ogni email parte dall'account dell'utente che l'ha collegato, così la risposta arriva nella sua inbox.
API Email
Ogni workspace del mio SaaS ha diversi utenti con i propri account LinkedIn ed email. Isolali: uno Scope e una chiave scoped per workspace.
Ricerca endpoint"scopes api-keys"4 risultati
Esecuzione richiestaPOST /v2/scopes/201 · scope
Alla creazione di un workspace il backend ora crea uno Scope e una chiave API Account scoped salvata cifrata sul workspace, e ogni account collegato da un membro viene assegnato a quello Scope. Tutte le chiamate sugli account usano la chiave del workspace. Testato con due workspace sull'app Development.
Molti utenti, molti account, un perimetro per tenant
Gli Scope sono il perimetro di accesso dell'API Unipile: una chiave scoped vede solo gli account assegnati al suo Scope. L'agente ne ricava il suo modello di tenant, così la logica multi-account vive nell'API e non nel suo codice.
Endpoint usati dall'agente
POST/v2/scopes/POST/v2/api-keys/GET/v2/accounts/
Errore comune: usare una sola chiave Account globale per tutti i tenant. La chiave globale resta nel backend per l'amministrazione; ogni tenant riceve la propria chiave scoped.
Account, Scope e chiavi
Dallo sviluppo alla produzione
Testare prima su un'applicazione Development
La dashboard Unipile separa un' applicazione Development da una di Produzione. Dia a Claude Code una chiave scoped dell'applicazione Development, con uno o due account di test collegati tramite Hosted Auth. L'agente esegue richieste reali su quegli account, per conto dell'utente autenticato che li ha collegati e nei limiti di ogni provider, e nulla tocca gli account dei suoi utenti fino al rilascio.
Validi il flusso di connessione end to end: auth link creato lato server, account ID salvato sull'utente.
Validi una lettura e una scrittura per funzionalità: elenco delle chat, invio di un messaggio sull'account di test.
Validi una consegna webhook e uno stato di riconnessione o checkpoint prima di passare la chiave alla Produzione.
crm-app · DevelopmentUsata da Claude Code
Scopedev-tests · 2 account
Chiave
scoped Account API keyAccountAccount LinkedIn di test, casella Gmail di test
Webhooks1 endpoint · eventi message
crm-app · ProductionIntatta
Scopeuno per workspace
Chiave
scoped keys, in your backend onlyAccountgli account dei suoi utenti, tramite Hosted Auth
Troubleshooting
Errori frequenti e cosa significano
Gli stati e gli avvisi che Claude Code mostra quando una voce MCP non è corretta, così come li stampano claude mcp list e /mcp, e come risolverli.
✘ Failed to connect
claude mcp list mostra il server, ma il controllo di stato fallisce.
SoluzioneIl valore di url deve essere esattamente https://developer.unipile.com/mcp?branch=v2.0 con --transport http. Claude Code ritenta tre volte un errore temporaneo, ma mai un not-found o un errore di autenticazione: corregga l'URL o l'header, poi esegua claude mcp get unipile.
⏸ Pending approval
Un server con scope project da .mcp.json è elencato ma non connesso.
SoluzioneEsegua claude nella cartella, accetti la finestra di attendibilità del workspace, poi approvi il server da /mcp. Un repository clonato non può approvare i propri server dalle impostazioni committate.
401 sulle richieste
Il server è connesso, ma l'esecuzione di una richiesta fallisce.
SoluzioneLa chiave manca dall'header, il nome dell'header non è X-API-KEY, oppure ha usato una chiave Service o una chiave Account globale invece di una chiave API Account scoped della sua applicazione Development.
Avviso di variabile mancante
claude mcp list segnala che ${UNIPILE_API_KEY} non è impostata.
SoluzioneEsporti la variabile nella shell che avvia Claude Code, oppure aggiunga un valore predefinito con la sintassi ${UNIPILE_API_KEY:-} . Variabili non impostate in url o headers possono risultare vuote, e finiscono in un 401.
Spazi nascosti in headers.X-API-KEY
Un token incollato con un ritorno a capo finale.
SoluzioneClaude Code indica il campo in claude mcp list e /mcp senza mostrarne il valore. Riaggiunga il server con la chiave ripulita; Claude Code usa i valori esattamente come sono scritti.
Stesso nome in più di uno scope
unipile esiste negli scope user e project con impostazioni diverse.
SoluzioneClaude Code si connette una sola volta, usando la definizione con la precedenza più alta (local, poi project, poi user) e segnala il conflitto. Rimuova il duplicato con claude mcp remove unipile --scope user oppure mantenga uno scope per macchina.
MCP endpoint not found su
Un 404 sull'URL: il percorso è sbagliato.
SoluzioneL'URL completo è https://developer.unipile.com/mcp?branch=v2.0, parametro branch incluso. Lo verifichi con curl -I dalla sua macchina, poi claude mcp get unipile.
/mcp mostra No MCP servers configured
Il file modificato non è tra quelli che Claude Code legge.
SoluzioneClaude Code legge ~/.claude.json e .mcp.json solo nella radice del progetto, mai ~/.claude/mcp.json, ~/.claude/.mcp.json o ~/.claude/config/mcp.json. Riavvii anche la sessione: .mcp.json viene letto all'avvio.
La shell rifiuta l'URL, oppure manca branch
zsh interpreta il ? di ?branch=v2.0 come un pattern.
SoluzioneMetta sempre l'URL tra virgolette in claude mcp add. Senza virgolette, zsh risponde "no matches found" e bash può eliminare il parametro, il che la connette alla versione sbagliata dell'API.
Avvio lento o timeout
Il server impiega più dei 30 s predefiniti all'avvio.
SoluzioneAumenti il limite per quella sessione: MCP_TIMEOUT=60000 claude. Se ha rifiutato un server di progetto alla richiesta di approvazione, claude mcp reset-project-choices ripropone la richiesta.
6000+
Aziende che innovano con Unipile
Fiducia da parte dei leader del settore
1 API
Semplificare le operazioni per tutti i principali canali di comunicazione
2 giorni
Integrazione rapida con una configurazione minima
30%
Riduzione dell'impegno e delle risorse per la manutenzione
Sicurezza e conformità integrate
Protezione di livello aziendale per i vostri dati e flussi di lavoro Per saperne di più sulla nostra sicurezza
SOC 2 Tipo II
Certificato
Controlli di sicurezza verificati in modo indipendente che garantiscono la protezione dei dati e l'integrità operativa.
GDPR
Conforme
Piena conformità alle normative europee sulla protezione dei dati per la privacy degli utenti.
99.9%
Uptime della piattaforma negli ultimi 24 mesi
24/7
Supporto globale con API ad alte prestazioni
FAQ server MCP Claude Code
Le domande che si pongono davvero: gli scope, dove vive la configurazione, come tenere le chiavi fuori dal repository, header personalizzati, Failed to connect, virgolette nell'URL, modifiche a .mcp.json e chiavi API.
Local è il valore predefinito: salvato in
~/.claude.json sotto il progetto corrente, privato e limitato a quel progetto. Project scrive .mcp.json nella radice del repository ed è condiviso tramite il controllo di versione. User scrive ~/.claude.json sotto la chiave radice mcpServers e vale per tutti i suoi progetti. La precedenza è local, poi project, poi user. Per Unipile: --scope user per la sua chiave di sviluppo personale, --scope project quando tutto il team lavora sulla stessa integrazione.In
~/.claude.json (su Windows %USERPROFILE%\.claude.json) per gli scope local e user, e in .mcp.json nella radice del progetto per lo scope project. Claude Code non legge ~/.claude/.mcp.json, ~/.claude/config/mcp.json, ~/.claude/mcp.json o %APPDATA%\Claude\mcp.json. claude mcp get unipile le indica in quale scope si trova una voce.Claude Code espande
${VAR} e ${VAR:-default} in command, args, env, url e headers. Scriva "X-API-KEY": "${UNIPILE_API_KEY}" in .mcp.json, committi il file, e ogni sviluppatore fornisce la propria chiave scoped tramite il proprio ambiente. Se la variabile non è impostata e non ha un valore predefinito, la configurazione si carica comunque e claude mcp list mostra un avviso.Sì:
--header "X-API-KEY: your-scoped-api-key", ripetibile per più header, forma breve -H. Lo metta dopo l'URL, perché il flag accetta più valori. Il server Unipile è un server HTTP remoto: niente da installare in locale, niente npx, nessuna versione di Node da gestire.Esegua
claude mcp get unipile per il dettaglio (stato HTTP e testo dell'errore), controlli gli avvisi su spazi iniziali o finali che claude mcp list stampa dopo una chiave incollata, e confermi che l'URL risponde dalla sua macchina con curl -I. Un 404 stampa MCP endpoint not found at <origin>: il percorso è sbagliato, l'URL completo è https://developer.unipile.com/mcp?branch=v2.0, parametro branch incluso.L'URL contiene un
?, che zsh legge come carattere di pattern. Metta sempre l'URL tra virgolette in claude mcp add. Senza virgolette, zsh risponde "no matches found" e bash può eliminare il parametro branch , il che la connette alla versione sbagliata del server.Claude Code legge
.mcp.json all'avvio della sessione: esca e riavvii. Una voce malformata viene ignorata in silenzio, e claude mcp list stampa l'avviso di parsing con il campo errato. Se ha rifiutato il server alla richiesta di approvazione del progetto, esegua claude mcp reset-project-choices.Il server risponde senza chiave quando l'agente si limita a leggere la specifica dell'API. Per eseguire richieste reali, crei uno Scope nella sua applicazione Development, vi assegni solo gli account interessati e generi una chiave API Account scoped per quello Scope. Non dia mai a un client MCP una chiave Service o una chiave Account globale.