Saltar para o conteúdo

O que é um servidor MCP e como se relaciona com a telefonia

September 2, 2026 · 7 min de leitura

Um servidor MCP é uma interface que permite a um editor de IA ou a um assistente (Claude Code, Cursor, Windsurf e outros) aceder, em tempo de execução, a uma ferramenta de um serviço externo e utilizá-la diretamente - e não apenas falar sobre ela. O Model Context Protocol (MCP) é um padrão aberto através do qual o editor pede a lista de ferramentas disponíveis, escolhe a adequada ao prompt e chama-a com parâmetros reais; o servidor do outro lado executa a ferramenta e devolve o resultado à conversa. Na volai, uma dessas ferramentas é a make_call - por isso um editor de IA consegue, literalmente, pegar no telefone e ligar a alguém sem que o senhor escreva uma única linha de código.

O que é um servidor MCP?

O Model Context Protocol foi apresentado em novembro de 2024 pela Anthropic como padrão aberto para ligar modelos de IA a ferramentas e dados externos - em vez de cada editor e cada serviço inventarem a sua própria ligação à medida, todos falam um protocolo comum. O MCP distingue dois lados: cliente MCP é a aplicação que tem aberta (Claude Code, Cursor, Claude Desktop) e servidor MCP é a interface que um serviço (neste caso a volai) expõe para o exterior - com uma lista de ferramentas que pode ser chamado a executar.

O servidor MCP da volai funciona em https://volai.cz/mcp (é um servidor remoto, acedido através do chamado transporte HTTP streamable, e não um processo no seu disco) e expõe 110 ferramentas (a 3 de novembro de 2026; a lista atual está sempre em /docs/mcp) - desde consultar o saldo e comprar um número até enviar uma SMS e, justamente, fazer uma chamada.

Como é que um cliente MCP chama uma ferramenta?

Entre a instalação e uma chamada real passam alguns passos que o editor executa sozinho - o senhor escreve apenas o prompt:

  1. O editor liga-se ao servidor e autentica-se com uma chave de API (Authorization: Bearer vk_...) - a mesma chave da API REST e com o mesmo limite de pedidos, 60 por minuto.
  2. O servidor envia-lhe a lista de ferramentas - nome, descrição legível e a forma exata dos parâmetros (esquema JSON) de cada uma.
  3. O modelo escolhe, com base na descrição, a que serve o prompt - por exemplo make_call, quando o prompt diz "ligue".
  4. O editor chama a ferramenta com parâmetros reais - um número de telefone e instruções para o agente, não um texto genérico.
  5. O servidor, do nosso lado, executa a ferramenta - cria a chamada, debita saldo - e devolve o resultado duas vezes: como uma frase legível e, em simultâneo, como dados estruturados (structuredContent), para que um cliente que o suporte os aproveite diretamente.
  6. O modelo recebe o resultado na conversa e diz-lhe o que aconteceu - ou prossegue com outra ferramenta, por exemplo get_call, para aguardar o fim da chamada e trazer a transcrição.

Exemplo: make_call na prática

Diz ao editor, em linguagem normal, o que pretende - por exemplo: "Ligue para +420777123456, apresente-se como rececionista do café Kavka e descubra se o cliente quer reservar mesa." O editor transforma isso numa chamada à ferramenta make_call - esta parte não a vê diretamente, mas, por baixo, é assim:

json
{
  "to": "+420777123456",
  "systemPrompt": "É o rececionista do café Kavka. Atenda a chamada, apresente-se e descubra se quem liga quer reservar mesa - se sim, pergunte o nome e a hora."
}

A ferramenta exige um destino (to) e exatamente UMA de três formas de conduzir a chamada - agentId (o seu agente conduz-a), from (uma simples ligação entre dois números, sem agente) ou systemPrompt (uma chamada de teste sem número próprio - um pedido, nada para comprar nem configurar antes). O servidor responde logo também de forma estruturada (é um excerto - a forma completa do objeto da chamada está na referência da API REST):

json
{
  "call": {
    "id": "c_7a2f91de",
    "direction": "out",
    "to": "+420777123456",
    "status": "initiated",
    "startedAt": 1756111400000
  },
  "trial": true,
  "from": "+420..."
}

A chamada sai de um número de demonstração partilhado da volai, segue as instruções de systemPrompt e é cobrada normalmente, incluindo o acréscimo do agente, mas com um limite diário mais estrito do que o de um agente próprio - no máximo três chamadas de teste sem número próprio, por conta e por dia (o limite está descrito na referência da API REST, situação a 6 de setembro de 2026). É por isso que a resposta traz também trial: true e from com o número de demonstração partilhado da volai, para ficar claro que a chamada não saiu do seu número.

Como se relaciona o MCP com a telefonia?

O servidor MCP, por si só, não atende telefone nenhum - é apenas a porta de entrada pela qual o seu prompt chega à lógica de serviço real. Por trás dela, a make_call chama a mesma camada que a API REST e o portal, que coloca a chamada na rede telefónica e, daí em diante, tudo decorre como em qualquer outra chamada efetuada pela volai - através de um SIP trunk, que liga a sinalização pela internet à rede telefónica real (como, exatamente, explica o artigo O que é um SIP trunk). O MCP é a língua que o editor de IA fala, o SIP trunk é a língua que a rede telefónica fala - e entre os dois está a lógica de serviço que os liga.

Segurança

O MCP autoriza-se com a mesma chave de API da API REST - quem a tiver pode gastar o seu saldo em seu nome: comprar números, fazer chamadas, enviar SMS, criar agentes. Por isso, a chave pertence apenas à configuração do editor, nunca ao código de frontend nem a um repositório no GitHub. Em caso de suspeita de fuga, basta um botão no portal (API e MCP) - a eliminação da chave tem efeito imediato e não pode ser revertida.

Uma segunda camada de proteção funciona no servidor, não no prompt. Um número adicionado à lista de não ligar (a ferramenta add_to_dnc) bloqueia as chamadas feitas por make_call e pelo relay, independentemente do que esteja escrito no prompt - o modelo de IA não tem de se lembrar sozinho a quem não pode ligar, o limite é imposto pelo servidor. Do mesmo modo, as ferramentas que custam dinheiro ou alteram algo de forma irreversível (make_call, send_sms, delete_agent...) trazem no protocolo os seus próprios indicadores - o servidor diz de antemão se a ação é irreversível ou se pode ser repetida em segurança. As ações pagas NÃO são idempotentes de propósito: chamar make_call uma segunda vez após uma falha de ligação faz uma segunda chamada e cobra um segundo pagamento, pelo que um bom cliente não a repete por si só após um timeout.

E há uma coisa que falta de propósito: libertar um número de telefone ou um número de telemóvel adquirido não consta das 110 ferramentas. Comprar um número através do MCP é possível, cancelá-lo não - para uma ação irreversível, que pode privar um cliente do número impresso no seu folheto, é preciso o portal ou a API REST, e não uma frase mal interpretada num prompt.

Como experimentar

A instalação no Claude Code é um único comando no terminal (o Cursor, o Windsurf e o Claude Desktop têm algumas linhas de JSON próprias, ver /docs/mcp):

bash
claude mcp add --transport http volai https://volai.cz/mcp \
  --header "Authorization: Bearer vk_A_SUA_CHAVE"
PretendeOnde ir a seguir
A lista completa de ferramentas e a instalação noutros editoresServidor MCP
Os mesmos dados através de pedidos HTTP simples, a partir do seu próprio backendAPI REST

E para onde vai realmente a chamada?

A make_call acaba por enviar o áudio para a rede telefónica real através de um SIP trunk - o que é e por que razão um agente de voz com IA precisa dele explica o artigo O que é um SIP trunk.

Experimente a volai - os primeiros 50 kr são nossos

Registe-se em um minuto e a sua conta já tem saldo inicial para chamadas e um número - os SMS funcionam depois do primeiro carregamento.

Experimentar gratuitamente