If you find this useful, consider giving it a star on GitHub — it helps others discover the project!
discord-mcp is an MCP project maintained in the hardheadhackerhead/discord-mcp repository. The maintainer describes its purpose as “If you find this useful, consider giving it a star on GitHub — it helps others discover the project!”. Read the project documentation for the complete scope.
The documented npm package is @quadslab.io/discord-mcp. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.
The example declares DISCORD_TOKEN, DISCORD_GUILD_ID. Secret-looking values have been replaced with placeholders. Required and optional labels are shown only when the documentation states them.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| Category | Tools |
| Guild | 2 |
| Roles | 11 |
| Channels | 20 |
| Members | 15 |
| Messages | 14 |
| Reactions | 1 |
| Threads | 15 |
| Forums | 5 |
| Webhooks | 4 |
| Auto-Moderation | 4 |
| Polls | 3 |
| Onboarding | 2 |
| Total | 139 |
| list_guilds | List all servers the bot is a member of |
| get_guild_info | Detailed server info — member count, channels, roles, features, boost tier |
| list_roles | List all roles sorted by position with colors and member counts |
| create_role | Create a new role with name, color, hoist, and mentionable options |
| delete_role | Delete a role (with managed role protection) |
| modify_role | Change a role's name, color, hoist, mentionable, or position |
| get_role_permissions | View all permissions granted to a role |
| modify_role_permissions | Grant or revoke specific permissions on a role |
| set_role_icon | Set a Unicode emoji or image as the role icon (requires boost level 2+) |
| assign_role | Add a role to a member |
| remove_role | Remove a role from a member |
| get_role_members | List all members who have a specific role |
| clone_role | Duplicate a role with all its permissions and settings |
| list_channels | List all channels organized by category |
| create_text_channel | Create a new text channel, optionally in a category |
| create_voice_channel | Create a new voice channel with bitrate and user limit |
| create_category | Create a new channel category |
| create_forum_channel | Create a new forum channel with optional tags and default settings |
| delete_channel | Delete any channel type |
| modify_channel | Change name, topic, category, NSFW, position, user limit |
| set_channel_permissions | Set permission overwrites for a role or user on a channel |
| view_channel_permissions | View all permission overwrites on a channel |
| lock_channel | Deny SendMessages for @everyone (quick lock) |
| unlock_channel | Remove SendMessages deny for @everyone |
| set_slowmode | Set rate limit (0–21600 seconds) on a text channel |
| clone_channel | Duplicate a channel with all permissions and settings |
| reorder_channels | Reorder channels by specifying new positions |
| set_voice_region | Set the RTC region for a voice channel |
| follow_announcement_channel | Follow an announcement channel to cross-post into another channel |
| create_stage_channel | Create a new stage channel |
| get_channel_invites | List all invites for a specific channel |
| set_channel_topic | Set or clear a channel's topic/description |
| get_voice_members | List all members currently in a voice or stage channel |
| list_members | List members with optional role and search filters |
| get_member | Detailed member info — roles, join date, account age, permissions |
| kick_member | Kick a member from the server |
| ban_member | Ban a member with optional message deletion (0–7 days) |
| unban_member | Remove a ban by username or user ID |
| timeout_member | Apply a timeout (10m, 1h, 1d, 1w) or remove one |
| prune_members | Remove inactive members (supports dry run and role filtering) |
| bulk_assign_role | Assign a role to multiple members at once |
| bulk_remove_role | Remove a role from multiple members at once |
| set_nickname | Change a member's nickname or reset it |
| move_to_voice | Move a member to a different voice channel |
| disconnect_from_voice | Disconnect a member from their voice channel |
| get_member_permissions | Get a member's effective permissions in a specific channel |
| search_members | Search members by username, nickname, or role with advanced filters |
| bulk_timeout_members | Apply a timeout to multiple members at once |
| get_messages | Fetch recent messages from a text channel, voice channel, or thread |
| get_message | Fetch a single message by ID with full details |
| send_message | Send a text message, optionally as a reply |
| send_embed | Send a rich embed with title, fields, images, and footer |
| edit_message | Edit a message previously sent by the bot |
| delete_message | Delete a single message by ID |
| bulk_delete_messages | Delete 2–100 messages at once (< 14 days old), optionally filtered by user |
| crosspost_message | Publish a message in an announcement channel to all following channels |
| pin_message | Pin a message |
| unpin_message | Unpin a message |
| list_pinned_messages | Get all pinned messages in a channel |
| add_reaction | Add a reaction from the bot to a message |
| remove_reaction | Remove the bot's reaction from a message |
| search_messages | Search messages in a channel by content, author, or date range |
| get_reactions | Get all reactions on a message with full reactor details — account creation date, server join date, roles, avatar, boost status. Optionally filter by emoji. |
| edit_server | Modify server name, description, verification level, notification defaults |
| list_invites | List all active invite links with usage stats and expiration |
| create_invite | Generate a new invite with configurable max age, uses, and temporary flag |
| delete_invite | Revoke an invite by code |
| get_audit_log | Fetch audit log entries, optionally filtered by action type or user |
| list_bans | View all banned users with reasons |
| get_welcome_screen | Get the server welcome screen configuration |
| set_welcome_screen | Configure the welcome screen with description and featured channels |
| get_widget | Get the server widget settings |
| set_widget | Configure the server widget (enable/disable, set channel) |
| get_vanity_url | Get the server vanity URL (requires VANITY_URL feature) |
| list_integrations | List all integrations (bots, apps) connected to the server |
| delete_integration | Remove an integration from the server |
| get_server_preview | Get the server's public preview information |
| set_server_icon | Set or remove the server icon from a URL |
| set_server_banner | Set or remove the server banner image (requires boost level 2+) |
| list_threads | List active threads, optionally filtered to a channel |
| list_archived_threads | List public or private archived threads in a channel with pagination |
| get_thread | Get detailed thread info — type, slowmode, auto-archive, owner, URL |
| get_thread_messages | Fetch messages from a thread with before/after pagination |
| get_thread_pinned_messages | Get all pinned messages in a thread |
| create_thread | Start a thread from a message or as a standalone public thread |
| edit_thread | Edit thread name, auto-archive duration, slowmode, or locked/archived status |
| archive_thread | Archive a thread |
| unarchive_thread | Unarchive a thread |
| delete_thread | Delete a thread |
| lock_thread | Lock a thread (prevent new messages without archiving) |
| unlock_thread | Unlock a thread |
| list_thread_members | List all members of a thread |
| add_thread_member | Add a member to a thread |
| remove_thread_member | Remove a member from a thread |
| create_forum_post | Create a new post (thread) in a forum channel with optional tags |
| list_forum_tags | List all available tags on a forum channel |
| create_forum_tag | Add a new tag to a forum channel (max 20 per channel) |
| edit_forum_tag | Edit an existing forum tag's name, emoji, or moderated status |
| delete_forum_tag | Remove a tag from a forum channel |
| list_emojis | List all custom emojis with names, IDs, animated status, and URLs |
| create_emoji | Upload a new custom emoji from a URL |
| delete_emoji | Remove a custom emoji by name or ID |
| rename_emoji | Rename a custom emoji |
| list_stickers | List all custom stickers with descriptions and format info |
| create_sticker | Upload a new custom sticker from a URL |
| delete_sticker | Remove a custom sticker by name or ID |
| list_webhooks | List all webhooks, optionally filtered to a channel |
| create_webhook | Create a webhook on a channel with name and optional avatar |
| delete_webhook | Delete a webhook by ID |
| send_webhook_message | Send a message via webhook with optional name/avatar override |
| list_events | List all scheduled events with times, status, type, and attendee count |
| create_event | Create a voice, stage, or external event with start/end times |
| edit_event | Modify an event's name, description, times, or status |
| delete_event | Delete a scheduled event |
| get_event_users | List users who have expressed interest in an event |
| list_stage_instances | List all active stage instances with topic and channel info |
| start_stage | Start a new stage instance on a stage channel with a topic |
| end_stage | End an active stage instance |
| list_automod_rules | List all automod rules with triggers, actions, and exemptions |
| create_automod_rule | Create a rule — keyword filter, spam detection, keyword presets, or mention spam |
| edit_automod_rule | Modify a rule's keywords, actions, exemptions, or enabled state |
| delete_automod_rule | Delete an automod rule |
| create_poll | Create a poll in a channel with multiple choice options and duration |
| get_poll_results | Get the current results and vote counts for a poll |
| end_poll | End a poll early and finalize the results |
| send_dm | Send a direct message to a server member |
| send_dm_embed | Send a rich embed as a direct message to a server member |
| set_bot_presence | Set the bot's status and activity (playing, watching, listening, etc.) |
| get_bot_info | Get the bot's current user info, status, and connection details |
| list_templates | List all templates for the server |
| create_template | Create a new server template from the current server configuration |
| delete_template | Delete a server template by code |
| sync_template | Sync a server template with the current server state |
| list_commands | List all registered application (slash) commands |
| create_command | Register a new slash command with name, description, and options |
| edit_command | Modify an existing slash command |
| delete_command | Remove a registered slash command |
| get_onboarding | Get the server's onboarding configuration and prompts |
| edit_onboarding | Edit the server onboarding settings, prompts, and default channels |
{
"mcpServers": {
"discord": {
"command": "npx",
"args": [
"-y",
"@quadslab.io/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
"DISCORD_GUILD_ID": "your-server-id"
}
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
| Variable | Description | Required |
|---|---|---|
| DISCORD_TOKEN | Declared in the maintainer’s client configuration. | Check documentation |
| DISCORD_GUILD_ID | Declared in the maintainer’s client configuration. | Check documentation |
Your assistant inside the workspace — read channels, search history, post messages and tame the noise.
Build a programmable telecommunications stack for connecting telephony services with the Internet via a cloud-based utility.
Inbox intelligence — search, read, draft and send Gmail through your assistant with OAuth auto-setup.
Read and write Jira, Confluence, Bitbucket, JSM and Compass from your AI client — with your own permissions.
Read and send Telegram messages through your assistant — chats, channels and history via the client API.
Enables Discord bot integration with Model Context Protocol (MCP) compatible applications like Claude Desktop.