Telephony MCP Server
Faça chamadas de voz e envie mensagens SMS usando a API Vonage.
Documentação
📖 Post no Blog: Saiba mais sobre este projeto no post detalhado: Telephony MCP Server for Agentic AI and Language Models
Telephony MCP Server
Demonstração Usando Claude Desktop
Conversa Telefônica Agentic com Reconhecimento de Fala
Use SMS durante a conversa
Consulta por SMS (Enviar e Receber)
Demonstração Usando GitHub Copilot
Introdução
Este diretório contém ferramentas de servidor MCP (Model Context Protocol) para operações de telefonia, como fazer chamadas de voz e enviar mensagens SMS usando a API Vonage. Essas ferramentas são projetadas para serem integradas a aplicações de Large Language Model (LLM), permitindo que LLMs realizem ações no mundo real além da simples geração de texto.
LLMs e Integração de Ferramentas
LLMs (Large Language Models) são geradores avançados de tokens—eles podem gerar texto, imagens ou até vídeo com base em prompts de entrada. No entanto, sua capacidade principal é limitada à geração de conteúdo; eles não podem acessar dados externos ou realizar ações no mundo real por conta própria.
Para estender sua funcionalidade, LLMs podem ser conectados a ferramentas externas. Por exemplo, quando um usuário pergunta: "Como está o tempo hoje?" o LLM pode invocar uma ferramenta de API de backend como get_weather(city) por meio de um prompt de sistema, analisar a resposta e retornar o resultado ao usuário. Esse mecanismo de chamada de ferramentas transforma um LLM básico em uma poderosa Aplicação LLM.
Chamada de Ferramentas com MCP e LangChain
- LangChain é um framework popular para desenvolver aplicações alimentadas por LLMs. Ele fornece uma coleção de ferramentas pré-construídas (chamada de Toolkit) que LLMs podem usar para interagir com sistemas externos.
- MCP (Model Context Protocol) segue o mesmo conceito: oferece uma coleção de ferramentas pré-construídas e um framework para escrever novas ferramentas e lidar com chamadas de função.
- Ambos os frameworks permitem que LLMs invoquem ferramentas, analisem suas saídas e integrem os resultados em suas respostas.
Como Isso Funciona
- Definição de Ferramentas: Neste projeto, ferramentas como
voice_callesend_smssão definidas usando o framework MCP. Cada ferramenta é uma função que pode ser chamada por uma aplicação LLM. - Aplicação LLM: Quando integrado a um LLM (como GPT da OpenAI, Claude da Anthropic, etc.), o LLM pode decidir chamar essas ferramentas com base nos prompts do usuário.
- Fluxo de Execução:
- O LLM recebe um prompt (ex.: "Ligue para Alice e diga olá").
- O LLM determina que uma invocação de ferramenta é necessária e chama a ferramenta MCP apropriada (ex.:
voice_call). - A ferramenta executa (ex.: inicia uma chamada telefônica via Vonage) e retorna o resultado.
- O LLM analisa a resposta e a apresenta ao usuário.
Executando as Ferramentas MCP
Pré-requisitos
- Python 3.13+
- MCP CLI (
mcp[cli]), FastAPI, httpx, pyjwt, python-dotenv, uvicorn, pydantic (vejapyproject.tomlpara detalhes) - Credenciais da API Vonage (chave de API, segredo, ID do aplicativo, chave privada)
- URL pública para o servidor de callback (para uso em produção)
Configuração
-
Instale as dependências:
pip install -r requirements.txtOu, se estiver usando Poetry:
poetry install -
Configure as variáveis de ambiente:
-
Crie um arquivo
.envcom suas credenciais Vonage:VONAGE_API_KEY=your_api_key VONAGE_API_SECRET=your_api_secret VONAGE_APPLICATION_ID=your_app_id VONAGE_PRIVATE_KEY_PATH=path/to/private.key VONAGE_LVN=your_virtual_number VONAGE_API_URL=https://api.nexmo.com/v1/calls VONAGE_SMS_URL=https://rest.nexmo.com/sms/json CALLBACK_SERVER_URL=https://your-public-url # URL for Vonage event callbacksPara o
CALLBACK_SERVER_URL:- Em desenvolvimento: Você pode usar
http://localhost:8080(padrão se não especificado) - Em produção: Use uma URL pública (como uma URL ngrok ou seu servidor implantado)
- Em desenvolvimento: Você pode usar
-
-
Execute o servidor MCP:
python telephony_server.pyO servidor iniciará e exporá as ferramentas definidas para aplicações LLM.
Executando com Docker
Você também pode executar o servidor MCP de telefonia usando Docker:
-
Construa e inicie o contêiner Docker:
docker compose up --buildOu para executar em segundo plano:
docker compose up --build -d -
Pare o contêiner Docker:
docker compose down -
Veja os logs do contêiner Docker:
docker compose logs -f
Usando com Aplicações LLM
- Integração Direta: Conecte sua aplicação LLM (ex.: usando LangChain via Adapter ou um cliente MCP personalizado) ao servidor MCP em execução. O LLM agora pode invocar ferramentas de telefonia conforme necessário.
- Exemplo: Quando o LLM recebe um prompt como "Disque este número +123 e leia as últimas notícias de hoje", ele chamará a ferramenta
voice_call, passando os parâmetros necessários. - Exemplo: Quando o LLM recebe um prompt como "Ligue para este número usando um sotaque britânico", ele chamará a ferramenta
voice_callcom parâmetros específicos de idioma e estilo. - Exemplo: Quando o LLM recebe um prompt como "Envie as notícias por texto", ele chamará a ferramenta
send_sms, passando os parâmetros necessários.
Usando com Claude Desktop ou outros clientes MCP
Para configurar um cliente MCP (como Claude Desktop) para usar seu servidor MCP de telefonia:
-
Atualize seu arquivo de configuração do cliente MCP (ex.:
claude_desktop_config.json):{ "mcpServers": { "telephony": { "command": "docker", "args": ["run", "-i", "--rm", "--init", "-e", "DOCKER_CONTAINER=true", "telephony-mcp-server"] } } } -
Construa a imagem Docker (se não estiver usando docker compose):
docker build -t telephony-mcp-server . -
Reinicie seu cliente MCP para aplicar as alterações.
Conceitos-Chave
- LLMs são geradores de conteúdo: Eles geram texto, imagens ou vídeo, mas precisam de ferramentas externas para ações como busca na web, telefonia ou acesso a banco de dados.
- Chamada de ferramentas: LLMs podem invocar APIs de backend (ferramentas) para buscar dados ou realizar ações, depois analisar e apresentar os resultados.
- Frameworks: Tanto LangChain quanto MCP fornecem uma estrutura para definir, registrar e invocar ferramentas a partir de LLMs.
- MCP: Ajuda você a escrever novas ferramentas e gerenciar chamadas de função, facilitando a extensão de aplicações LLM com capacidades personalizadas.
Servidor de Callback para Eventos Vonage
O Telephony MCP Server também inclui um Servidor de Callback Vonage que escuta na porta 8080. Este servidor é usado para receber notificações de eventos da API de Voz Vonage, que são enviadas quando chamadas de voz são iniciadas, concluídas ou encontram erros.
Recursos
- Recebe e armazena callbacks de eventos Vonage
- Fornece endpoints para visualizar e gerenciar eventos armazenados
- Executa como um serviço separado dentro da mesma aplicação
Endpoints
GET /- Endpoint de verificação de saúdePOST /event- Endpoint principal para receber callbacks VonageGET /events- Listar todos os eventos armazenados (com paginação)GET /events/{event_id}- Obter um evento específico por IDDELETE /events- Limpar todos os eventos armazenados
Configuração
Para usar o servidor de callback com a API de Voz Vonage, você precisa definir a variável de ambiente CALLBACK_SERVER_URL para a URL pública do seu servidor. Esta URL será usada como o parâmetro event_url nas chamadas da API Vonage.
export CALLBACK_SERVER_URL="https://your-public-url"
Para desenvolvimento local, você pode usar um serviço como ngrok para expor seu servidor local à internet:
ngrok http 8080
Em seguida, defina o CALLBACK_SERVER_URL para a URL do ngrok.