create_channelLABSCO SUMMARY
Permission debugging you can ask a question about.
The inspection tools are what set this apart from a message-sending bot: list_target_accessible_channels and list_target_inaccessible_channels answer "why can this member not see that channel" directly, which is normally an afternoon of clicking through overwrites. Everything here acts on a live guild, so the bot's own role position decides how much of it works.
What it is
A Discord administration server built on discord.py, holding a bot session per token. The tools cover the structural side of a guild: channels and categories, roles, and the permission overwrites between them, plus the inspection tools that answer what a given role or member can actually see.
What you get
- Channels created in any type — text, voice, news, stage, forum, media or category — then edited, moved between categories, reordered by position, or deleted
- Channels listed for a guild, and any one of them fetched
- Roles created, edited including position, assigned to and removed from members, and deleted
- Permissions set or removed on a channel, set on a category, and set on a role
- Permission inspection from the other direction: what a role or member effectively holds, and what a given channel grants them
- The channels a target can reach, and the ones they cannot, listed separately
- Messages sent to a channel
Requirements
uv on your PATH, and a Discord bot token — the client passes it as the Authorization header, and each token gets its own session. The server binds to localhost by default, so nothing is exposed off the machine unless you change it.
Setup effort
Build from source
USE CASES
Standing up a new server section
Create the category and its channels, put them in the order you want, and set the category permissions once so every channel under it inherits the right access.
Working out why someone cannot see a channel
Ask what the member effectively holds, then what that specific channel grants them — the two answers together name the overwrite doing the blocking instead of leaving you to diff them by hand.
Checking a role before you hand it out
Read what the role actually grants across the guild, and list the channels it can and cannot reach, so the scope is known before the first member gets it.
Reorganising roles after the server outgrew them
List what exists, edit the ones worth keeping including their position in the hierarchy, and delete the rest — position being the field that decides who can manage whom.
Onboarding a batch of new members
Assign the role that opens the right channels, confirm the permissions it grants are what you intended, and post the welcome message in the channel it unlocks.
Locking a channel down
Read the current overwrites, replace them with the access you want, or strip them entirely so the channel falls back to what its category says.
79 tools
Listed in project docs. Your client may show a different list.
edit_channeldelete_channelmove_channelget_channelget_channelscreate_roleedit_roledelete_roleassign_roleremove_roleget_roleget_rolesset_channel_permissionsset_category_permissionsset_role_permissionsget_channel_permissionsget_category_permissionsremove_channel_permissionsinspect_role_permissionsinspect_member_permissionsinspect_target_channel_permissionslist_target_accessible_channelslist_target_inaccessible_channelssend_messageedit_messagedelete_messagebulk_delete_messagesget_messageget_channel_messagestimeout_userremove_timeoutkick_userban_userunban_userenforce_role_policyget_guild_bansget_member_timeout_statusget_guild_settingsedit_guild_settingscreate_pollend_pollget_poll_resultscreate_scheduled_eventedit_scheduled_eventdelete_scheduled_eventlist_scheduled_eventsget_scheduled_event_userscreate_threadedit_threaddelete_threadlist_threadsadd_thread_memberremove_thread_membercreate_forum_postcreate_webhooksend_webhook_messagelist_webhooksdelete_webhookcreate_invitelist_invitesdelete_invitecreate_emojidelete_emojilist_emojislist_stickersadd_reactionremove_reactionget_reaction_usersclear_reactionscreate_automod_ruleedit_automod_ruledelete_automod_rulelist_automod_rulesget_audit_logget_member_infolist_membersedit_memberget_bot_statusBEFORE YOU INSTALL
What to know first
Tools you get
79 tools named in the project's documentation.
Requires
- uv on PATH
- A Discord bot token, sent by your client as the Authorization header
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/ExilProductions/discord-mcp
cd discord-mcp
uv sync
cp .env.template .envEdit .env (defaults MCP_HOST=127.0.0.1, MCP_PORT=8000 bind local-only)
uv run python -m discord_mcp.mainKeep the server running, then add it to your MCP client as a remote server at http://localhost:8000/mcp, with your Discord bot token as the Authorization header (the block below is the project's OpenCode example)
MCP Clients
OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"discord-mcp": {
"type": "remote",
"url": "http://localhost:8000/mcp",
"enabled": true,
"headers": {
"Authorization": "<YOUR_DISCORD_BOT_TOKEN>"
}
}
}
}Each token gets its own bot session. Change the address if you set MCP_HOST or MCP_PORT in .env.