Skip to main content
Glama
markswendsen-code

@striderlabs/mcp-discord

README.md
# @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

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues