discord-provisioner-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DRY_RUN | No | When true, no write request ever reaches Discord. Default is false. | false |
| LOG_LEVEL | No | Logging level: debug, info, warn, error, silent. Default is info. | info |
| MCP_AUTH_TOKEN | No | Bearer token HTTP clients must present. Required when running in HTTP mode (with --http). | |
| WRITE_DELAY_MS | No | Minimum delay between consecutive writes. Default is 250. | 250 |
| DISCORD_BOT_TOKEN | Yes | Bot token from the developer portal. Required. | |
| DISCORD_API_VERSION | No | REST API version segment. Default is v10. | v10 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_guildsA | List every guild (server) the bot is currently a member of. |
| get_guildA | Fetch a guild's settings and full role list (with permission bitfields decoded to names). |
| list_channelsA | List every channel in a guild, including categories, with permission overwrites decoded to permission names. |
| list_rolesA | List every role in a guild, highest first, with permission bitfields decoded to names. |
| get_bot_infoA | Show the bot's identity, how many guilds it is in, and whether it is still under the 10-guild limit that gates guild creation. |
| get_blueprint_templateA | Get a ready-made server blueprint for a common community type (gaming, dev, support, creator) to use as a starting point for apply_blueprint or create_guild -- rename and adjust instead of designing from zero. Call without arguments to list the available templates. The design conventions behind them live in the discord://design-guide resource. |
| create_guildA | Create a new guild (server) owned by the bot, optionally provisioning the entire structure (roles, categories, channels, permission overwrites) from a blueprint in a single request. Only works while the bot is in fewer than 10 guilds; otherwise create the server manually, invite the bot, and use apply_blueprint. |
| apply_blueprintA | Diff a declarative blueprint against a guild's live roles and channels, then apply the difference in order (roles -> role positions -> categories -> channels -> permission overwrites). Nothing is ever deleted; live entities missing from the blueprint are reported as orphans. mode=create_only (default) only creates missing entities; mode=reconcile also updates entities that differ. With dry_run=true the full ordered plan is returned and no write reaches Discord. Applying the same blueprint twice yields zero operations the second time. |
| create_roleA | Create a role in a guild. Permissions are given as permission names (e.g. VIEW_CHANNEL, SEND_MESSAGES), never raw bitfields. |
| create_channelA | Create a channel (or category) in a guild. Overwrite permissions are given as permission names. |
| set_channel_permissionsA | Set the permission overwrite for a role or member on a channel. REPLACES any existing overwrite for that target on that channel. The standard private-channel pattern: deny VIEW_CHANNEL for the guild's @everyone role (target_id = guild id, target_type = role) and allow VIEW_CHANNEL for the roles that should see it. |
| reorder_channelsA | Change the positions (and optionally the parent category) of multiple channels in one request. Positions are relative within each channel group (categories, text-like, voice). |
| reorder_rolesA | Change the positions of multiple roles in one request. Higher position = higher in the role list. The bot can only move roles below its own highest role. |
| delete_channelA | Permanently delete a channel or category. THIS IS IRREVERSIBLE: all messages in the channel are lost and cannot be restored. Requires confirm=true as an explicit acknowledgement. |
| delete_roleA | Permanently delete a role from a guild. THIS IS IRREVERSIBLE: the role is removed from every member and every permission overwrite. Requires confirm=true as an explicit acknowledgement. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| design_server | Compose a server blueprint following the design guide, starting from a template when one fits |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| design-guide | Conventions for laying out roles, categories, channels, and permissions in a well-run Discord server |
TDQS
Scored across 15 tools
Every tool targets a distinct resource-action pair (e.g., list_guilds vs. get_guild, create_role vs. create_channel). The only potential overlap, create_guild vs. apply_blueprint, is clearly separated by one being for new guilds and the other for existing guilds.
All tool names follow a consistent verb_noun snake_case pattern (list_, get_, create_, apply_, set_, reorder_, delete_). There is no mixing of conventions or vague verbs.
With 15 tools, the set is well-scoped for the purpose of Discord server provisioning. Each tool covers a specific aspect of guild, role, channel, and permission management, with no redundant or unnecessary additions.
The tool surface provides a comprehensive lifecycle for roles, channels, and permissions, including listing, creating, reordering, and deleting, with updates handled via apply_blueprint's reconcile mode. Guild creation and blueprint management are also covered, leaving no obvious gaps.