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.
Source
Section titled “Source”- Repo:
PaSympa/discord-mcp - Package:
@pasympa/discord-mcp - Tool count (cutoff 2026-05-01): ~91 across 13 modules (discovery, messages, channels, permissions, members, roles, moderation, screening, forums, webhooks, scheduled events, invites, DMs).
- Adapter source:
packages/mcp-server/src/lib/migrate-adapters/pasympa.ts
Why migrate to discord-mcp
Section titled “Why migrate to discord-mcp”- 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_sendandcomponents_v2_edittools validateflags = 32768layouts. See the Components V2 announcement recipe. - Gateway event notifications -
resources/subscribecan 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.
Step-by-step migration
Section titled “Step-by-step migration”-
Clone PaSympa locally.
Terminal window git clone https://github.com/PaSympa/discord-mcp.git ~/pasympa-cloneThe adapter does not fetch over the network - it requires a real filesystem path so it can walk
src/tools/*.ts. -
Run the migration report.
Terminal window discord-mcp migrate --from pasympa --source ~/pasympa-cloneFor machine-readable output, add
--json:Terminal window discord-mcp migrate --from pasympa --source ~/pasympa-clone --json > migrate-report.json -
Review the report.
The output groups tools into three buckets:
- mapped - the adapter found a discord-mcp equivalent. Check the
confidencefield on each entry and read thenotesfor everymediumorlowmapping. - 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.
- mapped - the adapter found a discord-mcp equivalent. Check the
-
Update agent prompts.
For every
mappedentry, swap the old tool name for the new one in your agent prompt templates. Formedium/lowconfidence entries, also adjust the argument shape per the per-entrynotes(e.g.discord_send_embedbecomesmessages_sendwith the embed hoisted into theembeds[]array).For every
unmappedentry, decide whether to drop the capability, replace it with a discord-mcp composition (e.g.audit_permissionsbecomes a sequence ofchannels_get+ client-side overlay), or keep PaSympa running side-by-side until the gap is closed. -
Generate your new client config.
Terminal window discord-mcp init --client claude-desktopMerge the printed snippet, set
DISCORD_TOKEN, then restart your MCP client. The 192 discord-mcp tools replace PaSympa’s 91.
Representative mappings
Section titled “Representative mappings”The table below shows common PaSympa operations and their discord-mcp equivalents. See the adapter source for the complete list.
| PaSympa tool | discord-mcp tool | Confidence | Notes |
|---|---|---|---|
discord_list_guilds | users_list_current_user_guilds | high | - |
discord_get_guild_info | guild_get | high | - |
discord_list_channels | channels_list | high | - |
discord_send_message | messages_send | high | - |
discord_read_messages | messages_read | high | - |
discord_edit_message | messages_edit | high | - |
discord_delete_message | messages_delete | high | - |
discord_pin_message | messages_pin | high | - |
discord_search_messages | messages_search_recent | high | - |
discord_add_reaction | reactions_create | high | - |
discord_get_reactions | reactions_list | high | - |
discord_create_channel | channels_create_guild_channel | high | - |
discord_edit_channel | channels_modify | high | - |
discord_list_members | members_list | high | - |
discord_kick_member | members_kick | high | - |
discord_ban_member | members_ban | high | - |
discord_search_members | members_search | high | - |
discord_list_roles | roles_list | high | - |
discord_create_role | roles_create | high | - |
discord_get_audit_log | audit_log_get | high | - |
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 tool | discord-mcp tool | Confidence | Notes |
|---|---|---|---|
discord_send_embed | messages_send | medium | Embed becomes embeds[] in the messages_send payload. |
discord_send_multiple_embeds | messages_send | medium | Pass the full embeds[] array directly. |
discord_reply_message | messages_send | medium | Set message_reference.message_id in the send payload. |
discord_timeout_member | members_modify | medium | Pass communication_disabled_until (ISO-8601 timestamp). |
discord_lock_channel_permissions | channels_modify_permissions | medium | Lock = explicit deny SEND_MESSAGES on @everyone. |
Gap analysis
Section titled “Gap analysis”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 viaevents_*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 fromchannels_get+channels_modify_permissions. - Server stats (1) -
discord_get_server_statsis a client-side computation in PaSympa (counts derived frommembers_list+channels_list). discord-mcp expects the agent to compute this itself. - Channel clone (1) -
discord_clone_channel. Compose fromchannels_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. Usechannels_listfiltered bytype === 15andchannels_getrespectively.
See also
Section titled “See also”- Adapter authoring guide - for adding more source servers to this list.
- discord-mcp tools (192) - auto-generated reference.
- CLI reference:
migrate- flags and exit codes. - Architecture: gateway - how notifications and authoritative REST reads work together.