Empezamos con un servidor de Discord vacío y una pregunta: ¿puede Claude Code configurar un servidor entero desde cero? No solo enviar un mensaje. Crear cada canal, asignar cada rol, configurar la incorporación, definir los permisos, fijar los mensajes de bienvenida, conectar los webhooks. Todo completo.

Para responderla hubo que construir algo que todavía no existía. Ocho herramientas MCP nuevas que le dan a Claude acceso directo a la API REST de Discord. Sin bibliotecas wrapper, sin frameworks de bots, sin un proceso puente aparte. Solo llamadas HTTP directas a la API v10 de Discord desde el propio servidor MCP de SynaBun.

¿Por qué no usar Discord.js y listo?

Discord.js está pensado para bots persistentes que mantienen una conexión WebSocket con el Gateway de Discord. Escucha eventos en tiempo real, hace seguimiento de la presencia, se encarga del sharding. Es demasiada maquinaria para lo que de verdad necesitamos: crear un canal, definir sus permisos y seguir adelante.

Cada operación que Claude necesita es una petición HTTP sin estado. Crear un canal es un POST. Editar un rol es un PATCH. Borrar un mensaje es un DELETE. La API REST de Discord resuelve todo esto sin una conexión persistente. Así que construimos una capa de servicio ligera con el fetch() nativo de Node 22, autenticación con token de bot, manejo de límites de frecuencia y reintento automático ante las respuestas 429.

Cero dependencias nuevas. Lo único que se suma a package.json es discord-api-types, para las definiciones de TypeScript.

Ocho herramientas, cuarenta acciones

Seguimos el mismo patrón de despacho por acción que usa el sistema de categorías de SynaBun. En lugar de registrar cuarenta herramientas individuales, lo que saturaría el descubrimiento de herramientas, las consolidamos en ocho con un parámetro action que dirige cada llamada al manejador correcto:

  • discord_guild — información del servidor, lista de canales, miembros, roles, registro de auditoría
  • discord_channel — crear, editar y borrar canales y categorías, definir permisos específicos por canal
  • discord_role — crear, editar y borrar roles, asignarlos y quitarlos a los miembros
  • discord_message — enviar, editar, borrar, fijar, reaccionar, borrar en bloque, listar mensajes
  • discord_member — información del miembro, expulsión, baneo, aislamiento temporal, apodo
  • discord_onboarding — pantalla de bienvenida, canal de reglas, nivel de verificación, preguntas de incorporación
  • discord_webhook — crear, editar, borrar, listar y ejecutar webhooks
  • discord_thread — crear, archivar, bloquear y borrar hilos

Todas las herramientas aceptan nombres o IDs indistintamente. Escribe channel: "general" en lugar de memorizar IDs snowflake. La capa de servicio resuelve los nombres contra las listas de canales y roles del servidor, con caché para evitar llamadas redundantes a la API. Si un nombre es ambiguo, devuelve todas las coincidencias con sus IDs para que Claude pueda preguntarte a cuál te referías.

La capa de servicio

El núcleo del sistema es services/discord.ts. Se encarga de todo lo que las herramientas necesitan pero de lo que no deberían ocuparse:

  • Límites de frecuencia — Discord devuelve un 429 con un encabezado Retry-After. El servicio espera y reintenta automáticamente, hasta tres veces.
  • Resolución de nombres — convierte nombres legibles en IDs snowflake de Discord. Primero comprueba si la entrada son solo dígitos y, si es así, la usa directamente.
  • Bitfields de permisos — traduce nombres de flags legibles como SEND_MESSAGES, VIEW_CHANNEL a los bitfields bigint que Discord espera en realidad.
  • ID del servidor por defecto — recurre a la variable de entorno DISCORD_GUILD_ID para que no tengas que pasarlo en cada llamada.
  • Caché en memoria — TTL de 5 minutos para los canales y roles del servidor, para no consultar la API en cada búsqueda de nombre.

La pestaña de Ajustes

Agregamos una pestaña de configuración de Discord a la Neural Interface. Está en Conexiones, junto a las integraciones de Claude Code y Cursor que ya existían. Cinco secciones cubren todo lo necesario para poner las herramientas en marcha:

  • Conexión del bot — campo para el token con opción de mostrarlo u ocultarlo, ID del servidor y un botón de prueba que verifica el token contra la API de Discord y devuelve la información del bot y la lista de servidores
  • Permisos necesarios — una cuadrícula visual con todos los permisos que necesita el bot y un enlace de invitación generado automáticamente que puedes copiar
  • Valores por defecto del servidor — categoría por defecto, canal de bienvenida, canal de reglas, canal de registros, rol de moderador
  • Valores por defecto de moderación — período de mensajes que se borran al banear, duración por defecto del aislamiento temporal
  • Referencia de herramientas — una cuadrícula de consulta rápida con las ocho herramientas y lo que hace cada una

Todo se guarda automáticamente en el archivo .env con un debounce de 800ms. Sin botones de guardar, sin recargar la página.

Cómo se ve en la práctica

Una vez configurados el token del bot y el ID del servidor, Claude puede hacer cosas como esta en una sola conversación:

Crea una categoría "Community". Dentro de ella, crea #general con el tema "Main discussion", #introductions con un modo lento de 30 segundos y #resources como solo lectura para @everyone pero con escritura para @moderator. Crea el rol moderator de color azul, muéstralo por separado en la lista de miembros y asígnaselo al dueño del servidor. Configura la pantalla de bienvenida para que destaque #introductions y #resources. Pon el nivel de verificación en medio.

Son seis llamadas a herramientas. Cada una es una llamada REST directa a Discord. Sin scripts, sin clics en un panel, sin un framework de bots de por medio.

Lo que viene

Las herramientas existen. La pestaña de ajustes existe. El siguiente paso es usarlas de verdad para configurar un servidor real desde cero en una sola sesión de Claude Code. Documentaremos ese proceso cuando ocurra, incluido todo lo que se rompa por el camino.

Las herramientas de Discord son también la base de otra cosa a la que le venimos dando vueltas: dejar que Claude supervise los canales de Discord y responda en ellos. Eso requeriría el Gateway por WebSocket, que es una arquitectura completamente distinta. Pero las herramientas REST que construimos ya cubren todas las operaciones de configuración y moderación que admite Discord, y seguirán siendo útiles sin importar lo que agreguemos después.


Las herramientas MCP de Discord vienen incluidas en SynaBun. Si ya usas SynaBun, actualiza y agrega el token de tu bot. Si no, el código está en GitHub.