Skip to main content
Glama

📖 Overview

Discp is a production-grade Discord MCP server written in TypeScript. It bridges AI assistants to Discord with 117 native tools, supporting both User/Alt Accounts and Bot Accounts seamlessly without requiring bot verification or developer portal setup.

🛡️ Anti-Abuse Human Pacing (Zero Warning Flags)

To prevent accounts from triggering Discord security checkpoints, rate-limits, or password resets, Discp enforces natural human pacing (1.2s – 2.5s randomized intervals) across sensitive write operations (creating channels, roles, categories, webhooks, and assigning permissions).

🎨 Creative Variation (No Repetitive Designs)

Discp equips AI models with tools to discover fresh aesthetic symbols and channel architectures dynamically:

  • get_discord_symbols: Curated offline library of dividers, channel prefixes, role badges, sparkles, and layout templates.

  • search_discord_symbols: Searches online databases (emojicombos, emojidb) live on demand so every server gets unique aesthetics.

  • get_discord_syntax_guide: Complete cheatsheet of Discord markdown techniques, timestamps, mentions, and internal navigation links.


Related MCP server: MCP Discord

🛠️ Complete Tool Catalog (117 Tools)

Domain

Count

Highlight Tools

Server Operations

11

list_servers, get_server_info, modify_server_settings, create_server, setup_community_server, get_audit_logs, modify_server_widget, prune_members

Channels & Categories

14

create_text_channel, create_voice_channel, create_stage_channel, create_category, edit_channel, edit_category, delete_channel, delete_category, list_channels, list_channels_in_category, find_channel, get_channel_info, move_channel

Permissions

4

list_channel_permissions, upsert_role_channel_permissions, upsert_member_channel_permissions, delete_channel_permission

Messages & Reactions

12

send_message, edit_message, delete_message, read_messages, bulk_delete_messages, pin_message, unpin_message, list_pinned_messages, add_reaction, remove_reaction, clear_reactions, get_message_attachments

Formatting & Mentions

3

format_discord_mention, resolve_discord_mentions, get_discord_syntax_guide

Symbols & Aesthetics

2

get_discord_symbols, search_discord_symbols

Users & Direct Messages

6

get_user_info, get_user_id_by_name, send_direct_message, edit_direct_message, delete_direct_message, read_direct_messages

Members & Moderation

11

kick_member, ban_member, unban_member, timeout_member, remove_timeout, set_member_nickname, list_bans, get_ban_info, list_members, search_members, get_member_info

Roles

7

list_roles, get_role_info, create_role, edit_role, delete_role, assign_role, remove_role

AutoModeration

5

list_automod_rules, get_automod_rule, create_automod_rule, edit_automod_rule, delete_automod_rule

Interactive Polls

3

create_poll, end_poll, get_poll_answer_voters

Threads

6

create_thread, modify_thread, join_thread, leave_thread, list_active_threads

Forums

7

create_forum_channel, edit_forum_channel, list_forum_channels, get_forum_channel_info, list_forum_tags, create_forum_post, list_forum_posts

Voice Channels

4

move_voice_member, disconnect_voice_member, modify_voice_state

Scheduled Events

5

create_scheduled_event, edit_scheduled_event, delete_scheduled_event, list_scheduled_events, get_scheduled_event_users

Invites

4

create_invite, list_invites, delete_invite, get_invite_details

Webhooks

4

create_webhook, delete_webhook, list_webhooks, send_webhook_message

Emojis & Stickers

8

list_emojis, get_emoji_details, create_emoji, edit_emoji, delete_emoji, list_stickers, create_sticker, delete_sticker

Bot Utilities

2

get_bot_info, generate_bot_invite_url


⚡ Quickstart

1. Clone & Build

git clone https://github.com/SharimAli/discp.git
cd discp
npm install
npm run build

2. Environment Configuration

Copy .env.example to .env:

# 'user' (for user/alt account token) or 'bot' (for Discord bot token)
DISCORD_ACCOUNT_TYPE=user

# Your Token
DISCORD_TOKEN=your_token_here

# Default Server ID (Optional: commands will default to this guild)
DISCORD_GUILD_ID=your_default_server_id_here

🔌 Client Integration Guides

1. Cursor IDE

In ~/.cursor/mcp.json or .cursor/mcp.json:

{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}

2. Claude (Desktop & Code CLI)

  • Claude Desktop: Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}
  • Claude Code CLI:

claude mcp add discp node /path/to/discp/dist/index.js \
  --env DISCORD_ACCOUNT_TYPE=user \
  --env DISCORD_TOKEN="YOUR_DISCORD_TOKEN" \
  --env DISCORD_GUILD_ID="YOUR_SERVER_ID"

3. Google Antigravity IDE

In ~/.gemini/config/mcp_config.json:

{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["C:\\path\\to\\discp\\dist\\index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}

4. OpenCode Desktop / OpenClaw

In opencode.json:

{
  "mcp": {
    "servers": {
      "discp": {
        "command": "node",
        "args": ["/path/to/discp/dist/index.js"],
        "env": {
          "DISCORD_ACCOUNT_TYPE": "user",
          "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
          "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
        }
      }
    }
  }
}

5. Other Editors (VS Code / Cline / Roo Code / Continue / Windsurf)

Use the standard MCP server definition in your tool's settings (cline_mcp_settings.json, ~/.codeium/windsurf/mcp_config.json, or .continue/config.json):

{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}

6. HTTP / SSE Mode (n8n, Flowise, Remote AI)

Run Discp as a persistent network microservice:

export MCP_TRANSPORT=http
export PORT=8085
node dist/index.js
  • SSE Stream: http://localhost:8085/sse

  • Messages: http://localhost:8085/messages

  • Health Check: http://localhost:8085/health


💡 Discord Mention & Formatting Syntax

Component

Syntax

Rendered Result

Channel Pill

<#1555613673920270347>

Clickable #welcome-and-faq link

Role Pill

<@&1555613563899347044>

Colored @Moderator badge

User Pill

<@1188806930802675745>

Clickable @coded2233 profile

Dynamic Time

<t:1727888400:R>

Relative countdown (in 2 days, 3 hours ago)

Server Tab

<id:browse> / <id:guide>

Direct link to Server Channels or Onboarding

Subtext

-# Small muted note

Reduced-size secondary text

Spoiler

||hidden text||

Click-to-reveal black bar

Tip: Enable resolveMentions: true in send_message or edit_message to automatically convert #general and @Moderator into native Discord clickable pills!


When designing servers, AI assistants are encouraged to consult:


📜 License

Distributed under the MIT License. See LICENSE for more details.


⚠️ Disclaimer

  • Discord Terms of Service: Automating user accounts (selfbots) is against Discord's Terms of Service and Community Guidelines. While Discp integrates natural human pacing (1.2s – 2.5s randomized intervals) to safeguard accounts, using user account tokens is done strictly at your own discretion and risk.

  • Limitation of Liability: The authors and contributors assume no responsibility or liability for any account terminations, suspensions, rate limits, or sanctions enforced by Discord.

  • Non-Affiliation: Discp is an independent open-source project and is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Discord Inc. or its affiliates.

Available Tools

117 tools
add_reactionC

Add an emoji reaction to a message

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

assign_roleC

Assign a role to a user in the server

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

ban_memberC

Ban a user from the server and optionally purge recent messages (0 to 604800 seconds = 7 days)

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

bulk_delete_messagesA

Bulk delete (purge) multiple recent messages in a channel (max 100, messages must be < 14 days old)

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

clear_reactionsC

Remove all reactions from a message

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

create_automod_ruleC

Create a new AutoModeration rule (e.g. block bad words, spam, or mention raids)

Inputs: name (required), reason, guildId, keywordsCsv, +6 more.

create_categoryC

Create a channel category in a server

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

create_emojiA

Upload a new custom emoji to the server from an image URL or base64 data URI (max 256KB)

Inputs: name (required), attachmentUrlOrBase64 (required), reason, guildId, +1 more.

create_forum_channelC

Create a new forum channel for community discussions and threads

Inputs: name (required), nsfw, topic, reason, +4 more.

create_forum_postC

Create a new forum post (thread) with an initial message and optional tags

Inputs: title (required), message (required), channelId (required), tagIdsCsv.

create_inviteC

Create an invite link for a channel with custom expiration and usage limits

Inputs: channelId (required), maxAge, reason, unique, +2 more.

create_pollC

Create an official interactive Discord poll in a channel

Inputs: question (required), channelId (required), answersCsv (required), durationHours, +1 more.

create_roleC

Create a new role on the server with custom properties

Inputs: name (required), color, hoist, reason, +4 more.

create_scheduled_eventC

Schedule a server event (Stage, Voice, or External location)

Inputs: name (required), entityType (required), scheduledStartTime (required), reason, +5 more.

create_serverA

Create a new Discord guild. Note: Discord REST API restricts bot accounts to only creating guilds when the bot is in fewer than 10 guilds.

Inputs: name (required), iconUrl.

create_stage_channelC

Create a new stage channel for audio events and presentations

Inputs: name (required), reason, bitrate, guildId, +1 more.

create_stickerB

Upload a new custom sticker to the server (PNG or APNG, max 512KB, exactly 320x320 pixels)

Inputs: name (required), tags (required), fileUrlOrBase64 (required), reason, +2 more.

create_text_channelC

Create a new text channel in a server

Inputs: name (required), nsfw, topic, reason, +4 more.

create_threadB

Start a new thread in a text channel or from a specific existing message

Inputs: name (required), channelId (required), reason, messageId, +1 more.

create_voice_channelC

Create a new voice channel in a server

Inputs: name (required), reason, bitrate, guildId, +2 more.

create_webhookC

Create a new webhook on a specific text channel

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

delete_automod_ruleB

Permanently delete an AutoModeration rule from the server

Inputs: ruleId (required), reason, guildId.

delete_categoryB

Delete a channel category (channels inside will become unparented)

Inputs: categoryId (required), reason.

delete_channelC

Delete a channel from a server

Inputs: channelId (required), reason.

delete_channel_permissionC

Delete a permission overwrite for a role or member from a channel

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

delete_direct_messageC

Delete a previously sent direct message to a user

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

delete_emojiC

Permanently delete a custom emoji from the server

Inputs: emojiId (required), reason, guildId.

delete_inviteA

Revoke/delete an invite link so it can no longer be used

Inputs: inviteCode (required), reason.

delete_messageC

Delete a specific message from a channel

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

delete_roleB

Permanently delete a role from the server

Inputs: roleId (required), reason, guildId.

delete_scheduled_eventA

Permanently delete a scheduled event

Inputs: eventId (required), guildId.

delete_stickerB

Permanently delete a custom sticker from the server

Inputs: stickerId (required), reason, guildId.

delete_webhookC

Delete a webhook by ID

Inputs: webhookId (required), reason.

disconnect_voice_memberC

Disconnect a member from their current voice channel

Inputs: userId (required), reason, guildId.

edit_automod_ruleB

Edit an existing AutoModeration rule (name or toggle enabled state)

Inputs: ruleId (required), name, reason, enabled, +1 more.

edit_categoryC

Edit category name or position

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

edit_channelC

Edit properties of a text, voice, or stage channel

Inputs: channelId (required), name, nsfw, topic, +6 more.

edit_direct_messageC

Edit a previously sent direct message to a user

Inputs: userId (required), messageId (required), newMessage (required).

edit_emojiC

Edit custom emoji name or restricted roles

Inputs: emojiId (required), name, reason, guildId, +1 more.

edit_forum_channelC

Edit forum channel settings (name, topic, sort order, layout, slowmode)

Inputs: channelId (required), name, nsfw, topic, +6 more.

edit_messageB

Edit an existing message previously sent by the bot with optional automatic mention resolution

Inputs: channelId (required), messageId (required), newMessage (required), resolveMentions.

edit_roleC

Edit an existing role settings and permissions

Inputs: roleId (required), name, color, hoist, +6 more.

edit_scheduled_eventB

Modify details of a scheduled event or change its status (start, complete, cancel)

Inputs: eventId (required), name, reason, status, +5 more.

end_pollA

Immediately end and close an active poll so no further votes can be cast

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

find_channelC

Find a channel by exact or partial name in a server

Inputs: name (required), guildId.

format_discord_mentionC

Generate proper Discord Markdown mentions and shortcuts for users, roles, channels, timestamps, custom emojis, and slash commands

Inputs: id (required), type (required), name, style, +1 more.

generate_bot_invite_urlB

Generate an official OAuth2 invite link to add a bot or application to a server with custom permissions

Inputs: guildId, clientId, scopesCsv, permissionsCsv, +1 more.

get_audit_logsB

Fetch server audit log entries with optional filtering by user and limit

Inputs: limit, userId, guildId.

get_automod_ruleB

Get detailed configuration of a specific AutoModeration rule

Inputs: ruleId (required), guildId.

get_ban_infoC

Get detailed ban information for a specific banned user

Inputs: userId (required), guildId.

get_bot_infoB

Get current bot application status, username, ping, server count, and uptime

Inputs: no named parameters.

get_channel_infoB

Get detailed information about a specific channel

Inputs: channelId (required).

get_discord_symbolsA

Get curated aesthetic Discord symbols, dividers, channel prefixes, role badges, and server templates for building attractive Discord servers

Inputs: category.

get_discord_syntax_guideB

Get a comprehensive reference guide of all Discord Markdown shortcuts, techniques, mentions, timestamps, subtext, spoilers, and internal navigation links

Inputs: no named parameters.

get_emoji_detailsB

Get details about a specific custom emoji

Inputs: emojiId (required), guildId.

get_forum_channel_infoC

Get detailed forum info including active posts and available tags

Inputs: channelId (required).

get_invite_detailsB

Get details about an invite code (channel, server, online member counts)

Inputs: inviteCode (required), withCounts.

get_member_infoB

Get detailed information about a member in a server (roles, join date, voice state, permissions)

Inputs: userId (required), guildId.

get_message_attachmentsA

Inspect file attachments on a specific message (file names, sizes, content types, URLs)

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

get_poll_answer_votersC

Fetch users who voted for a specific answer in a poll

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

get_prune_countA

Calculate the number of inactive members that would be pruned

Inputs: days, guildId.

get_role_infoC

Get detailed information about a specific role

Inputs: roleId (required), guildId.

get_scheduled_event_usersC

Get users interested in or subscribed to a scheduled event

Inputs: eventId (required), limit, guildId.

get_server_infoB

Get detailed discord server information including members, channels, owner, boost level, and features

Inputs: guildId.

get_server_vanity_urlA

Get the vanity invite URL for a server if enabled (requires Level 3 boost)

Inputs: guildId.

get_server_widgetC

Get server widget settings and embed URL

Inputs: guildId.

get_sticker_detailsB

Get details about a specific custom sticker

Inputs: stickerId (required), guildId.

get_user_id_by_nameB

Get a Discord user ID by username or nickname in a server for mention formatting (<@id>)

Inputs: username (required), guildId.

get_user_infoB

Get profile information about a Discord user by ID (avatar, bot status, creation date)

Inputs: userId (required).

join_threadC

Have the bot join a thread to receive notifications and messages

Inputs: threadId (required).

kick_memberA

Kick a member from the server. They can rejoin if an invite is available.

Inputs: userId (required), reason, guildId.

leave_threadB

Have the bot leave a thread

Inputs: threadId (required).

list_active_threadsB

List all active threads across the server

Inputs: guildId.

list_automod_rulesB

List all AutoModeration rules configured on the server

Inputs: guildId.

list_bansC

List banned users from the server with ban reasons

Inputs: limit, guildId.

list_channel_permissionsC

List all permission overwrites for a channel broken down by role and member

Inputs: channelId (required).

list_channelsC

List all channels in a server with types and IDs

Inputs: guildId.

list_channels_in_categoryC

List all channels grouped under a specific category

Inputs: categoryId (required).

list_emojisC

List all custom emojis uploaded to the server

Inputs: guildId.

list_forum_channelsC

List all forum channels in the server

Inputs: guildId.

list_forum_postsC

List active posts in a forum channel

Inputs: channelId (required).

list_forum_tagsA

List all tags configured on a forum channel

Inputs: channelId (required).

list_invitesC

List all active invites for the server with statistics

Inputs: guildId.

list_membersC

List members of the server with roles and join dates

Inputs: limit, guildId.

list_pinned_messagesB

List all pinned messages in a channel

Inputs: channelId (required).

list_rolesB

List all roles in a server with ID, color, position, and permission summaries

Inputs: guildId.

list_scheduled_eventsC

List all scheduled and active events on the server

Inputs: guildId.

list_serversA

List all Discord servers that the current account is in, including server ID, name, member count, and owner status

Inputs: no named parameters.

list_stickersB

List all custom stickers available on the server

Inputs: guildId.

list_webhooksA

List all webhooks configured on a specific channel or across a whole server

Inputs: guildId, channelId.

modify_forum_postC

Modify forum post properties (lock, archive, pin, tags)

Inputs: postId (required), locked, pinned, reason, +2 more.

modify_server_settingsC

Edit server settings including name, description, AFK channel/timeout, system channel, rules channel, and verification level

Inputs: name, reason, guildId, afkTimeout, +5 more.

modify_server_widgetC

Enable, disable, or configure the server widget channel

Inputs: enabled (required), guildId, channelId.

modify_threadC

Update thread properties (archive/unarchive, lock/unlock, rename, slowmode)

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

modify_voice_stateC

Server mute or deafen a member in voice channels across the server

Inputs: userId (required), mute, deafen, reason, +1 more.

move_channelC

Move a channel to another category and/or change its position index

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

move_voice_memberB

Move a member to another voice or stage channel (they must currently be connected to voice)

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

pin_messageC

Pin a message to the top of a channel

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

prune_membersC

Prune inactive members from the server who have no roles

Inputs: days, reason, guildId.

read_direct_messagesC

Read direct message conversation history with a user

Inputs: userId (required), after, count, around, +1 more.

read_messagesB

Read message history from a channel with pagination support (before, after, around)

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

remove_reactionC

Remove an emoji reaction from a message

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

remove_roleC

Remove a role from a user in the server

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

remove_timeoutC

Remove an active timeout from a member

Inputs: userId (required), reason, guildId.

resolve_discord_mentionsB

Automatically converts plain-text channel names (#general), role names (@Moderator), and usernames (@alice) in a message to valid clickable Discord mention syntax (<#id>, <@&id>, <@id>)

Inputs: text (required), guildId.

search_discord_symbolsB

Search for Discord symbols, aesthetic combos, and dividers locally and dynamically from online aesthetic symbol databases (emojicombos/emojidb)

Inputs: query (required), fetchOnline.

search_membersB

Search for members in a server by username or nickname prefix

Inputs: query (required), limit, guildId.

send_direct_messageC

Send a direct private message (DM) to a specific Discord user

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

send_messageA

Send a message to a specific Discord channel with optional reply threading and automatic mention resolution

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

send_webhook_messageC

Send a message via webhook URL with custom display name and avatar

Inputs: message (required), webhookUrl (required), username, avatarUrl.

set_member_nicknameB

Change a member nickname in the server (empty string resets to original username)

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

setup_community_serverB

Create or configure a fully structured, aesthetic Discord server complete with categories, channels, roles, and permissions in one automated, human-paced workflow (protects against rate limits and warning flags)

Inputs: name, guildId, description.

timeout_memberB

Place a member in timeout (mute/communication disabled) for up to 28 days (2419200 seconds)

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

unban_memberC

Remove a ban from a user, allowing them to rejoin

Inputs: userId (required), reason, guildId.

unpin_messageC

Unpin a message from a channel

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

upsert_member_channel_permissionsC

Create or update channel permission overwrite for an individual member

Inputs: userId (required), channelId (required), reason, denyRaw, +3 more.

upsert_role_channel_permissionsC

Create or update channel permission overwrite for a role

Inputs: roleId (required), channelId (required), reason, denyRaw, +3 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 117 tools

    Disambiguation3/5

    With 117 tools, several overlapping groups exist (e.g., member lookup via search_members, get_user_id_by_name, get_user_info, get_member_info; channel discovery via list_channels, find_channel, get_channel_info; mention formatting via format_discord_mention and resolve_discord_mentions). Detailed descriptions help clarify intent, but more than a couple of tools could be confused, fitting 'some overlap exists'.

    Naming Consistency4/5

    Nearly all tools follow a consistent snake_case verb_noun pattern, making names highly predictable. Minor deviations exist, such as edit_ vs modify_ for update operations and unique verbs like upsert and setup, but overall the convention is strongly maintained.

    Tool Count1/5

    117 tools vastly exceeds the practical range for an MCP server, creating an unwieldy surface that forces agents to sift through many near-duplicate operations. The rubric explicitly defines 50+ tools as an extreme mismatch.

    Completeness4/5

    The tool surface covers CRUD for most Discord entities (servers, channels, messages, roles, members, emojis, webhooks, invites, scheduled events, etc.) with strong breadth. A few gaps remain, such as no edit_sticker, no get_poll details, and no forum tag creation/deletion, but these are minor and can be worked around.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Comprehensive Discord MCP server with 66 tools that provides rich message context including emoji reactions, thread indicators, and attachment metadata inline. Enables AI assistants to interact with Discord servers for messaging, moderation, roles, channels, and more.
      190 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Comprehensive Discord selfbot MCP server with 80 tools for full user autonomy, including messaging, guild management, voice, interactions, and more.
      39 npm
      MIT