BR
Cursor · MCP Server

Cursor MCP Server: mensageria e e-mail na sua IDE

Uma URL e um header adicionam o Servidor MCP da Unipile ao Cursor. Seu agente 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.
Cursor · crm-app
Unipile MCP conectado
Sarah
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.
3 arquivos alterados · testado na aplicação Development
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 Cursor, o agente faz essa leitura por você e escreve o código na sua stack.
Conecte o servidor MCP da Unipile ao CursorUnipile MCP conectado
Selecione os canais que quer conectardeveloper.unipile.com/mcp
Conectar todos os canais9 canais
LinkedInLinkedIn/v2/{account_id}/chats
WhatsAppWhatsApp/v2/{account_id}/chats
InstagramInstagram/v2/{account_id}/chats
TelegramTelegram/v2/{account_id}/chats
GmailGmail/v2/{account_id}/emails
OutlookOutlook/v2/{account_id}/emails
IMAPIMAP/v2/{account_id}/emails
Google CalendarGoogle Calendar/v2/{account_id}/calendars
Outlook CalendarOutlook Calendar/v2/{account_id}/calendars
↑↓navegar espaçoselecionar ↵conectaruma URL, um header
Sem isso Abas, adivinhação, código de cola
O Cursor 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.
mcp.json, global ou por projeto

Adicione o servidor MCP da Unipile ao Cursor

O servidor é remoto: uma URL sobre streamable HTTP e um header. Sem npx, sem processo local, sem versão de Node para gerenciar. Escolha onde a entrada vai ficar, cole o bloco da documentação oficial, salve, e o Cursor carrega o servidor.
Cursor atualizado, com MCP disponível em Customize (barra lateral) ou no Cursor CLI.
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.
G
Configuração global~/.cursor/mcp.json
P
Configuração por projeto.cursor/mcp.json (raiz do repositório)
E
Chave vinda de uma variável de ambiente${env:UNIPILE_API_KEY}
?
Global ou por projeto?Global quando você constrói várias integrações Unipile em uma mesma máquina. Por projeto quando cada repositório precisa da própria chave com escopo, que é a escolha certa quando Development e Production ficam em repositórios diferentes. O Cursor lê primeiro o projeto e depois o global.
~/.cursor/mcp.json
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "headers": { "X-API-KEY": "your-scoped-api-key" } } } }
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "headers": { "X-API-KEY": "your-scoped-api-key" } } } }
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "headers": { "X-API-KEY": "${env:UNIPILE_API_KEY}" } } } }
Salve o arquivo. O Cursor carrega o servidor e o exibe em Customize. O Cursor resolve ${env:NAME} em url e headers, então a chave nunca precisa ficar no arquivo.
Opcional: instale com um clique Cole sua chave de API de conta com escopo para gerar um link de instalação que abre o Cursor com o servidor já preenchido. Tudo roda no seu navegador; a chave nunca é enviada para unipile.com. Deixe em branco e o link instala o servidor com um placeholder que você troca no Cursor.
Adicionar a Unipile ao Cursor
Verificar

Verifique a conexão

Três checagens: no editor, no CLI e depois em um chat. Nenhuma delas toca em uma conta conectada.
1Em CustomizeAbra Customize na barra lateral: o servidor unipile aparece na lista, habilitado e com o status. O toggle desativa sem remover a entrada.
2No Cursor CLIO CLI usa a mesma configuração do editor, projeto primeiro, depois global.agent mcp list # ou /mcp list dentro de uma sessão interativa
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 Cursor, 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.
Cursor · ats-appAplicação Development
Adicione mensageria do LinkedIn ao meu ATS: sincronize a caixa de entrada de cada recrutador e deixe que respondam a partir da página do candidato.
Buscar endpoints"chats messages send"3 resultados
Executar requisiçãoGET /v2/{account_id}/chats12 chats
Criei linkedin/inbox-sync.ts (chats e mensagens salvos no candidato, paginação por cursor) e POST /candidates/:id/reply, que chama a rota de envio com o ID da própria conta do chat. Rodei a sincronização na aplicação Development: 12 chats, 87 mensagens.3 arquivos alterados · testado na aplicação Development

Cole o prompt, revise o diff

O Cursor 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. WhatsApp, 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 account_id e chat_id juntos, da chamada de listagem até a de envio.
Criar uma integração LinkedIn
Cursor · crm-appAplicação Development
Implemente o Unipile Hosted Auth neste app React e Fastify para que os usuários conectem a própria conta do LinkedIn nas configurações.
Ler endpointPOST /v2/auth/linkschema carregado
Executar requisiçãoPOST /v2/auth/link201 · link
Adicionei POST /api/accounts/connect no Fastify: ele cria o link de autenticação no servidor e devolve a URL hospedada. A página de configurações em React o abre e, no retorno, guarda o novo account_id no workspace. Verificado na aplicação Development com uma conta de teste do LinkedIn.4 arquivos alterados · fluxo de conexão testado de ponta a ponta

Seus usuários conectam as próprias contas, seu app recebe um ID de conta

O Hosted Auth é a página que a Unipile serve aos seus usuários para que eles mesmos vinculem LinkedIn, WhatsApp, Gmail, Outlook ou um calendário. O agente monta a criação do link no seu backend, o redirect no seu frontend e o armazenamento do ID de conta, exigido por toda requisição posterior.
Endpoints usados pelo agente
POST/v2/auth/linkPOST/v2/auth/intentGET/v2/accounts/{account_id}
Erro comum: Criar o link de autenticação pelo navegador. O link é criado no seu servidor com a sua chave; o frontend só recebe a URL hospedada.
Implementar o Hosted Auth com um agente
Cursor · support-consoleAplicação Development
Assine os webhooks de nova mensagem e crie uma caixa de entrada unificada de LinkedIn, WhatsApp e e-mail, uma única lista de threads com o canal como badge.
Ler endpointPOST /v2/webhooks/endpoints/schema carregado
Executar requisiçãoGET /v2/{account_id}/emails200 OK
Registrei um endpoint de webhook para eventos de mensagem na aplicação Development, adicionei POST /webhooks/unipile que devolve 200 na hora e enfileira o evento, um modelo Thread que mapeia chats e threads de e-mail para um mesmo formato, e a lista de threads com badges de canal. Enviei uma mensagem de teste: a lista atualizou em menos de um segundo.6 arquivos alterados · 3 canais em uma só lista

Tempo real sem polling, uma lista para mensageria e e-mail

Chats e e-mails vêm de duas famílias de rotas, com um schema cada. O agente lê os dois contratos, desenha o modelo comum, escreve a sincronização e o receptor de webhook, e depois confere o log de entregas na rota de conversations dos webhooks.
Endpoints usados pelo agente
POST/v2/webhooks/endpoints/GET/v2/{account_id}/chatsGET/v2/{account_id}/emailsGET/v2/webhooks/conversations/
Erro comum: Fazer o trabalho dentro do handler do webhook. Confirme com um 2xx na hora e processe o evento de forma assíncrona, senão as entregas expiram e são reenviadas.
Criar uma caixa de entrada unificada com um agente
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 Cursor 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 Cursor
Escopodev-tests · 2 contas
Chavescoped Account API key
ContasConta de teste LinkedIn, caixa de e-mail Gmail de teste
Webhooks1 endpoint · eventos de mensagem
crm-app · ProductionSem alterações
Escopouma por workspace
Chavescoped keys, in your backend only
Contasas próprias contas dos seus usuários, via Hosted Auth
Solução de problemas

Erros comuns e o que eles significam

As mensagens que o Cursor mostra quando uma entrada MCP está errada e a correção de cada uma. Quase todas se resumem ao arquivo, ao JSON ou à chave.
No tools or prompts
O Cursor carregou a entrada mas não recebeu nada do servidor. CorreçãoConfira o arquivo que você editou (global ~/.cursor/mcp.json ou projeto .cursor/mcp.json na raiz do repositório), valide o JSON (uma vírgula sobrando é a causa mais comum) e depois recarregue o servidor em Customize ou reinicie o Cursor.
No server info found
A entrada existe, mas o Cursor não consegue descrever o servidor. CorreçãoA url precisa ser exatamente https://developer.unipile.com/mcp?branch=v2.0, como entrada remota com url e headers, não command. Remova qualquer type: "stdio" que tenha sobrado de outro servidor.
Connection failed
A URL responde, mas não como servidor MCP. CorreçãoUm erro de digitação no host ou em ?branch=v2.0, ou um proxy corporativo bloqueando a requisição. Abra a URL no navegador: ela precisa responder, não dar 404.
401 Unauthorized nas requisições
O servidor está conectado, mas executar uma requisição falha. CorreçãoA chave está faltando em headers, 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.
A configuração de projeto é ignorada
O Cursor continua usando a entrada global, ou nenhuma. Correção.cursor/mcp.json precisa estar na raiz da pasta que você abriu no Cursor, não em uma subpasta. O Cursor lê o projeto primeiro, depois o global e depois os diretórios pai.
Onde ler os logs
Todos os casos acima deixam rastro. CorreçãoAbra o painel Output (Cmd+Shift+U no macOS, Ctrl+Shift+U no Windows e no Linux) e selecione MCP Logs na lista: inicialização, requisições e erros aparecem ali.
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
SOC 2 Tipo II
Certificado
Controles de segurança auditados de forma independente, garantindo a proteção dos dados e a integridade operacional.
GDPR
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 Cursor

As perguntas que as pessoas realmente digitam: onde fica o mcp.json, global ou por projeto, servidores remotos e headers, o que checar quando nada aparece, chaves, instalação em um clique e o CLI.
Em dois lugares. ~/.cursor/mcp.json na sua pasta pessoal é a configuração global, disponível em todos os projetos. .cursor/mcp.json na raiz da pasta que você abriu no Cursor é a configuração do projeto. O Cursor lê primeiro o arquivo do projeto, depois o global e depois os diretórios pai. Os dois aceitam o bloco mcpServers no mesmo formato.
Globalmente quando você constrói várias integrações Unipile em uma máquina e uma aplicação Development. Por projeto quando cada repositório precisa da própria chave com escopo, que é a escolha certa quando as integrações de Development e de Production ficam em repositórios diferentes. Nos dois casos a chave é uma chave de API de conta com escopo, nunca uma chave Service ou global.
Sim. Uma entrada remota em mcp.json aceita uma url e um objeto headers e o Cursor resolve ${env:NAME} nos dois. O servidor da Unipile é exatamente isso: streamable HTTP em https://developer.unipile.com/mcp?branch=v2.0 com o X-API-KEY como header. Sem npx, sem processo local, sem versão de Node para gerenciar.
Nesta ordem: o arquivo que você editou (global ou de projeto, na raiz do repositório), a validade do JSON, um reload do servidor em Customize ou um restart do Cursor, e então os MCP Logs no painel Output (Cmd+Shift+U, selecione MCP Logs). Se o servidor conecta mas as requisições falham com 401, a chave está faltando no header ou não é uma chave de API de conta com escopo.
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 as contas de teste 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.
Sim. O link de instalação desta página codifica a configuração do servidor; ele abre o Cursor com a entrada unipile já preenchida, e você troca o placeholder pela sua chave com escopo. O gerador opcional acima monta o mesmo link já com sua chave, inteiramente no seu navegador.
Sim. O CLI usa a mesma configuração do editor, projeto primeiro, depois global. agent mcp list mostra os servidores configurados e o status de cada um, e /mcp list faz o mesmo dentro de uma sessão interativa. O agente então usa o servidor da Unipile quando uma solicitação exige.