discp
Provides native, granular control over Discord through 117 tools, enabling management of servers, channels and categories, roles and permissions, messages and reactions, members and moderation (kick, ban, timeout), threads, forums, voice channels, invites, webhooks, emojis and stickers, scheduled events, polls, and AutoModeration rules, for both user/alt accounts and bot accounts.
📖 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 |
|
Channels & Categories | 14 |
|
Permissions | 4 |
|
Messages & Reactions | 12 |
|
Formatting & Mentions | 3 |
|
Symbols & Aesthetics | 2 |
|
Users & Direct Messages | 6 |
|
Members & Moderation | 11 |
|
Roles | 7 |
|
AutoModeration | 5 |
|
Interactive Polls | 3 |
|
Threads | 6 |
|
Forums | 7 |
|
Voice Channels | 4 |
|
Scheduled Events | 5 |
|
Invites | 4 |
|
Webhooks | 4 |
|
Emojis & Stickers | 8 |
|
Bot Utilities | 2 |
|
⚡ Quickstart
1. Clone & Build
git clone https://github.com/SharimAli/discp.git
cd discp
npm install
npm run build2. 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.jsSSE Stream:
http://localhost:8085/sseMessages:
http://localhost:8085/messagesHealth Check:
http://localhost:8085/health
💡 Discord Mention & Formatting Syntax
Component | Syntax | Rendered Result |
Channel Pill |
| Clickable |
Role Pill |
| Colored |
User Pill |
| Clickable |
Dynamic Time |
| Relative countdown ( |
Server Tab |
| Direct link to Server Channels or Onboarding |
Subtext |
| Reduced-size secondary text |
Spoiler |
| 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!
🎨 Recommended Aesthetic & Template Resources
When designing servers, AI assistants are encouraged to consult:
EmojiCombos Discord Symbols — Channel prefixes & dividers
EmojiDB Channel Symbols — Unicode symbol collections
DiscordGate Symbols — Aesthetic text styles
Scoplidrop Symbols — Decorative dividers & borders
Xenon Templates — Community server architecture layouts
📜 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 toolsadd_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
Scored across 117 tools
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'.
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.
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.
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
Related MCP Connectors
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
MCP server for Flux AI image generation
An MCP server for deep research or task groups
Directory of 53,000+ MCP servers: find one for any task and get its exact setup. No account.
Related MCP Servers
- AlicenseAqualityAmaintenanceLightweight multi-guild Discord MCP server with 60+ tools for messages, channels, roles, permissions, moderation, forums, webhooks, and embeds1001,901 npm32MIT
- AlicenseNot gradedqualityDmaintenanceThe most complete open-source MCP server for Discord — 80+ tools, dual-mode: integrated (plugin) or standalone70 npm16MIT
- AlicenseNot gradedqualityDmaintenanceComprehensive 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 npm1MIT
- AlicenseNot gradedqualityFmaintenanceComprehensive Discord selfbot MCP server with 80 tools for full user autonomy, including messaging, guild management, voice, interactions, and more.39 npmMIT