Skip to main content
Glama

MCP-Discord

MCP Toplist Docker Hub

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

Overview

MCP-Discord provides the following Discord-related functionalities:

  • Login to Discord bot

  • List servers the bot is a member of

  • Get server information

  • List members and inspect member details

  • List, create, edit, delete, assign, and remove roles

  • Search messages in a server

  • Read, edit, and delete channel messages

  • Send messages to specified channels

  • Retrieve forum channel lists

  • Create, update, delete, and reply to forum posts

  • List forum threads and manage forum tags

  • Create, edit, and delete text, forum, voice channels, and categories

  • Set and remove channel permission overrides

  • Add/remove message reactions

  • Create/edit/delete/use webhooks

Related MCP server: MCP-Discord

Table of Contents

Prerequisites

Note:
According to Discord's security model, a bot can only access information from servers it has been explicitly added to.
If you want to use this MCP server to access a specific Discord server, you must add the bot to that server first.
Use the invite link below to add the bot to your target server.

Installation

Installing via NPM

Set DISCORD_TOKEN in the environment, then start the server:

export DISCORD_TOKEN=your_discord_bot_token
npx mcp-discord

On Windows PowerShell:

$env:DISCORD_TOKEN="your_discord_bot_token"
npx mcp-discord

The server reads that variable itself. An environment variable is still visible to some local readers; this form keeps the token out of the process argument list.

--config still accepts a raw token or JSON with DISCORD_TOKEN. The value is part of the process arguments, so tools that can read the process list will show it. Prefer the environment variable above.

For more details, you can check out the NPM Package.

Installing via Smithery

To install mcp-discord automatically via Smithery

Installing via Docker

You can run mcp-discord using Docker. The Docker images are automatically built and published to Docker Hub.

Docker Hub Repository: barryy625/mcp-discord

Docker uses the streamable HTTP server by default via build/app.js.

# Pull the latest image
docker pull barryy625/mcp-discord:latest

# Run HTTP server on port 8080
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 8080:8080 barryy625/mcp-discord:latest

# Override the listening port if needed
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000

Available Tags:

  • latest - Latest stable version from main branch

  • v1.3.8, etc. - Specific version releases

Manual Installation

# 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. The server supports two transport methods: stdio and streamable HTTP.

Transport Methods

  1. stdio (Default)

    • Traditional stdio transport for basic usage

    • Suitable for simple integrations

  2. streamable HTTP

    • HTTP-based transport for more advanced scenarios

    • Supports stateless operation

    • Configurable port number

Configuration Options

You can provide configuration in two ways:

  1. Environment variables (preferred). The token stays out of the process argument list:

export DISCORD_TOKEN=your_discord_bot_token
node build/index.js
  1. Command line arguments. The value after --config is visible to process listings and monitoring tools that can read arguments:

# For stdio transport (default)
node build/index.js --config "your_discord_bot_token"

# For streamable HTTP transport
node build/app.js --transport http --port 3000 --config "your_discord_bot_token"

Usage with Claude/Cursor

1. Use Stdio Transport with Claude/Cursor

Use build/index.js when your MCP client expects a command-based stdio server.

Claude Desktop / Claude Code

{
    "mcpServers": {
        "discord": {
            "command": "node",
            "args": [
                "path/to/mcp-discord/build/index.js"
            ],
            "env": {
                "DISCORD_TOKEN": "your_discord_bot_token"
            }
        }
    }
}

Cursor

{
    "mcpServers": {
        "discord": {
            "command": "node",
            "args": [
                "path/to/mcp-discord/build/index.js"
            ],
            "env": {
                "DISCORD_TOKEN": "your_discord_bot_token"
            }
        }
    }
}

This is the recommended setup for local command-based MCP clients.

2. Self-Host the Streamable HTTP Server

Use build/app.js when you want to run mcp-discord as an HTTP MCP server.

Run with Node.js

DISCORD_TOKEN=your_discord_bot_token node build/app.js --transport http --port 3000

On Windows PowerShell:

$env:DISCORD_TOKEN="your_discord_bot_token"
node build/app.js --transport http --port 3000

Run with Docker

docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000

Once started, the MCP HTTP endpoint is:

http://localhost:3000/mcp

3. Connect to a Hosted HTTP MCP Server

If you already host mcp-discord elsewhere, point your MCP client at the server's /mcp endpoint instead of launching build/app.js as a command.

Example endpoint:

https://your-server.example.com/mcp

Important notes:

  • build/app.js starts an HTTP server. It does not speak stdio.

  • build/index.js is the correct entrypoint for command-based stdio MCP clients.

  • For hosted HTTP usage, configure your MCP client to connect to the HTTP endpoint URL provided by your deployment.

  • The exact HTTP-client configuration format depends on the MCP client you use.

Tools Documentation

Basic Functions

  • discord_login: Login to Discord using the configured token

  • discord_list_servers: List all Discord servers the bot is a member of

  • 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_create_forum_channel: Create a forum channel

  • discord_create_voice_channel: Create a voice channel

  • discord_edit_channel: Edit a channel name, topic, parent category, or position

  • discord_delete_channel: Delete a channel

  • discord_create_category: Create a channel category

  • discord_edit_category: Edit a channel category

  • discord_delete_category: Delete a channel category

  • discord_set_channel_permissions: Set permission overrides for a role or user on a channel/category

  • discord_remove_channel_permissions: Remove permission overrides from a channel/category

Forum Functions

  • discord_get_forum_channels: Get a list of forum channels

  • discord_create_forum_post: Create a forum post (optionally pinned to the top of the channel)

  • discord_get_forum_post: Get a forum post

  • discord_list_forum_threads: List active and archived threads in a forum channel

  • discord_reply_to_forum: Reply to a forum post

  • discord_get_forum_tags: Get all available tags for a forum channel

  • discord_set_forum_tags: Replace the available tags for a forum channel

  • discord_update_forum_post: Update a forum post's title, tags, archived state, locked state, or pinned state

  • discord_delete_forum_post: Delete a forum post

Messages and Reactions

  • discord_search_messages: Search messages in a server

  • discord_read_messages: Read channel messages (supports before, after, around params — accepts snowflake IDs or ISO 8601 dates like "2025-03-01T00:00:00Z")

  • discord_edit_message: Edit a bot-authored message

  • 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

  • discord_pin_message: Pin a message to its channel (max 50 pins per channel)

  • discord_unpin_message: Remove a message from its channel's pinned messages

  • discord_list_pinned_messages: List a channel's pinned messages, newest pin first

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

Role Management

  • discord_list_roles: List all roles in a server

  • discord_create_role: Create a role with color, hoist, mentionable, and permission options

  • discord_edit_role: Edit an existing role

  • discord_delete_role: Delete a role

  • discord_assign_role: Assign a role to a member

  • discord_remove_role: Remove a role from a member

Member Management

  • discord_list_members: List members in a server with roles

  • discord_get_member: Get detailed information about a specific member

Development

# Development mode
npm run dev

License

MIT License

Available Tools

46 tools
discord_add_multiple_reactionsB

Adds multiple emoji reactions to a Discord message at once

Inputs: emojis (required), channelId (required), messageId (required).

discord_add_reactionC

Adds an emoji reaction to a specific Discord message

Inputs: emoji (required), channelId (required), messageId (required).

discord_assign_roleC

Assigns a role to a member in a Discord server

Inputs: roleId (required), userId (required), guildId (required), reason.

discord_create_categoryC

Creates a new category in a Discord server.

Inputs: name (required), guildId (required), reason, position.

discord_create_forum_channelA

Creates a new forum channel in a Discord server, optionally under a category

Inputs: name (required), guildId (required), topic, categoryId.

discord_create_forum_postB

Creates a new post in a Discord forum channel with optional tags

Inputs: title (required), content (required), forumChannelId (required), tags, +1 more.

discord_create_roleB

Creates a new role in a Discord server

Inputs: name (required), guildId (required), color, hoist, +3 more.

discord_create_text_channelA

Creates a new text channel in a Discord server with an optional topic and parent category

Inputs: guildId (required), channelName (required), topic, categoryId.

discord_create_voice_channelB

Creates a new voice channel in a Discord server with an optional parent category

Inputs: guildId (required), channelName (required), reason, userLimit, +1 more.

discord_create_webhookC

Creates a new webhook for a Discord channel

Inputs: name (required), channelId (required), avatar, reason.

discord_delete_categoryB

Deletes a Discord category by ID.

Inputs: categoryId (required), reason.

discord_delete_channelB

Deletes a Discord channel with an optional reason

Inputs: channelId (required), reason.

discord_delete_forum_postC

Deletes a forum post or thread with an optional reason

Inputs: threadId (required), reason.

discord_delete_messageB

Deletes a specific message from a Discord text channel

Inputs: channelId (required), messageId (required), reason.

discord_delete_roleA

Deletes a role from a Discord server

Inputs: roleId (required), guildId (required), reason.

discord_delete_webhookC

Deletes an existing webhook for a Discord channel

Inputs: webhookId (required), reason, webhookToken.

discord_edit_categoryB

Edits an existing Discord category (name and position).

Inputs: categoryId (required), name, reason, position.

discord_edit_channelA

Edits a Discord channel's name, topic, parent category, or position

Inputs: channelId (required), name, topic, reason, +2 more.

discord_edit_messageA

Edits a message previously sent by the bot. Only messages authored by the bot can be edited.

Inputs: content (required), channelId (required), messageId (required).

discord_edit_roleB

Edits an existing role in a Discord server

Inputs: roleId (required), guildId (required), name, color, +5 more.

discord_edit_webhookC

Edits an existing webhook for a Discord channel

Inputs: webhookId (required), name, avatar, reason, +2 more.

discord_get_forum_channelsA

Lists all forum channels in a specified Discord server (guild)

Inputs: guildId (required).

discord_get_forum_postB

Retrieves details about a forum post including its messages

Inputs: threadId (required).

discord_get_forum_tagsA

Gets all available tags for a Discord forum channel, including tag IDs, names, and emoji

Inputs: forumChannelId (required).

discord_get_memberB

Gets detailed information about a specific member in a Discord server

Inputs: userId (required), guildId (required).

discord_get_reaction_usersA

Lists the users who reacted with a specific emoji to a Discord message. Uses REST fetch and does not require Gateway intents. Returns up to 100 users per call.

Inputs: emoji (required), channelId (required), messageId (required), limit.

discord_get_server_infoB

Retrieves detailed information about a Discord server including channels and member count

Inputs: guildId (required).

discord_list_forum_threadsA

Lists all threads (posts) in a Discord forum channel, including both active and archived threads

Inputs: forumChannelId (required), limit, includeArchived.

discord_list_membersB

Lists members in a Discord server with their roles

Inputs: guildId (required), after, limit.

discord_list_pinned_messagesA

Lists the pinned messages of a channel, newest pin first.

Inputs: channelId (required), limit.

discord_list_rolesA

Lists all roles in a Discord server with their properties

Inputs: guildId (required).

discord_list_serversA

Lists all Discord servers the bot is a member of

Inputs: no named parameters.

discord_loginB

Logs in to Discord using the configured token

Inputs: token.

discord_pin_messageB

Pins a message to its channel. A channel can hold at most 50 pinned messages.

Inputs: channelId (required), messageId (required), reason.

discord_read_messagesA

Retrieves messages from a Discord text channel. Supports date-based filtering via before/after/around params (accepts snowflake IDs or ISO 8601 dates).

Inputs: channelId (required), after, limit, around, +1 more.

discord_remove_channel_permissionsA

Removes all permission overrides for a role or user on a channel or category

Inputs: roleId (required), channelId (required), reason.

discord_remove_reactionB

Removes a specific emoji reaction from a Discord message

Inputs: emoji (required), channelId (required), messageId (required), userId.

discord_remove_roleA

Removes a role from a member in a Discord server

Inputs: roleId (required), userId (required), guildId (required), reason.

discord_reply_to_forumB

Adds a reply to an existing forum post or thread

Inputs: message (required), threadId (required).

discord_search_messagesC

Searches for messages in a Discord server

Inputs: guildId (required), has, limit, maxId, +10 more.

discord_sendA

Sends a message to a specified Discord text channel. Optionally reply to another message by providing its message ID.

Inputs: message (required), channelId (required), replyToMessageId.

discord_send_webhook_messageB

Sends a message to a Discord channel using a webhook

Inputs: content (required), webhookId (required), webhookToken (required), threadId, +2 more.

discord_set_channel_permissionsA

Sets permission overrides for a role or user on a channel or category

Inputs: roleId (required), channelId (required), deny, allow, +1 more.

discord_set_forum_tagsA

Sets the available tags for a Discord forum channel. Replaces all existing tags.

Inputs: tags (required), forumChannelId (required).

discord_unpin_messageA

Removes a message from its channel's pinned messages.

Inputs: channelId (required), messageId (required), reason.

discord_update_forum_postB

Updates a forum post's title, applied tags, archived status, locked status, or pinned status. Tags can be specified by name or ID.

Inputs: threadId (required), name, tags, locked, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 46 tools

    Disambiguation3/5

    Multiple tools have overlapping purposes, such as 'discord_read_messages' vs 'discord_search_messages' and 'discord_reply_to_forum' vs 'discord_create_forum_post', which could confuse agents. The distinction between 'get', 'list', and 'read' is not always clear.

    Naming Consistency4/5

    All tools follow a consistent 'discord_verb_object' pattern, making the naming predictable. However, there is some verb variation (get, list, read, search) that slightly reduces strict consistency, but overall it is well-structured.

    Tool Count1/5

    With 46 tools, this far exceeds the recommended 3-15 scope for a well-designed MCP server. The high number of tools likely overwhelms agents and increases selection complexity, making it inappropriate for most use cases.

    Completeness2/5

    Despite the large number of tools, there are notable gaps such as missing getters for channels, webhooks, and roles (e.g., 'get_channel', 'list_webhooks'). Core operations like updating a message or deleting a webhook are present, but the surface is uneven and overfocused on creation/deletion.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Discord MCP server that enables AI assistants to interact with Discord platforms, providing functionalities like sending messages, managing channels, creating forum posts, and handling webhooks.
      21
      842 npm
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Discord Model Context Protocol server that enables AI assistants to interact with Discord by sending messages, managing channels, handling forum posts, managing webhooks, and processing reactions.
      22
      84 npm
      5
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Discord MCP server that enables AI assistants to interact with the Discord platform, providing features like message sending, channel management, forum operations, reactions, and webhook management.
      22
      842 npm
      MIT