Discord MCP server for user-authenticated DM operations and bot management
Server has 27 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, parameter descriptions are sparse or missing for many tools. Input schemas are visible but lack depth, most parameters have type and description, but many lack constraints (enums, ranges, patterns). Output schemas are not documented. Error handling is minimal. Tool composition is reasonable but some tools could be consolidated (e.g., get_current_user and get_current_bot are aliases). Security concerns: discord_api_request is a generic passthrough that could enable unintended API calls without validation.
Accept/confirm a captured Discord message request for a user ID.
Mark a message as acknowledged/read for auth contexts that support the route.
Open or create a DM channel with a user ID.
Create a server from a guild template. Pass template_code; blank server creation is not generally available to bot tokens.
Delete one of your DM messages by user ID.
Delete a relationship row, such as a friend, request, or block entry.
discord_api_request is a generic passthrough tool that bypasses typed validation. LLMs can invoke arbitrary Discord API endpoints without schema constraints, risking unintended side effects and security violations.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., user_id, channel_id) for chaining. Responses are opaque.
get_current_bot is an alias for get_current_user with a weak description ('Alias for get_current_user'). Aliases waste LLM reasoning cycles and violate single-responsibility principle.
Many parameters lack constraints. E.g., relationship_type (int), limit (int), method (string) have no min/max, enums, or patterns. LLMs can pass invalid values (negative limits, unknown HTTP methods).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Call an official Discord API path with the configured Authorization header. Use for supported bot/OAuth endpoints not yet wrapped by a typed tool.
Get Discord Gateway and MCP runtime status.
Edit one of your DM messages by user ID.
Generate an OAuth2 URL to invite this bot.
Alias for get_current_user.
Get the authenticated Discord user or bot.
Read the account's current presence status and custom status text/emoji.
Get detailed server/guild information.
Get a Discord user profile by user ID.
List active public and private threads in a server.
List every server channel type, including categories, voice, forums, and announcements.
Alias for list_all_server_channels.
List direct message channels visible to the user session.
List relationship rows that behave like incoming or outgoing message requests.
List Discord relationship rows visible to the current session.
List text-like channels for a Discord server/guild.
List Discord servers/guilds visible to the user session.
List message requests and mark which user IDs were not in known_user_ids.
Read DM messages by user ID.
Send a DM to a user ID.
Set or clear the account custom status. Text, unicode emoji_name, custom emoji_id, and ISO expires_at are optional.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. LLMs cannot recover from failures intelligently.