Começamos com um servidor do Discord vazio e uma pergunta: o Claude Code consegue montar um servidor inteiro do zero? Não só mandar uma mensagem. Criar todos os canais, atribuir todos os cargos, configurar o onboarding, definir permissões, fixar mensagens de boas-vindas, ligar os webhooks. O pacote completo.
A resposta exigiu construir algo que ainda não existia. Oito novas ferramentas MCP que dão ao Claude acesso direto à API REST do Discord. Sem bibliotecas wrapper, sem frameworks de bot, sem um processo de ponte à parte. Só chamadas HTTP puras à API v10 do Discord, de dentro do servidor MCP do SynaBun.
Por que não usar o Discord.js
O Discord.js foi feito para bots persistentes, que mantêm uma conexão WebSocket com o Gateway do Discord. Ele escuta eventos em tempo real, acompanha presença, cuida de sharding. É muita engrenagem para o que a gente realmente precisa, que é: criar um canal, definir as permissões dele e seguir em frente.
Toda operação de que o Claude precisa é uma requisição HTTP sem estado. Criar canal é um POST. Editar cargo é um PATCH. Apagar mensagem é um DELETE. A API REST do Discord dá conta de tudo isso sem conexão persistente. Então construímos uma camada de serviço enxuta, usando o fetch() nativo do Node 22, com autenticação por token de bot, tratamento dos limites de requisições e nova tentativa automática em respostas 429.
Zero dependências novas. A única adição ao package.json é o discord-api-types, para as definições de TypeScript.
Oito ferramentas, quarenta ações
Seguimos o mesmo padrão de despacho por ação usado no sistema de categorias do SynaBun. Em vez de registrar quarenta ferramentas individuais, o que sobrecarregaria a descoberta de ferramentas, consolidamos tudo em oito, com um parâmetro action que encaminha para o handler certo:
- discord_guild — retorna informações do servidor, lista canais, membros e cargos e lê o log de auditoria
- discord_channel — cria, edita e exclui canais e categorias e define sobrescritas de permissão
- discord_role — cria, edita e exclui cargos, os atribui a membros e os remove deles
- discord_message — envia, edita, exclui, fixa e lista mensagens, reage a elas e faz exclusão em massa
- discord_member — retorna informações do membro, expulsa, bane, aplica castigo ou muda o apelido
- discord_onboarding — configura a tela de boas-vindas, o canal de regras, o nível de verificação e as perguntas de onboarding
- discord_webhook — cria, edita, exclui, lista e executa webhooks
- discord_thread — cria, arquiva, tranca e exclui threads
Toda ferramenta aceita nomes ou IDs, tanto faz. Escreva channel: "general" em vez de decorar IDs snowflake. A camada de serviço resolve os nomes consultando as listas de canais e cargos do servidor, com cache para evitar chamadas redundantes à API. Se um nome for ambíguo, ela devolve todas as correspondências com seus IDs, para o Claude perguntar qual delas você quis dizer.
A camada de serviço
O núcleo do sistema é o services/discord.ts. Ele cuida de tudo de que as ferramentas precisam, mas com que não deveriam se preocupar:
- Limites de requisições — o Discord responde 429 com um cabeçalho
Retry-After. O serviço espera e tenta de novo automaticamente, até três vezes. - Resolução de nomes — converte nomes legíveis em IDs snowflake do Discord. Primeiro verifica se a entrada é composta só de dígitos; se for, usa o valor direto.
- Bitfields de permissão — mapeia nomes legíveis de flags, como
SEND_MESSAGES, VIEW_CHANNEL, para os bitfields bigint que o Discord realmente espera. - Guild ID padrão — usa a variável de ambiente
DISCORD_GUILD_IDpor padrão, para você não ter que passar o ID em toda chamada. - Cache em memória — TTL de 5 minutos para canais e cargos do servidor, para não bater na API a cada consulta de nome.
A aba em Ajustes
Adicionamos uma aba de configuração do Discord à Neural Interface. Ela fica em Conexões, ao lado das integrações já existentes com Claude Code e Cursor. Cinco seções cobrem tudo o que é preciso para colocar as ferramentas para rodar:
- Conexão do bot — campo de token com botão de mostrar/ocultar, guild ID e um botão de teste que valida o token na API do Discord e devolve as informações do bot e a lista de servidores
- Permissões necessárias — uma grade visual com todas as permissões de que o bot precisa, com um link de convite gerado automaticamente para você copiar
- Padrões do servidor — categoria padrão, canal de boas-vindas, canal de regras, canal de logs, cargo de moderador
- Padrões de moderação — período de exclusão de mensagens no banimento, duração padrão do castigo
- Referência das ferramentas — uma grade de consulta rápida com as oito ferramentas e o que cada uma faz
Tudo é salvo automaticamente no arquivo .env, com um debounce de 800ms. Sem botão de salvar, sem recarregar a página.
Como isso fica na prática
Com o token do bot e o guild ID configurados, o Claude consegue fazer coisas assim em uma única conversa:
Crie uma categoria "Community". Dentro dela, crie #general com o tópico "Main discussion", #introductions com modo lento de 30 segundos e #resources como somente leitura para @everyone, mas com escrita liberada para @moderator. Crie o cargo moderator na cor azul, exiba-o separadamente na lista de membros e atribua-o ao dono do servidor. Configure a tela de boas-vindas para destacar #introductions e #resources. Defina o nível de verificação como médio.
São seis chamadas de ferramenta. Cada uma é uma chamada REST direta ao Discord. Sem scripts, sem cliques em painel, sem framework de bot no meio do caminho.
O que vem a seguir
As ferramentas existem. A aba em Ajustes existe. O próximo passo é usá-las de verdade para montar um servidor real do zero em uma única sessão do Claude Code. Vamos documentar esse processo quando ele acontecer, incluindo tudo o que quebrar pelo caminho.
As ferramentas do Discord também são a base para outra coisa em que andamos pensando: deixar o Claude monitorar canais do Discord e responder neles. Isso exigiria o Gateway via WebSocket, que é uma arquitetura completamente diferente. Mas as ferramentas REST que construímos agora cobrem todas as operações de configuração e moderação que o Discord oferece, e vão continuar úteis independentemente do que a gente adicione depois.
As ferramentas MCP do Discord já vêm com o SynaBun. Se você já usa o SynaBun, atualize e adicione o token do seu bot. Se não usa, o código está no GitHub.