Claude Code · MCP Server
Claude Code MCP Server: mensageria e e-mail no seu app
Um único comando claude mcp add conecta o Servidor MCP da Unipile. O Claude Code então cria recursos de LinkedIn, WhatsApp e e-mail no seu projeto.
Teste grátis de 7 dias, sem cartão de crédito.
Claude Code · crm-app
Unipile MCP conectado
Adicione a conexão de contas do LinkedIn ao meu CRM.
Ler endpointPOST /v2/auth/linkschema carregado
Adicionei a rota de conexão e o botão em Configurações. O ID da conta fica salvo no usuário.
Descreva o próximo recurso…
O objetivo
O que você quer construir
Adicionar uma conexão de LinkedIn, WhatsApp, e-mail ou calendário ao seu produto. Isso significa ler uma referência de API, escolher os endpoints certos, montar o Hosted Auth e seus callbacks e depois guardar os IDs certos da busca até a mensagem. Com o servidor MCP da Unipile no Claude Code, o agente faz essa leitura por você e escreve o código na sua stack, pelo terminal ou pela extensão da IDE.
Conecte o servidor MCP da Unipile ao Claude CodeUnipile MCP conectado
Selecione os canais que quer conectar
developer.unipile.com/mcpConectar todos os canais9 canais
↑↓navegar espaçoselecionar ↵conectaruma URL, um header
Sem isso
Abas, adivinhação, código de cola
O Claude Code adivinha nomes de endpoints e payloads a partir dos dados de treino, e erra os IDs.
Você cola schemas da referência no chat, um endpoint de cada vez.
A primeira chamada real acontece em produção, depois do code review.
Com o servidor MCP da Unipile
O resultado na sua aplicação
Uma rota de conexão e um botão nas configurações: cada usuário vincula a própria conta pelo Hosted Auth.
Um receptor de webhook e uma caixa de entrada que mostra mensagens e e-mails conforme eles chegam.
Cada requisição já executada uma vez na sua aplicação Development antes de você revisar o diff.
claude mcp add, três scopes
Adicione o servidor MCP da Unipile ao Claude Code
O servidor é remoto: uma URL sobre streamable HTTP e um header. Sem npx, sem processo local. Um comando faz o registro; o scope escolhido define onde ele carrega e se o seu time também recebe. Comando e JSON verificados na documentação oficial do Claude Code.
Claude Code instalado (CLI ou extensão da IDE), com login feito e executado a partir da pasta do projeto.
Uma aplicação Development no dashboard da Unipile, com um Scope e uma chave de API de conta com escopo.
Pelo menos uma conta de teste conectada a esse Scope via Hosted Auth, para que o agente possa executar requisições reais.
Scope user--scope user · todos os projetos, privado para você
Scope project.mcp.json na raiz do repositório, compartilhado
Scope local (padrão)só este projeto, privado, em ~/.claude.json
?
Qual scope escolher?User quando você constrói várias integrações Unipile em uma mesma máquina. Project quando o time inteiro deve receber o servidor pelo repositório, com a chave de cada dev em uma variável de ambiente. Local para um teste pontual. Quando um nome existe em vários scopes, local vence project, que vence user.
# Scope user: todos os projetos desta máquina, privado para você
claude mcp add --transport http --scope user \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
# O Claude Code imprime "Added …", depois: claude mcp list
// Scope project: versionado na raiz do repositório, compartilhado com o time
{
"mcpServers": {
"unipile": {
"type": "http",
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "${UNIPILE_API_KEY}"
}
}
}
}
// "type": "http" é obrigatório; cada dev exporta UNIPILE_API_KEY
# Scope local (padrão): só este projeto, privado, salvo em ~/.claude.json
claude mcp add --transport http \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
Verificado no Claude Code 2.1: "Added …" e depois ✔ Connected em claude mcp list. Mantenha a URL entre aspas (o zsh trata o ? como padrão) e coloque --header depois da URL, já que ele aceita vários valores.
claude mcp addRegistra um servidor no scope escolhido e imprime "Added …" assim que grava.--transport httpO servidor da Unipile é um servidor HTTP remoto e streamable. Sem command, sem npx, sem processo local.--scope userTodos os projetos desta máquina, privado para você. Omita para local (só este projeto), ou use --scope project para gravar o .mcp.json.unipileO nome que você vai ver em claude mcp list, claude mcp get e /mcp."https://developer.unipile.com/mcp?branch=v2.0"A URL única do servidor, entre aspas. O parâmetro ?branch=v2.0 seleciona a API v2.--header "X-API-KEY: …"Sua chave de API de conta com escopo. Fica por último porque a flag aceita vários headers.Verificar
Verifique a conexão
Três checagens: no terminal, dentro de uma sessão e depois em um chat. Nenhuma delas toca em uma conta conectada.
1No terminalA lista mostra um status de saúde ao lado de cada servidor: ✔ Connected é o que você quer; ✘ Failed to connect aponta para a URL, ! Needs authentication para o header e ⏸ Pending approval para um servidor de projeto ainda não aprovado.claude mcp list
claude mcp get unipile
2Dentro de uma sessãoDigite o slash command no Claude Code para ver o status do servidor e, no caso de um .mcp.json com scope project, aprová-lo na primeira vez que abrir a pasta./mcp
3Em um chat, sem tocar em nenhuma contaPergunte algo que só exija a leitura da especificação da API. Se o agente responder com rotas e parâmetros reais, o servidor está conectado.Usando o Unipile MCP, liste os endpoints de busca de pessoas no LinkedIn e os parâmetros obrigatórios de cada um.
Prompts, não código de cola
Entregue o prompt ao seu agente
Três tarefas de integração, cada uma com o prompt exato para colar no Claude Code, os endpoints Unipile que o agente lê e executa e o que chega ao seu projeto. Os paths estão completos, sobre a URL base da API
https://api.unipile.com, com sua chave com escopo no X-API-KEY como header.Adicione mensageria do WhatsApp ao nosso console de suporte: sincronize as conversas de cada atendente e deixe que respondam a partir do ticket.
Buscar endpoints"chats messages send"3 resultados
Executar requisiçãoGET /v2/{account_id}/chats9 chats
Criei
whatsapp/chat-sync.ts (chats e mensagens salvos no ticket, paginação por cursor) e POST /tickets/:id/reply que chama a rota de envio pela própria conta do chat. Rodei a sincronização na aplicação Development: 9 chats, 41 mensagens.Uma caixa de entrada do WhatsApp dentro do seu produto, a partir de um prompt
O Claude Code lê os contratos de chat e de mensagem pelo servidor, escreve o job de sincronização e o endpoint de resposta na sua stack, e executa as primeiras requisições na sua aplicação Development. LinkedIn, Instagram e Telegram usam as mesmas rotas de chat, então o segundo canal exige um prompt menor que o primeiro.
Endpoints usados pelo agente
GET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Erro comum: Misturar os IDs. Uma mensagem sempre sai pela conta dona do chat; mantenha
API do WhatsApp
account_id e chat_id juntos, da chamada de listagem até a de envio.Permita que os usuários enviem e-mails da página do contato pela própria caixa Gmail ou Outlook, e encadeie as respostas no contato.
Ler endpointPOST /v2/{account_id}/emails/sendschema carregado
Executar requisiçãoGET /v2/{account_id}/emails200 OK
Adicionei
POST /contacts/:id/email que chama a rota de envio pela conta de e-mail do usuário, a opção de responder na thread usando o ID da thread, e a sincronização de entrada que anexa as respostas ao contato. Enviei um e-mail de teste da caixa da aplicação Development e vi a resposta encadeada.E-mail pela própria caixa do usuário, encadeado no seu CRM
Gmail, Outlook e IMAP compartilham um único schema de e-mail. O agente lê os contratos de envio e de listagem, liga a ação de envio à caixa que o usuário conectou pelo Hosted Auth e guarda o ID da thread para que as respostas caiam no contato certo.
Endpoints usados pelo agente
POST/v2/{account_id}/emails/sendGET/v2/{account_id}/emailsGET/v2/{account_id}/threads/{thread_id}
Erro comum: Enviar de uma caixa técnica compartilhada. Cada e-mail sai da conta do usuário que a conectou, então a resposta chega à caixa dele.
API de e-mail
Cada workspace do meu SaaS tem vários usuários com contas próprias de LinkedIn e de e-mail. Isole tudo: um Scope e uma chave com escopo por workspace.
Buscar endpoints"scopes api-keys"4 resultados
Executar requisiçãoPOST /v2/scopes/201 · scope
Na criação de um workspace o backend agora cria um Scope, uma chave de API de conta com escopo guardada criptografada no workspace, e toda conta que um membro conecta é associada a esse Scope. Todas as chamadas de conta usam a chave do workspace. Testado com dois workspaces na aplicação Development.
Muitos usuários, muitas contas, uma fronteira por tenant
Os Scopes são a fronteira de acesso da API da Unipile: uma chave com escopo só enxerga as contas associadas ao seu Scope. O agente transforma isso no seu modelo de tenant, de modo que a lógica multiconta vive na API, e não no seu código.
Endpoints usados pelo agente
POST/v2/scopes/POST/v2/api-keys/GET/v2/accounts/
Erro comum: Usar uma única chave de conta global para todos os tenants. A chave global fica no seu backend, para administração; cada tenant recebe a própria chave com escopo.
Contas, Scopes e chaves
Do Development para a Production
Teste primeiro em uma aplicação Development
O dashboard da Unipile separa uma aplicação Development de uma de Production. Dê ao Claude Code uma chave com escopo da aplicação Development, com uma ou duas contas de teste conectadas via Hosted Auth. O agente executa requisições reais nessas contas, em nome do usuário autenticado que as vinculou, dentro dos limites de cada provedor, e nada toca as contas dos seus usuários até você publicar.
Valide o fluxo de conexão de ponta a ponta: link de autenticação criado no servidor, ID de conta guardado no usuário.
Valide uma leitura e uma escrita por recurso: listar chats, enviar uma mensagem na conta de teste.
Valide uma entrega de webhook e um estado de reconexão ou checkpoint antes de trocar a chave para a Production.
crm-app · DevelopmentUsada pelo Claude Code
Escopodev-tests · 2 contas
Chave
scoped Account API keyContasConta de teste LinkedIn, caixa de e-mail Gmail de teste
Webhooks1 endpoint · eventos de mensagem
crm-app · ProductionSem alterações
Escopouma por workspace
Chave
scoped keys, in your backend onlyContasas próprias contas dos seus usuários, via Hosted Auth
Solução de problemas
Erros comuns e o que eles significam
Os status e avisos que o Claude Code mostra quando uma entrada MCP está errada, como aparecem em claude mcp list e /mcp, e a correção de cada um.
✘ Failed to connect
O claude mcp list exibe o servidor, mas a verificação de saúde falha.
CorreçãoA url precisa ser exatamente https://developer.unipile.com/mcp?branch=v2.0 com --transport http. O Claude Code repete um erro transitório três vezes, mas nunca um not found ou um erro de autenticação: corrija a URL ou o header e execute claude mcp get unipile.
⏸ Pending approval
Um servidor de scope project vindo do .mcp.json aparece na lista, mas não conecta.
CorreçãoExecute claude na pasta, aceite a caixa de diálogo de confiança do workspace e depois aprove o servidor em /mcp. Um repositório clonado não pode aprovar os próprios servidores a partir de configurações versionadas.
401 nas requisições
O servidor está conectado, mas executar uma requisição falha.
CorreçãoA chave está faltando no header, o nome do header não é X-API-KEY, ou você usou uma chave Service ou uma chave de conta global em vez de uma chave de API de conta com escopo da sua aplicação Development.
Aviso de variável ausente
O claude mcp list avisa que ${UNIPILE_API_KEY} não está definida.
CorreçãoExporte a variável no shell que inicia o Claude Code, ou defina um padrão com a sintaxe ${UNIPILE_API_KEY:-} na configuração. Variáveis não definidas em url ou headers podem ser lidas como vazias, o que termina em 401.
Espaços invisíveis em headers.X-API-KEY
Um token colado com uma quebra de linha no final.
CorreçãoO Claude Code indica o campo em claude mcp list e /mcp sem exibir o valor. Adicione o servidor de novo com a chave sem espaços; o Claude Code usa os valores exatamente como estão escritos.
Mesmo nome em mais de um scope
unipile existe nos scopes user e project com configurações diferentes.
CorreçãoO Claude Code conecta uma vez só, usando a definição de maior precedência (local, depois project, depois user) e avisa sobre o conflito. Remova a duplicata com claude mcp remove unipile --scope user ou mantenha um scope por máquina.
MCP endpoint not found at
Um 404 na URL: o path está errado.
CorreçãoA URL completa é https://developer.unipile.com/mcp?branch=v2.0, com o parâmetro branch incluído. Verifique com curl -I a partir da sua máquina e depois claude mcp get unipile.
/mcp mostra No MCP servers configured
O arquivo que você editou não é um dos que o Claude Code lê.
CorreçãoO Claude Code lê ~/.claude.json e .mcp.json apenas na raiz do projeto, nunca ~/.claude/mcp.json, ~/.claude/.mcp.json ou ~/.claude/config/mcp.json. Reinicie também a sessão: .mcp.json é lido na inicialização.
O shell rejeita a URL, ou o branch some
O zsh trata o ? de ?branch=v2.0 como um padrão.
CorreçãoSempre coloque a URL entre aspas em claude mcp add. Sem aspas, o zsh responde "no matches found" e o bash pode descartar o parâmetro, o que conecta você à versão errada da API.
Início lento ou timeout
O servidor demora mais que os 30 s padrão na inicialização.
CorreçãoAumente o limite para aquela sessão: MCP_TIMEOUT=60000 claude. Se você recusou um servidor de projeto na pergunta de aprovação, claude mcp reset-project-choices traz a pergunta de volta.
6000+
Empresas que inovam com a Unipile
Com a confiança dos líderes do setor
1 API
Simplificar as operações de todos os principais canais de comunicação
2 dias
Obtenha integração ao vivo rapidamente com o mínimo de configuração
30%
Redução dos esforços e recursos de manutenção
Segurança e conformidade incorporadas
Proteção de nível empresarial para seus dados e fluxos de trabalho Saiba mais sobre nossa segurança
SOC 2 Tipo II
Certificado
Controles de segurança auditados de forma independente, garantindo a proteção dos dados e a integridade operacional.
GDPR
Em conformidade
Conformidade total com os regulamentos europeus de proteção de dados para a privacidade do usuário.
99.9%
Tempo de atividade da plataforma nos últimos 24 meses
24/7
Suporte global com API de alto desempenho
FAQ do servidor MCP no Claude Code
As perguntas que as pessoas realmente digitam: scopes, onde fica a configuração, chaves fora do repositório, headers personalizados, Failed to connect, aspas na URL, mudanças no .mcp.json e chaves de API.
Local é o padrão: guardado em
~/.claude.json sob o projeto atual, privado e limitado a esse projeto. Project grava .mcp.json na raiz do repositório e é compartilhado pelo controle de versão. User grava ~/.claude.json sob a chave raiz mcpServers e vale para todos os seus projetos. A precedência é local, depois project, depois user. Para a Unipile: --scope user para sua chave pessoal de desenvolvimento, --scope project quando o time inteiro trabalha na mesma integração.Em
~/.claude.json (no Windows %USERPROFILE%\.claude.json) para os scopes local e user, e em .mcp.json na raiz do projeto para o scope project. O Claude Code não lê ~/.claude/.mcp.json, ~/.claude/config/mcp.json, ~/.claude/mcp.json ou %APPDATA%\Claude\mcp.json. claude mcp get unipile informa em qual scope uma entrada está.O Claude Code expande
${VAR} e ${VAR:-default} em command, args, env, url e headers. Escreva "X-API-KEY": "${UNIPILE_API_KEY}" em .mcp.json, versione o arquivo, e cada dev fornece a própria chave com escopo pelo ambiente. Se a variável não estiver definida e não houver padrão, a configuração ainda carrega e claude mcp list mostra um aviso.Sim:
--header "X-API-KEY: your-scoped-api-key", repetível para vários headers, na forma curta -H. Coloque depois da URL, porque a flag aceita vários valores. O servidor da Unipile é um servidor HTTP remoto: nada para instalar localmente, sem npx, sem Node para gerenciar.Execute
claude mcp get unipile para ver o detalhe (status HTTP e texto do erro), confira os avisos de espaço no começo ou no fim que o claude mcp list imprime depois de uma chave colada, e confirme que a URL responde da sua máquina com curl -I. Um 404 imprime MCP endpoint not found at <origin>: o path está errado, a URL completa é https://developer.unipile.com/mcp?branch=v2.0, com o parâmetro branch incluído.A URL contém um
?, que o zsh lê como caractere de padrão. Sempre coloque a URL entre aspas em claude mcp add. Sem aspas, o zsh responde "no matches found" e o bash pode descartar o parâmetro branch da URL, o que conecta você à versão errada do servidor.O Claude Code lê
.mcp.json no início da sessão: saia e reabra. Uma entrada malformada é ignorada em silêncio, e claude mcp list imprime o aviso de parsing com o campo defeituoso. Se você recusou o servidor na pergunta de aprovação do projeto, execute claude mcp reset-project-choices.O servidor responde sem chave quando o agente só lê a especificação da API. Para executar requisições reais, crie um Scope na sua aplicação Development, associe apenas as contas envolvidas e gere uma chave de API de conta com escopo para esse Scope. Nunca dê a um cliente MCP uma chave Service ou uma chave de conta global.