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
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 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 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 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.
Configuração global~/.cursor/mcp.json
Configuração por projeto.cursor/mcp.json (raiz do repositório)
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.
{
"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.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.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
Criar uma integração LinkedIn
account_id e chat_id juntos, da chamada de listagem até a de envio.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.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
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.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
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
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
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 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.