Discord MCP

Un servidor MCP para interactuar con servidores de Discord.

Documentación

Servidor Discord MCP

Un servidor Model Context Protocol (MCP) de nivel de producción para Discord construido con FastMCP y discord.py. Proporciona una superficie de API completa para gestionar canales, roles, permisos, mensajes, moderación y ajustes del servidor a través de MCP.


Características

  • Sesiones de bot por token con gestión automática de sesiones
  • Gestión de canales: crear, editar, eliminar, mover y reordenar por posición
  • Gestión de roles: crear, editar (incluyendo posición), eliminar, asignar, quitar
  • Configuración de permisos para canales, categorías y roles
  • Inspección de permisos "Ver como rol/miembro" en el servidor y canales
  • Operaciones de mensajes: enviar, editar, eliminar, eliminar en masa, recuperar
  • Acciones de moderación: tiempo de espera, expulsar, banear, aplicar políticas de roles
  • Gestión de ajustes del servidor/gremio (guild)
  • Encuestas: crear, finalizar y obtener resultados
  • Eventos programados: crear, editar, eliminar, listar, obtener asistentes
  • Hilos y foros: crear, editar, eliminar, gestionar miembros, publicaciones de foro
  • Webhooks: crear, enviar mensajes, listar, eliminar
  • Invitaciones: crear, listar, eliminar
  • Emojis y stickers: crear, eliminar, listar
  • Reacciones: añadir, quitar, listar usuarios, limpiar
  • AutoMod: crear, editar, eliminar, listar reglas
  • Registro de auditoría: consultar con filtros
  • Información de miembros: obtener detalles, listar miembros, editar apodos/silenciar/ensordecer
  • Endpoints de estado para sesiones de bot

Instalación

uv sync

Configuración

Copia el archivo de plantilla .env y modifícalo según sea necesario:

cp .env.template .env

El enlace predeterminado es solo local:

MCP_HOST=127.0.0.1
MCP_PORT=8000

Uso

Ejecuta el servidor MCP localmente:

uv run python -m discord_mcp.main

O úsalo sin una configuración local:

uv run --with git+https://github.com/ExilProductions/discord-mcp discord-mcp

Ejemplo de Configuración de Cliente MCP

Ejemplo de configuración para OpenCode usando un servidor MCP remoto:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "discord-mcp": {
      "type": "remote",
      "url": "http://localhost:8000/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "YOUR_DISCORD_BOT_TOKEN"
      }
    }
  }
}

Esto puede ser usado por cualquier cliente que soporte MCP.

Herramientas MCP

Gestión de Canales

  • create_channel - Crear un canal de texto, voz, noticias, escenario, foro, medios o categoría
  • edit_channel - Editar la configuración de un canal
  • delete_channel - Eliminar un canal
  • move_channel - Mover canal a una categoría
  • edit_channel con position - Reordenar canales/categorías
  • get_channel - Obtener información del canal
  • get_channels - Listar todos los canales del servidor

Gestión de Roles

  • create_role - Crear un nuevo rol
  • edit_role - Editar un rol (incluyendo position para reordenar)
  • delete_role - Eliminar un rol
  • assign_role - Asignar rol a un miembro
  • remove_role - Quitar rol de un miembro
  • get_role - Obtener información del rol
  • get_roles - Listar todos los roles del servidor

Gestión de Permisos

  • set_channel_permissions - Establecer permisos de canal
  • set_category_permissions - Establecer permisos de categoría
  • set_role_permissions - Actualizar permisos de rol
  • get_channel_permissions - Obtener sobrescrituras de permisos de canal
  • get_category_permissions - Obtener sobrescrituras de permisos de categoría
  • remove_channel_permissions - Eliminar sobrescrituras de permisos
  • inspect_role_permissions - Resumen de permisos de rol compacto por defecto (conteos, vistas previas, capacidades clave)
  • inspect_member_permissions - Resumen de permisos de miembro compacto por defecto (conteos, vistas previas, capacidades clave)
  • inspect_target_channel_permissions - Permisos efectivos completos para un objetivo en un canal (desglose detallado)
  • list_target_accessible_channels - Lista compacta de canales a los que un rol/miembro puede acceder
  • list_target_inaccessible_channels - Lista compacta de canales a los que un rol/miembro no puede acceder

La inspección de permisos está optimizada para flujos de trabajo de agentes de IA: llama primero a las herramientas de resumen y luego solicita el detalle del canal solo cuando sea necesario.

Operaciones de Mensajes

  • send_message - Enviar un mensaje (soporta embeds, TTS, menciones, referencias)
  • edit_message - Editar un mensaje
  • delete_message - Eliminar un mensaje
  • bulk_delete_messages - Eliminar mensajes en masa
  • get_message - Obtener un mensaje
  • get_channel_messages - Obtener historial de mensajes del canal

Moderación

  • timeout_user - Aplicar tiempo de espera a un miembro
  • remove_timeout - Quitar tiempo de espera a un miembro
  • kick_user - Expulsar a un miembro
  • ban_user - Banear a un miembro
  • unban_user - Desbanear a un miembro
  • enforce_role_policy - Aplicar política de roles (expulsar/banear miembros que no tengan los roles requeridos)
  • get_guild_bans - Listar baneos del servidor
  • get_member_timeout_status - Verificar estado de tiempo de espera

Gestión del Servidor

  • get_guild_settings - Obtener ajustes del servidor (nombre, descripción, nivel de verificación, etc.)
  • edit_guild_settings - Editar ajustes del servidor

Encuestas

  • create_poll - Crear una encuesta en un canal
  • end_poll - Finalizar una encuesta activa
  • get_poll_results - Obtener recuentos de votos y resultados de la encuesta

Eventos Programados

  • create_scheduled_event - Crear un evento programado (voz, escenario o externo)
  • edit_scheduled_event - Editar un evento programado
  • delete_scheduled_event - Eliminar un evento programado
  • list_scheduled_events - Listar todos los eventos programados en un servidor
  • get_scheduled_event_users - Obtener usuarios interesados en un evento

Hilos y Foros

  • create_thread - Crear un hilo (opcionalmente desde un mensaje)
  • edit_thread - Editar ajustes del hilo (nombre, archivar, bloquear, modo lento)
  • delete_thread - Eliminar un hilo
  • list_threads - Listar hilos activos y archivados en un canal
  • add_thread_member - Añadir un miembro a un hilo
  • remove_thread_member - Quitar un miembro de un hilo
  • create_forum_post - Crear una publicación de foro con etiquetas

Webhooks

  • create_webhook - Crear un webhook para un canal
  • send_webhook_message - Enviar un mensaje a través de webhook
  • list_webhooks - Listar webhooks de un servidor o canal
  • delete_webhook - Eliminar un webhook

Invitaciones

  • create_invite - Crear una invitación de canal
  • list_invites - Listar todas las invitaciones del servidor
  • delete_invite - Eliminar una invitación

Emojis y Stickers

  • create_emoji - Crear un emoji personalizado
  • delete_emoji - Eliminar un emoji personalizado
  • list_emojis - Listar todos los emojis personalizados en un servidor
  • list_stickers - Listar todos los stickers en un servidor

Reacciones

  • add_reaction - Añadir una reacción a un mensaje
  • remove_reaction - Quitar una reacción de un mensaje
  • get_reaction_users - Obtener usuarios que reaccionaron con un emoji específico
  • clear_reactions - Limpiar todas o reacciones específicas de un mensaje

AutoMod

  • create_automod_rule - Crear una regla de automod (palabra clave, spam, preestablecido, spam de menciones)
  • edit_automod_rule - Editar una regla de automod
  • delete_automod_rule - Eliminar una regla de automod
  • list_automod_rules - Listar todas las reglas de automod en un servidor

Registro de Auditoría

  • get_audit_log - Consultar registro de auditoría con filtros (usuario, tipo de acción, límite)

Miembros

  • get_member_info - Obtener información detallada del perfil del miembro
  • list_members - Listar miembros del servidor
  • edit_member - Editar miembro (apodo, silenciar, ensordecer)

Estado

  • get_bot_status - Obtener estado del bot e información de sesión