Discord server operations MCP server. Exposes Discord server-ops as MCP tools across three areas: Interaction (list_guilds, list_channels, read_messages, send_message, get_member), Channels (create_channel, create_category, rename_channel, delete_channel, set_slowmode), and Moderation (kick_member, ban_member, timeout_member, purge_messages, scan_for_scammers, purge_scammers). Runs a discord.py gateway client in the background.
Discord MCP has 16 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, create_, delete_, send_, etc.). Descriptions are present but vary in quality, some are clear (e.g., 'List every Discord server'), others lack context on when to use them or what they return. Parameter descriptions are adequate but lack constraints (enums, ranges, formats). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Destructive tools (delete_channel, ban_member, purge_messages) lack confirmation patterns except purge_scammers. Security posture is reasonable (token via env var), but no audit logging or permission gates visible. Composition is sound, tools are single-purpose and chainable.
Ban a member and optionally delete their recent messages (0-7 days).
Create a category (channel group).
Create a channel. type = 'text' or 'voice'. Optionally place under a category.
Delete a channel. Irreversible.
Get details on a member: account age, join date, roles, avatar status.
Kick a member from the server.
Output schemas not documented. LLMs cannot predict response structure (e.g., what fields list_channels returns, what scan_for_scammers returns). Forces agents to guess or fail on downstream tool chaining.
Destructive tools (delete_channel, kick_member, ban_member, purge_messages) lack confirmation/dry-run patterns. Agents can accidentally delete channels or ban users without explicit confirmation step.
Parameter constraints missing. 'seconds' in set_slowmode lacks range validation (0-21600 stated in description but not in schema). 'limit' in read_messages and purge_messages lack min/max in schema. LLMs may pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
List channels in a guild (id, name, type, category, slowmode).
List every Discord server (guild) the bot is a member of.
Delete the last N messages from a channel (limit 1-100). Irreversible.
Timeout or kick members flagged as scammers (score >= threshold). No-op unless confirm=true. Returns list of actions taken.
Read the most recent messages from a channel (newest last). limit max 100.
Rename a channel.
Scan all members in a guild for scam/spam signals (account age, avatar, message content, etc.). Returns a list of suspect members with scores and reasons. Dry-run only — does not take action.
Send a text message to a channel.
Set per-user slowmode on a channel (0-21600 seconds). Great against raids.
Time out (mute) a member for N minutes (max 40320 = 28 days).
Error handling minimal. No recovery guidance. If a user is not found, no suggestion to search first. If a channel is not found, no list of available channels. Agents dead-end on errors.
No audit logging or permission gates visible. Destructive actions (ban, kick, delete) execute immediately without logging who called them or verifying permissions. Compliance and incident response are blind.