Discord MCP
Un servidor MCP para la API de Discord, que permite la integración fluida de bots de Discord con aplicaciones compatibles con MCP.
Documentación
📖 Descripción
Un servidor de Model Context Protocol (MCP) para la API de Discord que utiliza (JDA), diseñado para integrar bots de Discord con aplicaciones compatibles con MCP como Claude, ChatGPT, etc. Permite que los asistentes de IA interactúen con Discord gestionando canales, enviando mensajes y recuperando información del servidor. Ideal para construir potentes automatizaciones de Discord y flujos de trabajo impulsados por IA.
🔬 Instalación
► 🐳 Instalación con Docker (Recomendada)
[!NOTE] Se requiere la instalación de Docker. Puedes encontrar instrucciones completas en docker.com.
1) Configurar variables de entorno locales
export DISCORD_TOKEN="YOUR_DISCORD_BOT_TOKEN"
export DISCORD_GUILD_ID="OPTIONAL_DEFAULT_SERVER_ID"
export SPRING_PROFILES_ACTIVE=http
[!IMPORTANT] Las instrucciones para crear un bot de Discord y obtener su token se pueden encontrar aquí.
[!TIP] La variable de entorno
DISCORD_GUILD_IDes opcional.Cuando se proporciona, establece un ID de servidor de Discord predeterminado para que cualquier herramienta que acepte un parámetro
guildIdpueda omitirlo.
2) Ejecutar el contenedor Docker
docker run -d -i \
--name discord-mcp \
--restart unless-stopped \
-p 8085:8085 \
-e SPRING_PROFILES_ACTIVE \
-e DISCORD_TOKEN \
-e DISCORD_GUILD_ID \
saseq/discord-mcp:latest
URL de endpoint MCP predeterminada (perfil HTTP): http://localhost:8085/mcp
🐋 Instalación con Docker Compose
1) Clonar el repositorio
git clone https://github.com/SaseQ/discord-mcp
2) Ir al directorio del proyecto
cd discord-mcp
3) Crear el entorno de ejecución local
cat > .env <<EOF
SPRING_PROFILES_ACTIVE=http
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>
EOF
4) Iniciar un contenedor de servidor MCP compartido
docker compose up -d --build
5) Verificar
docker ps --filter name=discord-mcp
curl -fsS http://localhost:8085/actuator/health
[!TIP] No necesitas configurar
LOGGING_PATTERN_CONSOLEmanualmente. El registro se configura automáticamente tanto para el modohttpcomo para el modo heredadostdio.
URL de endpoint MCP predeterminada (perfil HTTP): http://localhost:8085/mcp
Endpoint de salud (Actuator): http://localhost:8085/actuator/health
🔧 Instalación Manual
1) Clonar el repositorio
git clone https://github.com/SaseQ/discord-mcp
2) Compilar el proyecto
NOTA: Se requiere la instalación de Maven para usar el comando mvn. Puedes encontrar instrucciones completas aquí.
cd discord-mcp
mvn clean package # The jar file will be available in the /target directory
3) Configurar el cliente de IA
Ejecuta el JAR como un servidor de larga duración:
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN> \
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID> \
SPRING_PROFILES_ACTIVE=http \
java -jar /absolute/path/to/discord-mcp-1.0.0.jar
NOTA: La variable de entorno
DISCORD_GUILD_IDes opcional. Cuando se proporciona, establece un ID de servidor de Discord predeterminado para que cualquier herramienta que acepte un parámetroguildIdpueda omitirlo.
URL de endpoint MCP predeterminada (perfil HTTP): http://localhost:8085/mcp
🔗 Conexiones
► 🗞️ Conexión con config.json predeterminada
Recomendado (modo singleton HTTP):
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
Modo heredado (stdio, inicia un nuevo proceso/contenedor por sesión de cliente):
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>",
"-e",
"DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>",
"saseq/discord-mcp:latest"
]
}
}
}
⌨️ Conexión con Claude Code
Recomendado (modo singleton HTTP):
claude mcp add discord-mcp --transport http http://localhost:8085/mcp
Modo heredado (stdio, inicia un nuevo proceso/contenedor por sesión de cliente):
claude mcp add discord-mcp -- docker run --rm -i -e DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN> -e DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID> saseq/discord-mcp:latest
🤖 Conexión con Codex CLI
codex mcp add discord-mcp --url http://localhost:8085/mcp
codex mcp list
🦞 Conexión con OpenClaw
Ejecuta este comando:
openclaw mcp set discord-mcp '{"url":"http://localhost:8085/mcp","transport":"streamable-http"}'
openclaw mcp list
O
Pegando la siguiente configuración en tu archivo ~/.openclaw/config.json de OpenClaw:
{
"mcp": {
"servers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp",
"transport": "streamable-http"
}
}
}
}
🖲 Conexión con Cursor
Ve a: Settings -> Cursor Settings -> MCP -> Add new global MCP server
Pegar la siguiente configuración en tu archivo ~/.cursor/mcp.json de Cursor es el enfoque recomendado. También puedes instalarlo en un proyecto específico creando .cursor/mcp.json en la carpeta de tu proyecto. Consulta la documentación de MCP de Cursor para más información.
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
🚀 Conexión con n8n
Conectar en n8n
- Abre n8n y añade un nodo MCP Client.
- Elige el transporte HTTP o Streamable HTTP (según tu versión de n8n/opciones del nodo).
- Configura la URL del servidor a:
http://localhost:8085/mcp - Guarda el nodo y prueba la conexión.
- Después de conectarte, puedes usar las herramientas de Discord disponibles expuestas por
discord-mcpdentro de tu flujo de trabajo.
Notas
- Si n8n se ejecuta en Docker,
localhostpuede apuntar al propio contenedor de n8n, no a tu máquina host. - En ese caso, usa el nombre del servicio Docker u otro host alcanzable, por ejemplo:
http://discord-mcp:8085/mcp
🖥 Conexión con Claude Desktop
Config local STDIO (predeterminada, heredada):
Pega la siguiente configuración en tu archivo
claude_desktop_config.jsonde Claude Desktop.
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>",
"-e",
"DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>",
"saseq/discord-mcp:latest"
]
}
}
}
Conector MCP remoto:
- Abre Claude Desktop y ve a
Settings->Connectors. - Añade un conector personalizado y configura la URL MCP a tu endpoint de servidor (por ejemplo
https://<PUBLIC_HOST>/mcp). - Guarda y vuelve a conectar.
Los conectores remotos de Claude Desktop se gestionan a través de la interfaz de Conectores (no
claude_desktop_config.json).http://localhost:8085/mcpsolo es accesible desde tu máquina. Para conectores remotos de Claude Desktop, expón el endpoint con HTTPS público (por ejemplo túnel/proxy inverso).
🛠️ Herramientas Disponibles
Información del Servidor
get_server_info: Obtén información detallada del servidor de Discord
Gestión de Usuarios
get_user_id_by_name: Obtén el ID de un usuario de Discord por nombre de usuario en un servidor para uso en menciones<@id>send_private_message: Envía un mensaje privado a un usuario específicoedit_private_message: Edita un mensaje privado de un usuario específicodelete_private_message: Elimina un mensaje privado de un usuario específicoread_private_messages: Lee el historial de mensajes privados de un usuario específico (incluye metadatos de archivos adjuntos, admitecount1-100 y cursor opcional:beforeoafteroaround)
Gestión de Mensajes
send_message: Envía un mensaje a un canal específicoedit_message: Edita un mensaje de un canal específicodelete_message: Elimina un mensaje de un canal específicoread_messages: Lee el historial de mensajes de un canal específico (incluye metadatos de archivos adjuntos, admitecount1-100 y cursor opcional:beforeoafteroaround)add_reaction: Añade una reacción (emoji) a un mensaje específicoremove_reaction: Elimina una reacción específica (emoji) de un mensaje
Gestión de Canales
create_text_channel: Crea un nuevo canal de textoedit_text_channel: Edita la configuración de un canal de texto (nombre, tema, nsfw, modo lento, categoría, posición)delete_channel: Elimina un canalfind_channel: Encuentra el tipo y el ID de un canal usando el nombre y el ID del servidorlist_channels: Lista de todos los canalesget_channel_info: Obtén información detallada sobre un canalmove_channel: Mueve un canal a otra categoría y/o cambia su posición
Gestión de Categorías
create_category: Crea una nueva categoría para canalesedit_category: Edita una categoría (renombrar o mover posición)delete_category: Elimina una categoríafind_category: Encuentra el ID de una categoría usando el nombre y el ID del servidorlist_channels_in_category: Lista de canales en una categoría específica
Gestión de Webhooks
create_webhook: Crea un nuevo webhook en un canal específicodelete_webhook: Elimina un webhooklist_webhooks: Lista de webhooks en un canal específicosend_webhook_message: Envía un mensaje a través de webhook
Gestión de Roles
list_roles: Obtén una lista de todos los roles en el servidor con sus detallescreate_role: Crea un nuevo rol en el servidoredit_role: Modifica la configuración de un rol existentedelete_role: Elimina permanentemente un rol del servidorassign_role: Asigna un rol a un usuarioremove_role: Elimina un rol de un usuario
Moderación y Gestión de Usuarios
kick_member: Expulsa a un miembro del servidorban_member: Banea a un usuario del servidorunban_member: Elimina un baneo de un usuariotimeout_member: Desactiva la comunicación de un miembro durante una duración específicaremove_timeout: Elimina un timeout (desmutea) de un miembro antes de que expireset_nickname: Cambia el apodo de un miembro en el servidorget_bans: Devuelve una lista de usuarios baneados en el servidor con las razones del baneo
Gestión de Canales de Voz y Escenario
create_voice_channel: Crea un nuevo canal de voz en un servidorcreate_stage_channel: Crea un nuevo canal de escenario para eventos de audioedit_voice_channel: Edita la configuración de un canal de voz o escenario (nombre, bitrate, límite de usuarios, región)move_member: Mueve a un miembro a otro canal de vozdisconnect_member: Desconecta a un miembro de su canal de voz actualmodify_voice_state: Silencia o ensordece a un miembro en canales de voz
Gestión de Eventos Programados
create_guild_scheduled_event: Programa un nuevo evento en el servidor (voz, escenario o externo)edit_guild_scheduled_event: Modifica los detalles del evento o cambia su estado (iniciar, completar, cancelar)delete_guild_scheduled_event: Elimina permanentemente un evento programadolist_guild_scheduled_events: Lista todos los eventos activos y programados en el servidorget_guild_scheduled_event_users: Obtén la lista de usuarios interesados en un evento programado
Sobrescrituras de Permisos de Canal
list_channel_permission_overwrites: Lista todas las sobrescrituras de permisos de un canal con desglose por rol/miembroupsert_role_channel_permissions: Crea o actualiza la sobrescritura de permisos para un rol en un canalupsert_member_channel_permissions: Crea o actualiza la sobrescritura de permisos para un miembro en un canaldelete_channel_permission_overwrite: Elimina una sobrescritura de permisos para un rol o miembro de un canal
Gestión de Invitaciones
create_invite: Crea un nuevo enlace de invitación para un canal específicolist_invites: Lista todas las invitaciones activas en el servidor con sus estadísticasdelete_invite: Elimina (revoca) una invitación para que el enlace deje de funcionarget_invite_details: Obtén detalles sobre una invitación específica (funciona para cualquier invitación pública)
Gestión de Foros
create_forum_channel: Crea un nuevo canal de foroedit_forum_channel: Edita la configuración de un canal de foro (nombre, tema, nsfw, modo lento, categoría, posición, orden predeterminado, diseño predeterminado)list_forum_channels: Lista todos los canales de foro en el servidorget_forum_channel_info: Obtén información detallada sobre un canal de foro, incluyendo etiquetas y configuraciónlist_forum_tags: Lista todas las etiquetas disponibles en un canal de forocreate_forum_post: Crea una nueva publicación de foro (hilo) con un mensaje inicial en un canal de forolist_forum_posts: Lista las publicaciones activas (hilos) en un canal de foromodify_forum_post: Modifica una publicación de foro: bloquear/desbloquear, archivar/desarchivar, fijar/desfijar o cambiar las etiquetas aplicadas
Gestión de Emojis
list_emojis: Lista todos los emojis personalizados en el servidorget_emoji_details: Obtén información detallada sobre un emoji personalizado específicocreate_emoji: Sube un nuevo emoji personalizado al servidor (base64 o URL de imagen, máx. 256KB)edit_emoji: Edita el nombre de un emoji existente o las restricciones de roldelete_emoji: Elimina permanentemente un emoji personalizado del servidor
Si
DISCORD_GUILD_IDestá configurado, el parámetroguildIdse vuelve opcional para todas las herramientas anteriores.
Puedes encontrar ejemplos más detallados en la Wiki.