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
📖 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
guildIdpossa 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_CONSOLEmanualmente. O registro de logs é configurado automaticamente para os modoshttpe legadostdio.
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âmetroguildIdpossa 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
- Abra o n8n e adicione um nó MCP Client.
- Escolha o transporte HTTP ou Streamable HTTP (dependendo da versão do seu n8n/opções do nó).
- Defina a URL do servidor para:
http://localhost:8085/mcp - Salve o nó e teste a conexão.
- Após conectar, você pode usar as ferramentas do Discord disponíveis expostas pelo
discord-mcpdentro do seu fluxo de trabalho.
Notas
- Se o n8n estiver rodando em Docker,
localhostpode 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.jsondo 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:
- Abra o Claude Desktop e vá para
Settings->Connectors. - Adicione um conector personalizado e defina a URL MCP para o endpoint do seu servidor (por exemplo
https://<PUBLIC_HOST>/mcp). - 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
get_server_info: Obtenha informações detalhadas do servidor Discord
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íficoedit_private_message: Edite uma mensagem privada de um usuário específicodelete_private_message: Exclua uma mensagem privada de um usuário específicoread_private_messages: Leia o histórico de mensagens privadas de um usuário específico (inclui metadados de anexos, suportacount1-100 e cursor opcional:beforeouafterouaround)
Gerenciamento de Mensagens
send_message: Envie uma mensagem para um canal específicoedit_message: Edite uma mensagem de um canal específicodelete_message: Exclua uma mensagem de um canal específicoread_messages: Leia o histórico de mensagens de um canal específico (inclui metadados de anexos, suportacount1-100 e cursor opcional:beforeouafterouaround)add_reaction: Adicione uma reação (emoji) a uma mensagem específicaremove_reaction: Remova uma reação especificada (emoji) de uma mensagem
Gerenciamento de Canais
create_text_channel: Crie um novo canal de textoedit_text_channel: Edite configurações de um canal de texto (nome, tópico, nsfw, slowmode, categoria, posição)delete_channel: Exclua um canalfind_channel: Encontre o tipo e o ID de um canal usando nome e ID do servidorlist_channels: Lista de todos os canaisget_channel_info: Obtenha informações detalhadas sobre um canalmove_channel: Mova um canal para outra categoria e/ou altere sua posição
Gerenciamento de Categorias
create_category: Crie uma nova categoria para canaisedit_category: Edite uma categoria (renomeie ou mova a posição)delete_category: Exclua uma categoriafind_category: Encontre o ID de uma categoria usando nome e ID do servidorlist_channels_in_category: Lista de canais em uma categoria específica
Gerenciamento de Webhooks
create_webhook: Crie um novo webhook em um canal específicodelete_webhook: Exclua um webhooklist_webhooks: Lista de webhooks em um canal específicosend_webhook_message: Envie uma mensagem via webhook
Gerenciamento de Cargos
list_roles: Obtenha uma lista de todos os cargos no servidor com seus detalhescreate_role: Crie um novo cargo no servidoredit_role: Modifique as configurações de um cargo existentedelete_role: Exclua permanentemente um cargo do servidorassign_role: Atribua um cargo a um usuárioremove_role: Remova um cargo de um usuário
Moderação e Gerenciamento de Usuários
kick_member: Expulsa um membro do servidorban_member: Bane um usuário do servidorunban_member: Remove um banimento de um usuáriotimeout_member: Desabilita a comunicação de um membro por uma duração especificadaremove_timeout: Remove um timeout (desmutar) de um membro antes que expireset_nickname: Altera o apelido de um membro no servidorget_bans: Retorna uma lista de usuários banidos no servidor com os motivos do banimento
Gerenciamento de Canais de Voz e Stage
create_voice_channel: Crie um novo canal de voz em um servidorcreate_stage_channel: Crie um novo canal de stage para eventos de áudioedit_voice_channel: Edite configurações de um canal de voz ou stage (nome, bitrate, limite de usuários, região)move_member: Mova um membro para outro canal de vozdisconnect_member: Desconecte um membro do seu canal de voz atualmodify_voice_state: Mute ou ensurdeça um membro no servidor em canais de voz
Gerenciamento de Eventos Agendados
create_guild_scheduled_event: Agende um novo evento no servidor (voz, stage ou externo)edit_guild_scheduled_event: Modifique detalhes do evento ou altere seu status (iniciar, concluir, cancelar)delete_guild_scheduled_event: Exclua permanentemente um evento agendadolist_guild_scheduled_events: Liste todos os eventos ativos e agendados no servidorget_guild_scheduled_event_users: Obtenha a lista de usuários interessados em um evento agendado
Substituições de Permissão de Canal
list_channel_permission_overwrites: Liste todas as substituições de permissão para um canal com detalhamento de cargos/membrosupsert_role_channel_permissions: Crie ou atualize a substituição de permissão para um cargo em um canalupsert_member_channel_permissions: Crie ou atualize a substituição de permissão para um membro em um canaldelete_channel_permission_overwrite: Exclua uma substituição de permissão para um cargo ou membro de um canal
Gerenciamento de Convites
create_invite: Crie um novo link de convite para um canal específicolist_invites: Liste todos os convites ativos no servidor com suas estatísticasdelete_invite: Exclua (revogue) um convite para que o link pare de funcionarget_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órumedit_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 servidorget_forum_channel_info: Obtenha informações detalhadas sobre um canal de fórum, incluindo tags e configuraçõeslist_forum_tags: Liste todas as tags disponíveis em um canal de fórumcreate_forum_post: Crie uma nova postagem de fórum (thread) com uma mensagem inicial em um canal de fórumlist_forum_posts: Liste postagens ativas (threads) em um canal de fórummodify_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 servidorget_emoji_details: Obtenha informações detalhadas sobre um emoji personalizado específicocreate_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 cargodelete_emoji: Exclua permanentemente um emoji personalizado do servidor
Se
DISCORD_GUILD_IDestiver definido, o parâmetroguildIdse torna opcional para todas as ferramentas acima.
Exemplos mais detalhados podem ser encontrados na Wiki.