A local MCP server that wraps a Discord bot's REST API capabilities with guild scoping and safety controls.
Server has 12 tools with explicit Zod schemas and descriptions. Naming follows verb_noun pattern (discord_*). However, descriptions are inconsistent in depth, some are 50-80 chars (good), others are 150+ chars (verbose). Parameter descriptions are present but often generic ('Discord channel ID' repeated 20+ times). Admin tools expose a generic 'data' parameter accepting free-form JSON, which invites hallucination and bypasses schema validation. No output schema documentation. Error handling is minimal, most tools return raw Discord API responses without recovery guidance. Security: credentials are server-side injected (good), but admin tools lack permission checks or audit logging hints.
Add a reaction as the configured bot. Writes must be enabled locally.
List, create, update, delete, reorder, or change permission overwrites for rooms and categories.
Inspect or administer members, roles, timeouts, voice state, kicks, and bans.
Get, edit, delete, bulk-delete, pin, unpin, or list pinned messages.
List, create, update, reorder, or delete server roles.
Read or modify the configured Discord server's settings.
Admin tools accept generic 'data' parameter (free-form JSON object or string). This bypasses schema validation and invites LLM hallucination of invalid Discord API payloads. LLMs cannot reason about unstructured JSON, they will guess at field names and types.
No output schema documentation. Tools return raw Discord API responses (JSON.stringify). LLMs cannot predict response structure, making downstream tool chaining and field extraction error-prone. Missing pagination info, field descriptions, and required chaining IDs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
List active threads or update and manage thread membership.
Create a public thread in an allowed text channel. Writes must be enabled locally.
Get the Discord server configured for this local MCP instance.
List channels visible through this local MCP instance. A local allowlist may narrow the result.
Read recent messages from an allowed channel.
Send a Discord message or reply as the configured bot. Writes must be enabled locally.
Admin tools lack permission checks and audit logging. Destructive operations (delete, ban, prune) should verify caller authority and log who did what. No guidance on recovery if an operation fails mid-way (e.g., partial bulk delete).
Parameter descriptions are repetitive and generic ('Discord channel ID', 'Discord message ID'). No guidance on format, constraints, or when to use each tool. Descriptions under 100 chars lack context for LLM tool selection.
No error recovery guidance. Tools return raw Discord API errors (e.g., 'Invalid Form Body') without actionable next steps. LLMs cannot self-correct or know whether to retry, ask the user, or abort.