Skip to main content
Glama
jar285

MCP-Discord

by jar285
README.md
# MCP-Discord
[![smithery badge](https://smithery.ai/badge/@barryyip0625/mcp-discord)](https://smithery.ai/server/@barryyip0625/mcp-discord) ![](https://badge.mcpx.dev?type=server 'MCP Server')

A Discord MCP (Model Context Protocol) server that enables AI assistants to interact with the Discord platform.

<a href="https://glama.ai/mcp/servers/@barryyip0625/mcp-discord">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@barryyip0625/mcp-discord/badge" alt="MCP-Discord MCP server" />
</a>

## Overview

MCP-Discord provides the following Discord-related functionalities:

- Login to Discord bot
- Get server information
- Read/delete channel messages
- Send messages to specified channels
- Retrieve forum channel lists
- Create/delete/reply to forum posts
- Create/delete text channels
- Add/remove message reactions
- Create/edit/delete/use webhooks

## Table of Contents

- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Configuration](#configuration)
- [Tools Documentation](#tools-documentation)
  - [Basic Functions](#basic-functions)
  - [Channel Management](#channel-management)
  - [Forum Functions](#forum-functions)
  - [Messages and Reactions](#messages-and-reactions)
  - [Webhook Management](#webhook-management)
- [Development](#development)
- [License](#license)

## Prerequisites

- Node.js (v16.0.0 or higher)
- npm (v7.0.0 or higher)
- A Discord bot with appropriate permissions
  - Bot token (obtainable from the [Discord Developer Portal](https://discord.com/developers/applications))
  - Message Content Intent enabled
  - Server Members Intent enabled
  - Presence Intent enabled
- Permissions in your Discord server:
  - Send Messages
  - Create Public Threads
  - Send Messages in Threads
  - Manage Threads
  - Manage Channels
  - Add Reactions

## Installation

### Installing via Smithery

To install mcp-discord for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@barryyip0625/mcp-discord):

```bash
npx -y @smithery/cli install @barryyip0625/mcp-discord --client claude
```

### Manual Installation
```bash
# Clone the repository
git clone https://github.com/barryyip0625/mcp-discord.git
cd mcp-discord

# Install dependencies
npm install

# Compile TypeScript
npm run build
```

## Configuration

A Discord bot token is required for proper operation. You can provide it in two ways:

1. Environment variables:
```
DISCORD_TOKEN=your_discord_bot_token
DEFAULT_SERVER_ID=your_default_server_id  # Optional
DEFAULT_CHANNEL_ID=your_default_channel_id  # Optional
```

2. Using the `--config` parameter when launching:
```
node path/to/mcp-discord/build/index.js --config "{\"DISCORD_TOKEN\":\"your_discord_bot_token\"}"
```

### Enhanced Startup Script

The project includes an enhanced startup script (`start-discord.js`) that provides better debugging and error handling:

- Loads environment variables from the .env file
- Sets default server and channel IDs if not provided
- Redirects console.log to stderr to avoid JSON parsing issues in Claude Desktop
- Tests the Discord connection directly before starting the MCP server
- Provides detailed error information if anything goes wrong

To use this script:
```bash
node start-discord.js
```

## Usage with Claude/Cursor
- Claude
  
    ```json
    {
        "mcpServers": {
            "discord": {
                "command": "node",
                "args": [
                    "path/to/mcp-discord/start-discord.js"
                ],
                "env": {
                    "DISCORD_TOKEN": "your_discord_bot_token",
                    "DEFAULT_SERVER_ID": "your_default_server_id",
                    "DEFAULT_CHANNEL_ID": "your_default_channel_id"
                }
            }
        }
    }
    ```

- Cursor

    ```json
    {
        "mcpServers": {
            "discord": {
                "command": "cmd",
                "args": [
                    "/c",
                    "node",
                    "path/to/mcp-discord/start-discord.js"
                ],
                "env": {
                    "DISCORD_TOKEN": "your_discord_bot_token",
                    "DEFAULT_SERVER_ID": "your_default_server_id",
                    "DEFAULT_CHANNEL_ID": "your_default_channel_id"
                }
             }
         }
    }
    ```

## Tools Documentation

### Basic Functions

- `discord_login`: Login to Discord
- `discord_list_guilds`: List all available Discord servers (guilds) with their channels
- `discord_send`: Send a message to a specified channel
- `discord_get_server_info`: Get Discord server information

### Channel Management

- `discord_create_text_channel`: Create a text channel
- `discord_delete_channel`: Delete a channel

### Forum Functions

- `discord_get_forum_channels`: Get a list of forum channels
- `discord_create_forum_post`: Create a forum post
- `discord_get_forum_post`: Get a forum post
- `discord_reply_to_forum`: Reply to a forum post
- `discord_delete_forum_post`: Delete a forum post

### Messages and Reactions

- `discord_read_messages`: Read channel messages
- `discord_add_reaction`: Add a reaction to a message
- `discord_add_multiple_reactions`: Add multiple reactions to a message
- `discord_remove_reaction`: Remove a reaction from a message
- `discord_delete_message`: Delete a specific message from a channel

### Webhook Management

- `discord_create_webhook`: Creates a new webhook for a Discord channel
- `discord_send_webhook_message`: Sends a message to a Discord channel using a webhook
- `discord_edit_webhook`: Edits an existing webhook for a Discord channel
- `discord_delete_webhook`: Deletes an existing webhook for a Discord channel

## Development

```bash
# Development mode
npm run dev
```

## License

[MIT License](https://github.com/barryyip0625/mcp-discord?tab=MIT-1-ov-file)

TDQS

B3.2/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific Discord resources like channels, messages, reactions, webhooks, and forum posts. However, discord_send and discord_send_webhook_message could be slightly confusing as both send messages, though they use different mechanisms. The descriptions help clarify this distinction.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with a clear discord_ prefix and descriptive verb_noun structure (e.g., discord_create_text_channel, discord_delete_message). The only exception is 'test', which is a simple utility tool and doesn't disrupt the overall pattern.

Tool Count3/5

With 21 tools, the count is on the higher side for a Discord integration, bordering on heavy. While it covers many operations, some tools might be redundant or overly granular (e.g., separate add_reaction and add_multiple_reactions). A more streamlined set could improve usability without losing functionality.

Completeness4/5

The toolset provides comprehensive coverage for core Discord operations, including CRUD for channels, messages, webhooks, and forum posts, plus server info and login. Minor gaps exist, such as no tools for editing messages or managing roles, but agents can likely work around these for most common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues