Skip to content

From quadslab

quadslab (@quadslab.io/discord-mcp) is the largest of the third-party Discord MCPs by tool count - ~138 tools across 20 categories. The quadslab adapter walks a local clone, intersects against a known-tool catalog (139 entries) for high-precision extraction, and reports the discord-mcp equivalents.

  • Production hardening - first-class OpenTelemetry traces and Cockatiel resilience policies on the central Discord REST path. See Operations: telemetry.
  • Components V2 first-class - dedicated components_v2_send and components_v2_edit tools validate flags = 32768 layouts. See the Components V2 announcement recipe.
  • Explicit confirmation on selected high-risk tools - the 29 tools registered with confirm_required require __confirm: true and MCP_DRY_RUN=false. Other writes can execute immediately, so inspect each tool’s confirmation badge rather than inferring safety from “destructive.” See Architecture: confirmation.
  • Pipeline sequencing - mcp_pipeline chains multiple tool calls in a single round-trip with {{step.path}} interpolation between them. See Architecture: pipeline.

quadslab exposes MCP resources for live state. This is not a tool, and the migration extractor does not translate it. discord-mcp’s current Gateway surface emits experimental subscription notifications, but those live URIs are not available through its resources/list or resources/read catalog.

The quadslab adapter does not translate resource subscriptions - they don’t appear in <category>Tools arrays, so they’re invisible to the extraction step. Treat this as a migration gap and keep the old resource path until a discord-mcp subscription has been verified end-to-end for your client. See Architecture: gateway.

  1. Clone quadslab locally.

    Terminal window
    git clone https://github.com/HardHeadHackerHead/discord-mcp.git ~/quadslab-clone
  2. Run the migration report.

    Terminal window
    discord-mcp migrate --from quadslab --source ~/quadslab-clone

    For machine-readable output: --json.

  3. Review the report.

    The output groups tools into mapped / unmapped / manual review. Read every medium and low confidence note before swapping argument shapes.

  4. Update agent prompts.

    Swap names per the mapped table. Pay particular attention to:

    • The five <verb>_<channel-type> tools (create_text_channel, create_voice_channel, create_category, create_forum_channel, create_announcement_channel) - they all collapse onto channels_create_guild_channel with a different type integer. Read the per-entry note for the type ID.
    • Embed-and-file variants (send_embed, send_message_with_file, send_dm_embed) - all collapse onto messages_send with the embed or attachment hoisted into the appropriate payload field.
  5. Generate your new client config.

    Terminal window
    discord-mcp init --client claude-desktop

    Merge the printed snippet, set DISCORD_TOKEN, then restart your MCP client.

  6. Optional - enable Gateway notifications.

    Terminal window
    discord-mcp serve --gateway

    This backs experimental resources/subscribe notifications with Discord Gateway events. It does not expose quadslab’s live resources through resources/list or resources/read; retain the old resource path until the notification-plus-REST-read flow is verified in your client.

This is a representative cut; consult the adapter source for the complete maintained mapping table.

quadslab tooldiscord-mcp toolConfidenceNotes
list_guildsusers_list_current_user_guildshigh-
get_guild_infoguild_gethigh-
edit_serverguild_modifyhigh-
list_channelschannels_listhigh-
create_text_channelchannels_create_guild_channelhighPass type=0 (GUILD_TEXT).
create_voice_channelchannels_create_guild_channelhighPass type=2 (GUILD_VOICE).
create_categorychannels_create_guild_channelhighPass type=4 (GUILD_CATEGORY).
create_forum_channelchannels_create_guild_channelhighPass type=15 (GUILD_FORUM).
delete_channelchannels_deletehigh-
modify_channelchannels_modifyhigh-
set_channel_permissionschannels_modify_permissionshigh-
lock_channelchannels_modify_permissionsmediumLock = explicit deny SEND_MESSAGES on @everyone.
unlock_channelchannels_delete_permissionsmediumUnlock = remove the @everyone deny overwrite.
send_messagemessages_sendhigh-
send_embedmessages_sendmediumPass embeds[] in the messages_send payload.
send_message_with_filemessages_sendmediumAttach files via attachments[] in the payload.
edit_messagemessages_edithigh-
bulk_delete_messagesmessages_bulk_deletehigh-
add_reactionreactions_createhigh-
list_membersmembers_listhigh-
ban_membermembers_banhigh-
bulk_banmembers_bulk_banhigh-
assign_rolemembers_add_rolehigh-
list_rolesroles_listhigh-
get_audit_logaudit_log_gethigh-
list_emojisemojis_list_guildhigh-
create_eventevents_createhigh-
list_automod_rulesautomod_list_ruleshigh-
end_pollpolls_endhigh-
get_onboardingonboarding_gethigh-

Notable low-confidence entries (always re-read the per-entry notes):

quadslab tooldiscord-mcp toolConfidenceNotes
bulk_assign_rolemembers_add_rolelowIterate per user; discord-mcp has no bulk variant.
bulk_remove_rolemembers_remove_rolelowIterate per user.
purge_user_messagesmessages_bulk_deletelowCompose: messages_search_recent + filter by author, then messages_bulk_delete.
send_pollmessages_sendlowdiscord-mcp creates polls inline via the poll: {...} field on the send payload.
send_dmmessages_sendlowCall users_create_dm first to get the DM channel ID.
list_role_membersmembers_listlowdiscord-mcp has no by-role lookup; list members and filter on role IDs client-side.
list_stage_instancesstage_instances_getlowdiscord-mcp has no list endpoint; fetch per channel.

About 14 quadslab tools have no discord-mcp equivalent and surface in the report’s unmapped list. Reasons grouped by category:

  • Presence (2) - set_bot_status, get_bot_info. discord-mcp currently exposes neither presence tools nor a serve flag/environment setting for bot presence. Keep the old integration for this capability or omit it.
  • Templates (4) - list_templates, create_template, delete_template, sync_template. Discord guild templates have no discord-mcp tool wrapper today. Workaround: continue calling the REST endpoint directly, or omit the feature.
  • Helper composites (3) - clone_channel, copy_channel_permissions, check_permissions. Compose from primitives: channels_get + channels_create_guild_channel + channels_modify_permissions.
  • Voice helpers (5) - move_to_voice, disconnect_from_voice, set_voice_region, set_voice_status, list_voice_members. discord-mcp’s voice_* tools cover state and regions but not the channel-side helpers; partial overlap with low value, so left unmapped.