Discord MCP

Um servidor MCP para interagir com servidores do Discord.

Documentação

Servidor Discord MCP

Um servidor Model Context Protocol (MCP) de nível de produção para Discord, construído com FastMCP e discord.py. Fornece uma superfície de API completa para gerenciar canais, cargos, permissões, mensagens, moderação e configurações do servidor via MCP.


Recursos

  • Sessões de bot por token com gerenciamento automático de sessão
  • Gerenciamento de canais: criar, editar, excluir, mover e reordenar por posição
  • Gerenciamento de cargos: criar, editar (incluindo posição), excluir, atribuir, remover
  • Configuração de permissões para canais, categorias e cargos
  • Inspeção de permissões "Visualizar como cargo/membro" em guild e canais
  • Operações de mensagens: enviar, editar, excluir, excluir em massa, recuperar
  • Ações de moderação: timeout, expulsar, banir, aplicar políticas de cargos
  • Gerenciamento de configurações do servidor/guild
  • Enquetes: criar, encerrar e obter resultados
  • Eventos agendados: criar, editar, excluir, listar, obter participantes
  • Threads e fóruns: criar, editar, excluir, gerenciar membros, posts de fórum
  • Webhooks: criar, enviar mensagens, listar, excluir
  • Convites: criar, listar, excluir
  • Emojis e figurinhas: criar, excluir, listar
  • Reações: adicionar, remover, listar usuários, limpar
  • AutoMod: criar, editar, excluir, listar regras
  • Registro de auditoria: consulta com filtros
  • Informações de membros: obter detalhes, listar membros, editar apelidos/mutar/surdez
  • Endpoints de status para sessões de bot

Instalação

uv sync

Configuração

Copie o arquivo de modelo .env e modifique conforme necessário:

cp .env.template .env

O bind padrão é somente local:

MCP_HOST=127.0.0.1
MCP_PORT=8000

Uso

Execute o servidor MCP localmente:

uv run python -m discord_mcp.main

Ou use sem configuração local:

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

Exemplo de Configuração do Cliente MCP

Exemplo de configuração para OpenCode usando um 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"
      }
    }
  }
}

Isso pode ser usado por qualquer cliente que suporte MCP.

Ferramentas MCP

Gerenciamento de Canais

  • create_channel - Criar um canal de texto, voz, notícias, palco, fórum, mídia ou categoria
  • edit_channel - Editar as configurações de um canal
  • delete_channel - Excluir um canal
  • move_channel - Mover canal para uma categoria
  • edit_channel com position - Reordenar canais/categorias
  • get_channel - Obter informações do canal
  • get_channels - Listar todos os canais na guild

Gerenciamento de Cargos

  • create_role - Criar um novo cargo
  • edit_role - Editar um cargo (incluindo position para reordenar)
  • delete_role - Excluir um cargo
  • assign_role - Atribuir cargo a um membro
  • remove_role - Remover cargo de um membro
  • get_role - Obter informações do cargo
  • get_roles - Listar todos os cargos na guild

Gerenciamento de Permissões

  • set_channel_permissions - Definir permissões do canal
  • set_category_permissions - Definir permissões da categoria
  • set_role_permissions - Atualizar permissões do cargo
  • get_channel_permissions - Obter substituições de permissão do canal
  • get_category_permissions - Obter substituições de permissão da categoria
  • remove_channel_permissions - Remover substituições de permissão
  • inspect_role_permissions - Resumo de permissões do cargo compacto por padrão (contagens, prévias, capacidades principais)
  • inspect_member_permissions - Resumo de permissões do membro compacto por padrão (contagens, prévias, capacidades principais)
  • inspect_target_channel_permissions - Permissões efetivas completas para um alvo em um canal (detalhamento)
  • list_target_accessible_channels - Lista compacta de canais que um cargo/membro pode acessar
  • list_target_inaccessible_channels - Lista compacta de canais que um cargo/membro não pode acessar

A inspeção de permissões é otimizada para fluxos de trabalho de agentes de IA: chame as ferramentas de resumo primeiro e solicite detalhes do canal somente quando necessário.

Operações de Mensagens

  • send_message - Enviar uma mensagem (suporta embeds, TTS, menções, referências)
  • edit_message - Editar uma mensagem
  • delete_message - Excluir uma mensagem
  • bulk_delete_messages - Excluir mensagens em massa
  • get_message - Obter uma mensagem
  • get_channel_messages - Obter histórico de mensagens do canal

Moderação

  • timeout_user - Aplicar timeout a um membro
  • remove_timeout - Remover timeout de um membro
  • kick_user - Expulsar um membro
  • ban_user - Banir um membro
  • unban_user - Desbanir um membro
  • enforce_role_policy - Aplicar política de cargos (expulsar/banir membros sem cargos obrigatórios)
  • get_guild_bans - Listar banimentos da guild
  • get_member_timeout_status - Verificar status de timeout

Gerenciamento da Guild

  • get_guild_settings - Obter configurações do servidor (nome, descrição, nível de verificação, etc.)
  • edit_guild_settings - Editar configurações do servidor

Enquetes

  • create_poll - Criar uma enquete em um canal
  • end_poll - Encerrar uma enquete ativa
  • get_poll_results - Obter contagens de votos e resultados da enquete

Eventos Agendados

  • create_scheduled_event - Criar um evento agendado (voz, palco ou externo)
  • edit_scheduled_event - Editar um evento agendado
  • delete_scheduled_event - Excluir um evento agendado
  • list_scheduled_events - Listar todos os eventos agendados em uma guild
  • get_scheduled_event_users - Obter usuários interessados em um evento

Threads e Fóruns

  • create_thread - Criar uma thread (opcionalmente a partir de uma mensagem)
  • edit_thread - Editar configurações da thread (nome, arquivar, bloquear, slowmode)
  • delete_thread - Excluir uma thread
  • list_threads - Listar threads ativas e arquivadas em um canal
  • add_thread_member - Adicionar um membro a uma thread
  • remove_thread_member - Remover um membro de uma thread
  • create_forum_post - Criar um post de fórum com tags

Webhooks

  • create_webhook - Criar um webhook para um canal
  • send_webhook_message - Enviar uma mensagem via webhook
  • list_webhooks - Listar webhooks de uma guild ou canal
  • delete_webhook - Excluir um webhook

Convites

  • create_invite - Criar um convite de canal
  • list_invites - Listar todos os convites da guild
  • delete_invite - Excluir um convite

Emojis e Figurinhas

  • create_emoji - Criar um emoji personalizado
  • delete_emoji - Excluir um emoji personalizado
  • list_emojis - Listar todos os emojis personalizados em uma guild
  • list_stickers - Listar todas as figurinhas em uma guild

Reações

  • add_reaction - Adicionar uma reação a uma mensagem
  • remove_reaction - Remover uma reação de uma mensagem
  • get_reaction_users - Obter usuários que reagiram com um emoji específico
  • clear_reactions - Limpar todas ou reações específicas de uma mensagem

AutoMod

  • create_automod_rule - Criar uma regra de automod (palavras-chave, spam, predefinição, spam de menções)
  • edit_automod_rule - Editar uma regra de automod
  • delete_automod_rule - Excluir uma regra de automod
  • list_automod_rules - Listar todas as regras de automod em uma guild

Registro de Auditoria

  • get_audit_log - Consultar registro de auditoria com filtros (usuário, tipo de ação, limite)

Membros

  • get_member_info - Obter informações detalhadas do perfil do membro
  • list_members - Listar membros da guild
  • edit_member - Editar membro (apelido, mutar, surdez)

Status

  • get_bot_status - Obter status do bot e informações da sessão