@striderlabs/mcp-discord
# @striderlabs/mcp-discord
An MCP (Model Context Protocol) server for Discord, enabling AI assistants like Claude to interact with Discord servers and channels via the Discord API.
## Prerequisites
You need a **Discord Bot Token**. This connector uses the Discord.js library to communicate with Discord's official API — not browser automation.
### Creating a Discord Bot
1. Go to the [Discord Developer Portal](https://discord.com/developers/applications)
2. Click **New Application** and give it a name
3. Go to the **Bot** section and click **Add Bot**
4. Under **Token**, click **Reset Token** and copy the token
5. Under **Privileged Gateway Intents**, enable:
- **Server Members Intent**
- **Message Content Intent**
6. Go to **OAuth2 > URL Generator**, select scopes: `bot`
7. Select bot permissions: `Read Messages/View Channels`, `Send Messages`, `Read Message History`
8. Use the generated URL to invite the bot to your server(s)
## Installation
```bash
npm install @striderlabs/mcp-discord
```
## Configuration
Set the `DISCORD_TOKEN` environment variable to your bot token:
```bash
export DISCORD_TOKEN=your_bot_token_here
```
## Usage with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-discord"],
"env": {
"DISCORD_TOKEN": "your_bot_token_here"
}
}
}
}
```
## Available Tools
### `get_servers`
List all Discord servers (guilds) the bot is a member of.
**No parameters required.**
### `get_channels`
List channels in a Discord server.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `server_id` | string | Yes | Discord server (guild) ID |
| `channel_type` | string | No | Filter: `text`, `voice`, `category`, or `all` (default: `text`) |
### `get_messages`
Fetch recent messages from a channel.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `channel_id` | string | Yes | Discord channel ID |
| `limit` | number | No | Number of messages to fetch (1–100, default: 50) |
| `before_message_id` | string | No | Fetch messages before this ID (pagination) |
### `send_message`
Send a message to a Discord channel.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `channel_id` | string | Yes | Discord channel ID |
| `content` | string | Yes | Message text to send |
| `reply_to_message_id` | string | No | Reply to a specific message ID |
### `get_dms`
Get direct message conversations the bot has had.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | number | No | Messages per conversation (1–50, default: 20) |
> **Note:** DMs are only available after the bot has received at least one DM from a user.
### `search_messages`
Search for messages containing specific text within a server.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `server_id` | string | Yes | Discord server ID |
| `query` | string | Yes | Text to search for |
| `channel_id` | string | No | Limit search to a specific channel |
| `limit` | number | No | Max results (1–100, default: 25) |
> **Note:** Search scans recent messages (up to 100 per channel). For historical search, use Discord's built-in search.
## Getting Channel and Server IDs
Enable **Developer Mode** in Discord (Settings > Advanced > Developer Mode), then right-click any server or channel to copy its ID.
## License
MIT
TDQS
Scored across 6 tools
The tools are mostly distinct: get_servers, get_channels, get_messages, send_message, get_dms, and search_messages each target a different resource. There is minor overlap between get_messages and search_messages, and get_dms could be confused with channel message retrieval, but descriptions clarify the intended use.
Most tools follow a consistent get_* pattern, with send_message and search_messages being logical action-based exceptions. The use of 'dms' instead of 'direct_messages' is a minor inconsistency but does not hurt readability.
Six tools is a well-scoped set for a Discord MCP server covering server discovery, channel listing, message reading, searching, sending, and DM access. No tool feels redundant or unnecessary.
The core read/send workflows for Discord are covered: list servers, list channels, fetch messages, search messages, send messages, and read DMs. Minor gaps exist such as no direct message sending or message editing/deletion, but the main use cases are supported.