Skip to main content
Glama
discord-admin-mcp

discord-admin-mcp

by pedroaop

discord-admin-mcp

Servidor MCP em Python para administrar servidores Discord a partir do Claude Code (ou qualquer cliente MCP). Usa a API REST v10 do Discord através do seu próprio bot.

Ferramentas

Área

Ferramentas

Leitura

whoami, get_guild, list_channels, list_roles, list_members, search_members, read_messages, audit_log, list_bans, list_invites

Canais

create_channel, edit_channel, delete_channel, set_channel_permission

Cargos

create_role, edit_role, delete_role, add_role, remove_role

Membros

set_nickname, timeout_member, kick_member, ban_member, unban_member

Mensagens e convites

send_message, delete_message, create_invite, delete_invite

As ações aceitam reason, que é registrado no audit log do servidor. Ferramentas destrutivas indicam na descrição que o assistente deve confirmar com você antes de executar.

Related MCP server: Discord MCP

Requisitos

  • Python 3.11+

  • uv

1. Criar o bot

  1. Acesse o Discord Developer Portal e clique em New Application.

  2. Na aba Bot:

    • ative Server Members Intent;

    • clique em Reset Token e copie o token (formato xxxx.yyyy.zzzz, ~70 caracteres — não confunda com o Client Secret da aba OAuth2).

  3. (Opcional, recomendado) Para que só você possa instalar o bot: em Installation, defina Install Link como None; depois, em Bot, desmarque Public Bot.

2. Configurar o token

Nunca coloque o token no código nem faça commit dele.

Windows:

setx DISCORD_BOT_TOKEN "seu-token"

Linux/macOS:

export DISCORD_BOT_TOKEN="seu-token"

Ou copie .env.example para .env e carregue-o no seu shell (o .env está no .gitignore).

3. Instalar

git clone <url-deste-repositorio>
cd discord-cli
uv sync

Teste a conexão:

uv run python -c "import discord_admin_mcp as d; print(d.whoami())"

4. Convidar o bot para o servidor

Troque SEU_CLIENT_ID pelo Application ID do seu app:

https://discord.com/oauth2/authorize?client_id=SEU_CLIENT_ID&scope=bot&permissions=1099914357943

Esse valor concede apenas permissões de gestão (sem Administrador): ver audit log, gerenciar servidor, cargos, canais, apelidos e mensagens, expulsar, banir, moderar (castigo), criar convites, ver canais, enviar mensagens e ler histórico.

Depois de autorizar, em Configurações do servidor → Cargos, arraste o cargo do bot para acima dos cargos que ele deve gerenciar — o Discord só permite que o bot altere cargos e membros abaixo dele.

5. Registrar no Claude Code

claude mcp add discord-admin --scope user -- uv --directory /caminho/para/discord-cli run discord-admin-mcp

Abra uma nova sessão e peça, por exemplo: "liste os membros sem cargo" ou "crie o canal #avisos na categoria Comercial".

Outros clientes MCP

{
  "mcpServers": {
    "discord-admin": {
      "command": "uv",
      "args": ["--directory", "/caminho/para/discord-cli", "run", "discord-admin-mcp"],
      "env": { "DISCORD_BOT_TOKEN": "seu-token" }
    }
  }
}

Segurança

  • O token só é lido da variável de ambiente DISCORD_BOT_TOKEN.

  • Quem tem o token controla o bot com todas as permissões dele. Se vazar, use Reset Token no portal imediatamente.

  • Conceda ao bot só as permissões necessárias e posicione o cargo dele com cuidado.

Contribuindo

Issues e pull requests são bem-vindos.

Licença

MIT

Available Tools

28 tools
add_roleC

Atribui um cargo a um membro.

Inputs: role_id (required), user_id (required), guild_id (required), reason.

audit_logC

Últimas entradas do registro de auditoria.

Inputs: guild_id (required), limit, user_id, action_type. Returns: result

ban_memberC

BANE um membro. Confirme com o usuário antes.

Inputs: user_id (required), guild_id (required), reason, delete_message_seconds.

create_channelC

Cria canal. type: 0=texto, 2=voz, 4=categoria, 5=anúncios, 15=fórum.

Inputs: name (required), guild_id (required), type, topic, +2 more.

create_inviteC

Cria convite (max_age em segundos, 0 = nunca expira; max_uses 0 = ilimitado).

Inputs: channel_id (required), max_age, max_uses, temporary.

create_roleD

Cria um cargo.

Inputs: name (required), guild_id (required), color, hoist, +3 more.

delete_channelA

APAGA um canal permanentemente. Confirme com o usuário antes.

Inputs: channel_id (required), reason.

delete_inviteC

Revoga um convite.

Inputs: code (required), reason.

delete_messageC

APAGA uma mensagem. Confirme com o usuário antes.

Inputs: channel_id (required), message_id (required), reason.

delete_roleB

APAGA um cargo. Confirme com o usuário antes.

Inputs: role_id (required), guild_id (required), reason.

edit_channelC

Edita nome, tópico, categoria ou posição de um canal.

Inputs: channel_id (required), name, topic, reason, +2 more.

edit_roleD

Edita um cargo.

Inputs: role_id (required), guild_id (required), name, color, +4 more.

get_guildC

Detalhes de um servidor (nome, dono, contagem aproximada de membros).

Inputs: guild_id (required).

kick_memberC

EXPULSA um membro. Confirme com o usuário antes.

Inputs: user_id (required), guild_id (required), reason.

list_bansC

Lista usuários banidos.

Inputs: guild_id (required). Returns: result

list_channelsC

Lista canais e categorias. type: 0=texto, 2=voz, 4=categoria, 5=anúncios, 15=fórum.

Inputs: guild_id (required). Returns: result

list_invitesC

Lista convites ativos.

Inputs: guild_id (required). Returns: result

list_membersA

Lista membros (até 1000 por chamada; use after com o último id para paginar).

Inputs: guild_id (required), after, limit. Returns: result

list_rolesC

Lista cargos com posição e permissões.

Inputs: guild_id (required). Returns: result

read_messagesB

Lê as mensagens mais recentes de um canal (máx. 100).

Inputs: channel_id (required), limit. Returns: result

remove_roleC

Remove um cargo de um membro.

Inputs: role_id (required), user_id (required), guild_id (required), reason.

search_membersC

Busca membros cujo nome ou apelido começa com query.

Inputs: query (required), guild_id (required), limit. Returns: result

send_messageC

Envia mensagem num canal como o bot.

Inputs: content (required), channel_id (required).

set_channel_permissionB

Define override de permissão no canal. target_type: 0=cargo, 1=membro. allow/deny são bitfields.

Inputs: target_id (required), channel_id (required), target_type (required), deny, +2 more.

set_nicknameB

Define (ou limpa, com null) o apelido de um membro.

Inputs: nick (required), user_id (required), guild_id (required), reason.

timeout_memberB

Silencia (castigo) um membro até a data ISO 8601 (máx. 28 dias). null remove o castigo.

Inputs: user_id (required), guild_id (required), until_iso (required), reason.

unban_memberC

Remove o banimento de um usuário.

Inputs: user_id (required), guild_id (required), reason.

whoamiB

Mostra o usuário do bot e os servidores onde ele está.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    C2.6/5.0

    Scored across 28 tools

    Disambiguation4/5

    Each tool targets a distinct resource+action pair: channel CRUD, role CRUD, role assignment (add_role/remove_role), member moderation (kick/ban/unban/timeout), and message operations are all clearly separated. Minor overlap exists between list_members/search_members and between set_channel_permission and the role tools, but the descriptions make the boundaries clear enough to choose correctly.

    Naming Consistency4/5

    The dominant pattern is a consistent verb_noun snake_case convention (delete_channel, kick_member, create_role, delete_invite, send_message). Two outliers — 'whoami' and 'audit_log' — break the pattern, but everything else is predictable.

    Tool Count3/5

    28 tools is slightly above the comfortable range, and the surface covers many sub-domains (members, channels, roles, messages, invites, moderation). Nearly every tool does correspond to a real, distinct Discord operation, so it is heavy but not padded.

    Completeness4/5

    Core lifecycles are covered: channel create/edit/delete/list, role create/edit/delete plus assign/remove, member kick/ban/unban/timeout/nickname, message read/send/delete, and invite create/list/delete, plus audit log and permission overrides. Gaps include message edit/pin, single-member fetch (get_member), and guild-level settings, which agents would have to work around.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that enables LLMs to control Discord servers via a bot token, providing comprehensive management tools for messages, members, roles, channels, permissions, and more.
      67
      81 npm
      MIT
    • F
      license
      C
      quality
      D
      maintenance
      An MCP server that exposes Discord bot actions as tools for LLM clients.
      29
      1
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server over the real Discord REST API: 5 read-only tools plus 7 write tools gated off by default behind DISCORD_MCP_ENABLE_WRITE.
      12
      1
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Local MCP server for inspecting and managing an allowlisted Discord server via Discord's REST API, with safety modes, idempotent JSON blueprints, and destructive-operation safeguards.
      27
      1
      MIT