Um servidor MCP que liga o Claude à sua agenda: ele consulta horários, agenda, cancela e gera links de agendamento direto na API v2 do Calendly — por conversa, sem abrir o formulário público.
Quatro etapas, todas existentes no código: o Claude interpreta, o servidor MCP traduz, a API v2 do Calendly executa e o resultado volta verificável.
"Agenda um diagnóstico com o convidado na quinta às 10h", "me dá um link de 30 minutos pra semana que vem", "cancela a reunião de amanhã". O Claude entende a intenção e escolhe a tool certa deste servidor.
O servidor descobre o tipo de evento (calendly_list_event_types), confere os horários livres (calendly_list_available_slots) e monta a requisição: converte o horário de Brasília pra UTC, normaliza o telefone pro formato +55 e preenche as perguntas do formulário (WhatsApp, empresa, observações).
Autenticado pelo seu Personal Access Token, o agendamento vai direto pela Scheduling API (POST /invitees). Links single-use nascem de POST /scheduling_links; reuniões avulsas, de POST /one_off_event_types. A janela de disponibilidade é ajustada automaticamente aos limites da API (máx. 7 dias, nunca no passado).
A reunião aparece confirmada na agenda — e calendly_get_event devolve status, link Zoom e dados do convidado. Se a API recusar o agendamento direto, o servidor devolve uma URL pré-preenchida com todos os dados: abra ou envie ao convidado e confirme em um clique. Nada se perde no caminho.
Cada card abaixo é uma tool real registrada no servidor — nomes exatos, comportamento exato.
Lista os tipos de evento ativos da conta, com URI, slug, duração, URL pública de agendamento e as perguntas do formulário de cada um.
Horários livres de um tipo de evento num intervalo de datas (máx. 7 dias por chamada), devolvidos em UTC e em horário de Brasília.
Agenda a reunião pra um convidado via Scheduling API, preenchendo nome, e-mail, WhatsApp, empresa e observações. Se a API recusar, devolve URL pré-preenchida pra confirmar em um clique.
Cancela um evento agendado pelo UUID, com o motivo registrado no Calendly.
Detalhes completos de um evento: status, horários, local (incluindo link Zoom) e convidados — com links de cancelamento e reagendamento de cada um.
Gera um link de agendamento single-use pra um tipo de evento existente: o convidado escolhe o próprio horário e o link expira após o uso. Ideal pra enviar por WhatsApp ou e-mail.
Cria uma reunião avulsa com nome, duração (15/30/60/90 min) e intervalo de datas customizados — e devolve o link single-use já com os horários disponíveis do período.
O README traz um prompt pronto: o Claude verifica os pré-requisitos, instala, registra o servidor e conduz até a parte chata — gerar o seu Personal Access Token no Calendly — navegando pelo browser por você. Você só faz o login; o token vai direto pra configuração local, nunca pro chat.
Copie o bloco do README e cole numa sessão do Claude Code.
Confere Node.js 18+, clona o repositório e instala as dependências.
O Claude abre o Calendly, você loga, e ele gera e captura o token da tela.
Registro no Claude Code + chamada real à API antes de declarar pronto.
O login é sempre seu. O Claude nunca pede senha nem código no chat: ele abre a página, espera você entrar na sua conta e só então navega pra gerar o token. O valor fica na configuração local da sua máquina.
Um arquivo, uma dependência, uma variável de ambiente — fácil de auditar, fácil de manter.
Todo o servidor mora no index.js. A única configuração é a env var CALENDLY_TOKEN, com o seu Personal Access Token.
Você fala em horário de Brasília, a API recebe UTC e a resposta volta nos dois formatos — sem reunião marcada 3 horas fora do lugar.
O identificador do usuário é extraído do próprio token, sem chamar /users/me — um escopo a menos pra conceder.
Número sem código de país ganha +55 automaticamente. Sem isso, o Calendly assume EUA e recusa a validação do formulário.