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

DeepSeek-V3

📖 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_ID es opcional.

Cuando se proporciona, establece un ID de servidor de Discord predeterminado para que cualquier herramienta que acepte un parámetro guildId pueda 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_CONSOLE manualmente. El registro se configura automáticamente tanto para el modo http como para el modo heredado stdio.

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_ID es opcional. Cuando se proporciona, establece un ID de servidor de Discord predeterminado para que cualquier herramienta que acepte un parámetro guildId pueda 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

  1. Abre n8n y añade un nodo MCP Client.
  2. Elige el transporte HTTP o Streamable HTTP (según tu versión de n8n/opciones del nodo).
  3. Configura la URL del servidor a: http://localhost:8085/mcp
  4. Guarda el nodo y prueba la conexión.
  5. Después de conectarte, puedes usar las herramientas de Discord disponibles expuestas por discord-mcp dentro de tu flujo de trabajo.

Notas

  • Si n8n se ejecuta en Docker, localhost puede 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.json de 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:

  1. Abre Claude Desktop y ve a Settings -> Connectors.
  2. Añade un conector personalizado y configura la URL MCP a tu endpoint de servidor (por ejemplo https://<PUBLIC_HOST>/mcp).
  3. 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/mcp solo 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

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ífico
  • edit_private_message: Edita un mensaje privado de un usuario específico
  • delete_private_message: Elimina un mensaje privado de un usuario específico
  • read_private_messages: Lee el historial de mensajes privados de un usuario específico (incluye metadatos de archivos adjuntos, admite count 1-100 y cursor opcional: before o after o around)

Gestión de Mensajes

  • send_message: Envía un mensaje a un canal específico
  • edit_message: Edita un mensaje de un canal específico
  • delete_message: Elimina un mensaje de un canal específico
  • read_messages: Lee el historial de mensajes de un canal específico (incluye metadatos de archivos adjuntos, admite count 1-100 y cursor opcional: before o after o around)
  • add_reaction: Añade una reacción (emoji) a un mensaje específico
  • remove_reaction: Elimina una reacción específica (emoji) de un mensaje

Gestión de Canales

Gestión de Categorías

Gestión de Webhooks

Gestión de Roles

  • list_roles: Obtén una lista de todos los roles en el servidor con sus detalles
  • create_role: Crea un nuevo rol en el servidor
  • edit_role: Modifica la configuración de un rol existente
  • delete_role: Elimina permanentemente un rol del servidor
  • assign_role: Asigna un rol a un usuario
  • remove_role: Elimina un rol de un usuario

Moderación y Gestión de Usuarios

  • kick_member: Expulsa a un miembro del servidor
  • ban_member: Banea a un usuario del servidor
  • unban_member: Elimina un baneo de un usuario
  • timeout_member: Desactiva la comunicación de un miembro durante una duración específica
  • remove_timeout: Elimina un timeout (desmutea) de un miembro antes de que expire
  • set_nickname: Cambia el apodo de un miembro en el servidor
  • get_bans: Devuelve una lista de usuarios baneados en el servidor con las razones del baneo

Gestión de Canales de Voz y Escenario

Gestión de Eventos Programados

Sobrescrituras de Permisos de Canal

Gestión de Invitaciones

  • create_invite: Crea un nuevo enlace de invitación para un canal específico
  • list_invites: Lista todas las invitaciones activas en el servidor con sus estadísticas
  • delete_invite: Elimina (revoca) una invitación para que el enlace deje de funcionar
  • get_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 foro
  • edit_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 servidor
  • get_forum_channel_info: Obtén información detallada sobre un canal de foro, incluyendo etiquetas y configuración
  • list_forum_tags: Lista todas las etiquetas disponibles en un canal de foro
  • create_forum_post: Crea una nueva publicación de foro (hilo) con un mensaje inicial en un canal de foro
  • list_forum_posts: Lista las publicaciones activas (hilos) en un canal de foro
  • modify_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 servidor
  • get_emoji_details: Obtén información detallada sobre un emoji personalizado específico
  • create_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 rol
  • delete_emoji: Elimina permanentemente un emoji personalizado del servidor

Si DISCORD_GUILD_ID está configurado, el parámetro guildId se vuelve opcional para todas las herramientas anteriores.


Puedes encontrar ejemplos más detallados en la Wiki.