Discord MCP

Um servidor MCP para a API do Discord, permitindo integração perfeita de bots do Discord com aplicações compatíveis com MCP.

Documentação

DeepSeek-V3

📖 Descrição

Um servidor Model Context Protocol (MCP) para a API do Discord usando (JDA), projetado para integrar bots do Discord com aplicativos compatíveis com MCP, como Claude, ChatGPT, etc. Ele permite que assistentes de IA interajam com o Discord gerenciando canais, enviando mensagens e recuperando informações do servidor. Ideal para construir automação poderosa do Discord e fluxos de trabalho orientados por IA.

🔬 Instalação

► 🐳 Instalação via Docker (Recomendado)

[!NOTE] A instalação do Docker é necessária. Instruções completas podem ser encontradas em docker.com.

1) Defina as variáveis de ambiente locais

export DISCORD_TOKEN="YOUR_DISCORD_BOT_TOKEN"
export DISCORD_GUILD_ID="OPTIONAL_DEFAULT_SERVER_ID"
export SPRING_PROFILES_ACTIVE=http

[!IMPORTANT] Instruções para criar um bot do Discord e recuperar seu token podem ser encontradas aqui.

[!TIP] A variável de ambiente DISCORD_GUILD_ID é opcional.

Quando fornecida, ela define um ID de servidor Discord padrão para que qualquer ferramenta que aceite um parâmetro guildId possa omiti-lo.

2) Execute o contêiner 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 padrão do endpoint MCP (perfil HTTP): http://localhost:8085/mcp

🐋 Instalação via Docker Compose

1) Clone o repositório

git clone https://github.com/SaseQ/discord-mcp

2) Vá para o diretório do projeto

cd discord-mcp

3) Crie o ambiente de execução local

cat > .env <<EOF
SPRING_PROFILES_ACTIVE=http
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>
EOF

4) Inicie um contêiner MCP server compartilhado

docker compose up -d --build

5) Verifique

docker ps --filter name=discord-mcp
curl -fsS http://localhost:8085/actuator/health

[!TIP] Você não precisa definir LOGGING_PATTERN_CONSOLE manualmente. O registro de logs é configurado automaticamente para os modos http e legado stdio.

URL padrão do endpoint MCP (perfil HTTP): http://localhost:8085/mcp

Endpoint de saúde (Actuator): http://localhost:8085/actuator/health

🔧 Instalação Manual

1) Clone o repositório

git clone https://github.com/SaseQ/discord-mcp

2) Compile o projeto

NOTA: A instalação do Maven é necessária para usar o comando mvn. Instruções completas podem ser encontradas aqui.

cd discord-mcp
mvn clean package # The jar file will be available in the /target directory

3) Configure o cliente de IA

Execute o JAR como um servidor de longa duração:

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: A variável de ambiente DISCORD_GUILD_ID é opcional. Quando fornecida, ela define um ID de servidor Discord padrão para que qualquer ferramenta que aceite um parâmetro guildId possa omiti-lo.

URL padrão do endpoint MCP (perfil HTTP): http://localhost:8085/mcp

🔗 Conexões

► 🗞️ Conexão padrão config.json

Recomendado (modo singleton HTTP):

{
  "mcpServers": {
    "discord-mcp": {
      "url": "http://localhost:8085/mcp"
    }
  }
}

Modo legado (stdio, inicia um novo processo/contêiner por sessão 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"
      ]
    }
  }
}
⌨️ Conexão Claude Code

Recomendado (modo singleton HTTP):

claude mcp add discord-mcp --transport http http://localhost:8085/mcp

Modo legado (stdio, inicia um novo processo/contêiner por sessão 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
🤖 Conexão Codex CLI
codex mcp add discord-mcp --url http://localhost:8085/mcp
codex mcp list
🦞 Conexão OpenClaw

Execute este comando:

openclaw mcp set discord-mcp '{"url":"http://localhost:8085/mcp","transport":"streamable-http"}'
openclaw mcp list

OU

Cole a seguinte configuração no seu arquivo ~/.openclaw/config.json do OpenClaw:

{
  "mcp": {
    "servers": {
      "discord-mcp": {
        "url": "http://localhost:8085/mcp",
        "transport": "streamable-http"
      }
    }
  }
}
🖲 Conexão Cursor

Vá para: Settings -> Cursor Settings -> MCP -> Add new global MCP server

Cole a seguinte configuração no seu arquivo ~/.cursor/mcp.json do Cursor é a abordagem recomendada. Você também pode instalar em um projeto específico criando .cursor/mcp.json na pasta do seu projeto. Consulte documentação MCP do Cursor para mais informações.

{
  "mcpServers": {
    "discord-mcp": {
      "url": "http://localhost:8085/mcp"
    }
  }
}
🚀 Conexão n8n

Conecte no n8n

  1. Abra o n8n e adicione um nó MCP Client.
  2. Escolha o transporte HTTP ou Streamable HTTP (dependendo da versão do seu n8n/opções do nó).
  3. Defina a URL do servidor para: http://localhost:8085/mcp
  4. Salve o nó e teste a conexão.
  5. Após conectar, você pode usar as ferramentas do Discord disponíveis expostas pelo discord-mcp dentro do seu fluxo de trabalho.

Notas

  • Se o n8n estiver rodando em Docker, localhost pode apontar para o próprio contêiner do n8n, não para sua máquina host.
  • Nesse caso, use o nome do serviço Docker ou outro host acessível, por exemplo: http://discord-mcp:8085/mcp
🖥 Conexão Claude Desktop

Config local STDIO (Padrão, legado):

Cole a seguinte configuração no seu arquivo claude_desktop_config.json do 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. Abra o Claude Desktop e vá para Settings -> Connectors.
  2. Adicione um conector personalizado e defina a URL MCP para o endpoint do seu servidor (por exemplo https://<PUBLIC_HOST>/mcp).
  3. Salve e reconecte.

Os conectores remotos do Claude Desktop são gerenciados pela interface Connectors (não claude_desktop_config.json). http://localhost:8085/mcp é acessível apenas a partir da sua máquina. Para conectores remotos do Claude Desktop, exponha o endpoint com HTTPS público (por exemplo, túnel/proxy reverso).

🛠️ Ferramentas Disponíveis

Informações do Servidor

Gerenciamento de Usuários

  • get_user_id_by_name: Obtenha o ID de um usuário do Discord pelo nome de usuário em um servidor para uso em menções <@id>
  • send_private_message: Envie uma mensagem privada para um usuário específico
  • edit_private_message: Edite uma mensagem privada de um usuário específico
  • delete_private_message: Exclua uma mensagem privada de um usuário específico
  • read_private_messages: Leia o histórico de mensagens privadas de um usuário específico (inclui metadados de anexos, suporta count 1-100 e cursor opcional: before ou after ou around)

Gerenciamento de Mensagens

  • send_message: Envie uma mensagem para um canal específico
  • edit_message: Edite uma mensagem de um canal específico
  • delete_message: Exclua uma mensagem de um canal específico
  • read_messages: Leia o histórico de mensagens de um canal específico (inclui metadados de anexos, suporta count 1-100 e cursor opcional: before ou after ou around)
  • add_reaction: Adicione uma reação (emoji) a uma mensagem específica
  • remove_reaction: Remova uma reação especificada (emoji) de uma mensagem

Gerenciamento de Canais

Gerenciamento de Categorias

Gerenciamento de Webhooks

Gerenciamento de Cargos

  • list_roles: Obtenha uma lista de todos os cargos no servidor com seus detalhes
  • create_role: Crie um novo cargo no servidor
  • edit_role: Modifique as configurações de um cargo existente
  • delete_role: Exclua permanentemente um cargo do servidor
  • assign_role: Atribua um cargo a um usuário
  • remove_role: Remova um cargo de um usuário

Moderação e Gerenciamento de Usuários

  • kick_member: Expulsa um membro do servidor
  • ban_member: Bane um usuário do servidor
  • unban_member: Remove um banimento de um usuário
  • timeout_member: Desabilita a comunicação de um membro por uma duração especificada
  • remove_timeout: Remove um timeout (desmutar) de um membro antes que expire
  • set_nickname: Altera o apelido de um membro no servidor
  • get_bans: Retorna uma lista de usuários banidos no servidor com os motivos do banimento

Gerenciamento de Canais de Voz e Stage

Gerenciamento de Eventos Agendados

Substituições de Permissão de Canal

Gerenciamento de Convites

  • create_invite: Crie um novo link de convite para um canal específico
  • list_invites: Liste todos os convites ativos no servidor com suas estatísticas
  • delete_invite: Exclua (revogue) um convite para que o link pare de funcionar
  • get_invite_details: Obtenha detalhes sobre um convite específico (funciona para qualquer convite público)

Gerenciamento de Fóruns

  • create_forum_channel: Crie um novo canal de fórum
  • edit_forum_channel: Edite configurações de um canal de fórum (nome, tópico, nsfw, slowmode, categoria, posição, ordenação padrão, layout padrão)
  • list_forum_channels: Liste todos os canais de fórum no servidor
  • get_forum_channel_info: Obtenha informações detalhadas sobre um canal de fórum, incluindo tags e configurações
  • list_forum_tags: Liste todas as tags disponíveis em um canal de fórum
  • create_forum_post: Crie uma nova postagem de fórum (thread) com uma mensagem inicial em um canal de fórum
  • list_forum_posts: Liste postagens ativas (threads) em um canal de fórum
  • modify_forum_post: Modifique uma postagem de fórum: bloquear/desbloquear, arquivar/desarquivar, fixar/desafixar ou alterar tags aplicadas

Gerenciamento de Emojis

  • list_emojis: Liste todos os emojis personalizados no servidor
  • get_emoji_details: Obtenha informações detalhadas sobre um emoji personalizado específico
  • create_emoji: Envie um novo emoji personalizado para o servidor (base64 ou URL de imagem, máx. 256KB)
  • edit_emoji: Edite o nome de um emoji existente ou restrições de cargo
  • delete_emoji: Exclua permanentemente um emoji personalizado do servidor

Se DISCORD_GUILD_ID estiver definido, o parâmetro guildId se torna opcional para todas as ferramentas acima.


Exemplos mais detalhados podem ser encontrados na Wiki.