# @willuhmjs/discord-mcp

MCP server exposing the full Discord API to LLM agents — rich messages, interactions, threads, moderation, AutoMod and server config on discord.js.

- **Type:** MCP server
- **Trust:** 85/100 (A), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 1.1.1
- **Author:** Unknown
- **License:** MIT
- **npm:** @willuhmjs/discord-mcp
- **Source:** https://github.com/willuhmjs/discord-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

85/100 (A), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-10-05T01:56:55.276Z
- **Version scanned:** 1.1.1
- **CVEs:** none found by OSV at scan time

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `list_automod_rules` — List the server’s AutoMod rules with their triggers and actions. Requires Manage Guild.
- `get_automod_rule` — Get one AutoMod rule’s full details (trigger, actions, exemptions). Requires Manage Guild.
- `create_automod_rule` — Create an AutoMod rule (keyword/spam/preset/mention/profile trigger with block/alert/timeout actions).
- `edit_automod_rule` — Edit an AutoMod rule — only provided fields change. Requires Manage Guild.
- `delete_automod_rule` — Delete an AutoMod rule. Requires Manage Guild.
- `create_text_channel` — Create a new text channel in the server.
- `edit_text_channel` — Edit a text channel: name, topic, nsfw, slowmode, category or position.
- `delete_channel` — Delete a channel (any type). This cannot be undone.
- `find_channel` — Find a channel by name (case-insensitive) and get its ID and type.
- `list_channels` — List every channel in the server, grouped by category.
- `get_channel_info` — Get detailed settings for a channel: name, topic, nsfw, slowmode, category, position,
- `move_channel` — Move a channel to another category and/or change its position in the list.
- `create_category` — Create a new channel category.
- `edit_category` — Edit a category: rename it or change its position.
- `delete_category` — Delete a category. Channels inside it are kept and become uncategorized.
- `find_category` — Find a category by name (case-insensitive) and get its ID.
- `list_channels_in_category` — List the channels inside a category, ordered by position.
- `list_channel_permission_overwrites` — List every permission overwrite on a channel, with allow/deny per role or member.
- `upsert_role_channel_permissions` — Create or update the permission overwrite for a role on a channel.
- `upsert_member_channel_permissions` — Create or update the permission overwrite for a member on a channel.
- `delete_channel_permission_overwrite` — Delete a role or member permission overwrite from a channel.
- `create_channel` — Create a channel of any type (text, voice, category, announcement, stage, forum, media) with full
- `edit_channel` — Edit any channel with only the provided fields: name, topic, nsfw, slowmode, bitrate, user limit,
- `follow_announcement_channel` — Follow an announcement channel, automatically crossposting its messages into a target text channel.
- `list_channel_invites` — List the active invites for a channel: code, uses, expiry and creator.
- `send_private_message` — Send a private message (DM) to a user from the bot. Supports embeds, components, polls and files.
- `edit_private_message` — Edit a private message the bot previously sent to a user.
- `delete_private_message` — Delete a private message the bot previously sent to a user.
- `read_private_messages` — Read the bot’s private message history with a user, newest last.
- `get_user_id_by_name` — Find a member’s user ID by username or display name, for ping usage <@id>.
- `get_user` — Get a Discord user’s profile basics (works for users outside this server).
- `create_guild_scheduled_event` — Schedule a new event on the server (voice, stage, or external), optionally recurring. Requires Manage Events.
- `edit_guild_scheduled_event` — Modify details of an existing event or change its status (start, complete, cancel).
- `delete_guild_scheduled_event` — Permanently delete a scheduled event. Requires Manage Events.
- `list_guild_scheduled_events` — List all active and scheduled events on the server.
- `get_guild_scheduled_event` — Get one scheduled event’s full details, including its recurrence rule, creator and interested count.
- `get_guild_scheduled_event_users` — Get the list of users interested in a scheduled event.
- `list_emojis` — List all custom emojis on the server.
- `get_emoji_details` — Get detailed information about a specific custom emoji.
- `create_emoji` — Upload a new custom emoji to the server. Provide image as base64 (Data URI or raw) OR a direct

## Install

**Verdict: install** — No blocking findings and no open coverage gaps — safe to install as configured.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"discord\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@willuhmjs/discord-mcp\"\n      ],\n      \"env\": {\n        \"DISCORD_TOKEN\": \"<YOUR_DISCORD_TOKEN>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `DISCORD_TOKEN` — Discord Token (required)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (1 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Extensive blast radius — deletes data; holds an api key.
- Floor 58, ceiling 58 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40willuhmjs%2Fdiscord-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40willuhmjs%2Fdiscord-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40willuhmjs%2Fdiscord-mcp
- HTML page: https://forgeregistry.com/registry/%40willuhmjs%2Fdiscord-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
