Discord MCP

Getting started

  1. Add the bot to your server.
  2. As the server owner, activate it in the dashboard (or run /mcp activate). New servers start inactive.
  3. Run /mcp login (anywhere) and sign in with Discord.
  4. Add the server URL below to your MCP client and sign in once more when it asks.
https://api.mcp.discordbots.xyz/mcp

The connection uses Streamable HTTP with OAuth 2.1 (PKCE). There is no API key to paste and nothing to install.

Claude (web, desktop, mobile)

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name it Discord and paste the server URL.
  3. Click Connect, sign in with Discord and allow the connection.

On Team and Enterprise plans an owner may have to add the connector for the organization first.

Claude Code

claude mcp add --transport http discord https://api.mcp.discordbots.xyz/mcp

Then run /mcp inside Claude Code and pick discord to sign in.

Other clients

Any client that supports remote MCP servers with OAuth works (Cursor, VS Code, Zed, MCP Inspector …). The server publishes standard discovery documents:

  • https://api.mcp.discordbots.xyz/.well-known/oauth-protected-resource
  • https://api.mcp.discordbots.xyz/.well-known/oauth-authorization-server

Clients register themselves dynamically (RFC 7591). Access tokens live one hour; refresh tokens rotate on every use and expire after 30 days of inactivity.

Commands

  • /mcp loginLink your Discord account and get the server URL
  • /mcp logoutUnlink and revoke every connection immediately
  • /mcp statusYour link status and whether you can use MCP on this server
  • /mcp dashboardLink to this server's settings in the dashboard
  • /mcp activateTurn MCP on for this server — owner only
  • /mcp deactivateTurn MCP off for everyone on this server
  • /mcp access modeWho may use it: owner & admins, allow list, everyone, disabled
  • /mcp access add-role / remove-roleManage roles on the allow list
  • /mcp access add-user / remove-userManage members on the allow list
  • /mcp access adminsWhether administrators are always allowed in allow-list mode
  • /mcp access showShow the current policy
  • /explain messageWho made the bot send a message (link or ID), and when
  • Apps → Explain messageSame, from a message's right-click menu
  • Apps → Toggle MCP blockOwner only: block or unblock a member from MCP

Everything that changes settings is limited to the server owner.

Dashboard

Sign in at https://api.mcp.discordbots.xyz/dashboard. You see the servers you own; nobody else can open or change them. Per server you can set:

  • Activation — off by default.
  • Who may use MCP — mode, allowed roles and members, blocked members.
  • Allowed actions — which kinds of Discord requests the bot may make for anyone: GET (read), POST (create, send), PUT (assign roles, ban, pin, permissions), PATCH (edit), DELETE (delete, kick, unban).
  • Actions per minute — all changes on the server combined, 30 by default.
  • Mentions — nobody (default, allowed_mentions.parse = []), only selected roles and members, or whatever the requesting member could ping.
  • Activity — every tool call with the member behind it, and every message the bot sent.

Access policy

Each server has one policy. It is checked on every single request, before your Discord permissions are even looked at:

  • Owner & admins (default) — the owner and members with Administrator.
  • Allow list — the owner, listed roles and listed members; administrators unless turned off.
  • Everyone — every member of the server.
  • Disabled — nobody, not even the owner, until it is changed back.

Blocked members are refused in every mode; the owner can't be blocked. Passing the policy only means MCP may be used at all. What it may do is still limited to your own permissions, the allowed actions and the action limit.

Who sent this?

Messages the bot writes for someone carry a disabled Actioned by username button. For the full record — member, time and tool — run /explain with the message link, or right-click the message → Apps → Explain message. It only answers for messages of the server you run it in.

The bot never sends direct messages.

Tools

Your assistant sees these tools. Each one refuses with a clear reason when you lack the permission.

Serverlist_serversget_serverget_my_permissionsedit_serverget_audit_log
Channelslist_channelsget_channelcreate_channeledit_channeldelete_channelset_channel_permissionsremove_channel_permissions
Threads & forumslist_threadscreate_threadedit_thread
Roleslist_rolescreate_rolecreate_rolesedit_roledelete_role
Memberssearch_memberslist_membersget_memberadd_member_roleremove_member_roleset_nicknamevoice_member
Moderationtimeout_memberkick_memberban_memberunban_memberlist_banslist_automod_rulescreate_automod_ruledelete_automod_rule
Messagesread_messagesget_messagesearch_messagessend_messageedit_messagedelete_messagebulk_delete_messagespin_messagelist_pinsreact
Everything elselist_emojiscreate_emojidelete_emojilist_eventscreate_eventedit_eventdelete_eventlist_invitescreate_invitedelete_invitelist_webhookscreate_webhookdelete_webhook

Revoking access

Either of these stops all of your connections at once, including requests that are running right now:

  • /mcp logout in Discord
  • Discord → User Settings → Authorized Apps → remove Discord MCP

Removing the connector in your MCP client only disconnects that client; its tokens are not used anymore and expire on their own.