Skip to content

From PaSympa

PaSympa is a TypeScript Discord MCP server using the discord_* tool prefix. The pasympa adapter walks a local clone, extracts every discord_<verb>_<noun> literal, and reports the discord-mcp equivalents with confidence levels and per-entry notes.

  • Production hardening - first-class OpenTelemetry traces and Cockatiel resilience policies (retry / circuit breaker / bulkhead) on the central Discord REST path. See Operations: telemetry and Architecture: rate limits.
  • Broad 192-tool Discord surface - the catalog includes stickers, automod, polls, application commands, onboarding, voice state, stage instances, scheduled events (subscribers + invites), and the Components V2 layout primitives.
  • Components V2 first-class - dedicated components_v2_send and components_v2_edit tools validate flags = 32768 layouts. See the Components V2 announcement recipe.
  • Gateway event notifications - resources/subscribe can signal that Discord state changed; fetch current state with the corresponding REST tool. It complements polling but does not replace the read step. See Architecture: gateway and the gateway-subscribe recipe.
  1. Clone PaSympa locally.

    Terminal window
    git clone https://github.com/PaSympa/discord-mcp.git ~/pasympa-clone

    The adapter does not fetch over the network - it requires a real filesystem path so it can walk src/tools/*.ts.

  2. Run the migration report.

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

    For machine-readable output, add --json:

    Terminal window
    discord-mcp migrate --from pasympa --source ~/pasympa-clone --json > migrate-report.json
  3. Review the report.

    The output groups tools into three buckets:

    • mapped - the adapter found a discord-mcp equivalent. Check the confidence field on each entry and read the notes for every medium or low mapping.
    • unmapped - PaSympa tools with no discord-mcp equivalent (typically scheduled events, audit_permissions, copy_permissions, server_stats, clone_channel, forum getters).
    • manual review - empty for PaSympa as of cutoff; the adapter never defers to a human.
  4. Update agent prompts.

    For every mapped entry, swap the old tool name for the new one in your agent prompt templates. For medium / low confidence entries, also adjust the argument shape per the per-entry notes (e.g. discord_send_embed becomes messages_send with the embed hoisted into the embeds[] array).

    For every unmapped entry, decide whether to drop the capability, replace it with a discord-mcp composition (e.g. audit_permissions becomes a sequence of channels_get + client-side overlay), or keep PaSympa running side-by-side until the gap is closed.

  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. The 192 discord-mcp tools replace PaSympa’s 91.

The table below shows common PaSympa operations and their discord-mcp equivalents. See the adapter source for the complete list.

PaSympa tooldiscord-mcp toolConfidenceNotes
discord_list_guildsusers_list_current_user_guildshigh-
discord_get_guild_infoguild_gethigh-
discord_list_channelschannels_listhigh-
discord_send_messagemessages_sendhigh-
discord_read_messagesmessages_readhigh-
discord_edit_messagemessages_edithigh-
discord_delete_messagemessages_deletehigh-
discord_pin_messagemessages_pinhigh-
discord_search_messagesmessages_search_recenthigh-
discord_add_reactionreactions_createhigh-
discord_get_reactionsreactions_listhigh-
discord_create_channelchannels_create_guild_channelhigh-
discord_edit_channelchannels_modifyhigh-
discord_list_membersmembers_listhigh-
discord_kick_membermembers_kickhigh-
discord_ban_membermembers_banhigh-
discord_search_membersmembers_searchhigh-
discord_list_rolesroles_listhigh-
discord_create_roleroles_createhigh-
discord_get_audit_logaudit_log_gethigh-

A handful of PaSympa wrappers fold onto a single discord-mcp tool - these are the medium-confidence collapses you should re-read before swapping:

PaSympa tooldiscord-mcp toolConfidenceNotes
discord_send_embedmessages_sendmediumEmbed becomes embeds[] in the messages_send payload.
discord_send_multiple_embedsmessages_sendmediumPass the full embeds[] array directly.
discord_reply_messagemessages_sendmediumSet message_reference.message_id in the send payload.
discord_timeout_membermembers_modifymediumPass communication_disabled_until (ISO-8601 timestamp).
discord_lock_channel_permissionschannels_modify_permissionsmediumLock = explicit deny SEND_MESSAGES on @everyone.

About 13 PaSympa tools have no discord-mcp equivalent and surface in the report’s unmapped list:

  • Scheduled events (7 tools) - discord_list_scheduled_events, discord_get_scheduled_event, discord_create_scheduled_event, discord_edit_scheduled_event, discord_delete_scheduled_event, discord_get_event_subscribers, discord_create_event_invite. discord-mcp exposes the events via events_* tools (different verb prefix); the adapter treats these as unmapped because the verb prefixes don’t match the string-extraction step. Manual swap: events_list, events_get, events_create, etc.
  • Permissions helpers (2) - discord_audit_permissions, discord_copy_permissions. These are higher-level compositions on top of the channel-permissions REST endpoint; rebuild client-side from channels_get + channels_modify_permissions.
  • Server stats (1) - discord_get_server_stats is a client-side computation in PaSympa (counts derived from members_list + channels_list). discord-mcp expects the agent to compute this itself.
  • Channel clone (1) - discord_clone_channel. Compose from channels_get (read source overwrites + topic + slowmode) + channels_create_guild_channel (apply to new channel).
  • Forum getters (2) - discord_get_forum_channels, discord_get_forum_post. Use channels_list filtered by type === 15 and channels_get respectively.