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 every REST call. See Operations: telemetry and Architecture: rate limits.
  • Full Discord REST surface (192 tools) — discord-mcp covers ~110% of PaSympa’s tool count, including stickers, automod, polls, application commands, onboarding, voice state, stage instances, scheduled events (subscribers + invites), and the Components V2 layout primitives.
  • Components V2 first-class — every send/edit tool accepts flags = 32768 layouts. See the Components V2 announcement recipe.
  • Gateway resource subscriptionsresources/subscribe over Discord Gateway events replaces REST polling. 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 --token "Bot YOUR.TOKEN"

    Restart your MCP client. The 192 discord-mcp tools replace PaSympa’s 91.

The table below shows the most common PaSympa operations and their discord-mcp equivalents. These are the calls every agent uses; the full NAME_MAP covers another ~58 entries — 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.