discord-mcp
# discord-mcp
An MCP server for managing Discord servers through any [MCP-compatible](https://modelcontextprotocol.io) AI client. Once connected, you just describe what you want:
> **You:** create a channel called `dev-chat` under the Engineering category
> **You:** make a role called Moderator that can kick and ban, then give it to @alex
> **You:** post "deploy is live 🚀" in #announcements
> **You:** make #staff-only private — hide it from @everyone but let the Staff role in
Your AI client talks to this server over [MCP](https://modelcontextprotocol.io), which translates requests into real Discord API calls via [discord.js](https://discord.js.org).
---
## What it can do
| Area | Tools |
| --- | --- |
| **Servers** | `list_servers`, `get_server_info` |
| **Channels** | `list_channels`, `create_channel`, `edit_channel`, `delete_channel` |
| **Messages** | `send_message`, `send_embed`, `read_messages`, `edit_message`, `delete_message` |
| **Roles** | `list_roles`, `create_role`, `delete_role`, `assign_role`, `remove_role` |
| **Members** | `list_members`, `get_member`, `kick_member`, `ban_member`, `timeout_member` |
| **Channel permissions** | `list_channel_permissions`, `set_channel_permission`, `remove_channel_permission` |
| **Threads** | `create_thread`, `list_threads`, `archive_thread`, `unarchive_thread` |
| **Invites** | `create_invite`, `list_invites`, `delete_invite` |
| **Scheduled events** | `create_event`, `list_events`, `delete_event` |
| **Webhooks** | `create_webhook`, `list_webhooks`, `delete_webhook`, `send_webhook_message` |
| **Emoji & stickers** | `list_emojis`, `create_emoji`, `delete_emoji`, `list_stickers` |
---
## Setup
### 1. Create the Discord bot
1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) →
**New Application**, give it a name, **Create**.
2. Open the **Bot** tab → **Reset Token** → **Copy**. This is your `DISCORD_TOKEN`.
3. *(Optional)* To **list members** or **read message text**, scroll to
**Privileged Gateway Intents** and enable **Server Members Intent** and
**Message Content Intent**. You'll also set `DISCORD_PRIVILEGED_INTENTS=true` later.
Skip this if you only need to create channels/roles and send messages.
### 2. Invite the bot to your server
1. In the Developer Portal → **OAuth2** → **URL Generator**.
2. Under **Scopes**, check **`bot`**.
3. Under **Bot Permissions**, pick what you want it to do. For full management the simplest
choice is **Administrator**.
4. Open the generated URL, choose your server, **Authorize**.
5. **Important — role hierarchy:** in **Server Settings → Roles**, drag the bot's role
**above** the roles/members you want it to manage.
### 3. Install and build
Requires **Node.js 18+** (20+ recommended).
```bash
git clone https://github.com/grooving6/discord-mcp.git
cd discord-mcp
npm install
npm run build
```
Then create your `.env` from the template and fill in the token:
### 4. Connect it to your MCP client
**Option A — project config (recommended).** This repo includes a [`.mcp.json`](./.mcp.json).
Run your MCP client *from this directory* and it picks it up automatically.
**Option B — global registration (Claude Code example).** Use an absolute path to make the
server available in any session:
```bash
claude mcp add discord -- node /absolute/path/to/discord-mcp/dist/index.js
```
---TDQS
Scored across 55 tools
Each tool targets a distinct action/resource combination (e.g., ban_member vs kick_member, set_channel_permission vs remove_channel_permission). Descriptions clearly delineate boundaries, and even similar-sounding tools like server_mute and timeout_member specify different contexts (voice vs temporary).
All 55 tools follow a consistent verb_noun snake_case pattern (e.g., create_channel, edit_role, delete_emoji). There are no deviations or mixed conventions, making the surface predictable for an agent.
55 tools is on the high side for a typical MCP server, even for a broad domain like Discord. While the scope covers many server management operations, the count feels heavy (borderline over 25 tools per the calibration scale) and may introduce cognitive load.
The tool set covers most core Discord server operations: CRUD for channels, roles, events, invites, webhooks; member management; messaging; permissions; threads; and audit logs. However, it lacks update operations for emoji, events, and stickers, and missing create/delete for stickers, which are minor but notable gaps.