Skip to main content
Glama
discord-admin-mcp

discord-admin-mcp

by pedroaop
README.md
# discord-admin-mcp

Servidor [MCP](https://modelcontextprotocol.io) 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.

## Requisitos

- Python 3.11+
- [uv](https://docs.astral.sh/uv/)

## 1. Criar o bot

1. Acesse o [Discord Developer Portal](https://discord.com/developers/applications) 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:

```bash
setx DISCORD_BOT_TOKEN "seu-token"
```

Linux/macOS:

```bash
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

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

Teste a conexão:

```bash
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

```bash
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

```json
{
  "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](LICENSE)

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