Verified MCP server: Discord

The Discord MCP server, enumerated live on a real Mac.

  • Tools enumerated2026-08-03macOS 26.3.1
  • Packagemcp-discord 1.3.4
  • Self-reportedMCP-Discord 1.0.0
  • MCP protocol2025-06-18
  • RuntimeNode v24.18.0

The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.

The short answer

Last verified 2026-08-03

The Discord MCP server gives an AI assistant a set of Discord actions: read a channel, post a message, open and reply to forum threads, add reactions, create and delete channels and categories, and manage webhooks. Discord publishes no MCP server of its own, so the one on this page is a community package, mcp-discord, which runs on your Mac over stdio and connects to Discord as a bot you create yourself. We ran it, spoke the protocol to it, and enumerated all 22 tools it exposes; the table below is that capture, word for word. What we could not do is complete an authenticated call: that needs a real bot token and a bot invited into a real server, so this page shows the tools and the exact errors you get without one, and stops there. Two things are worth knowing before you install it. A wrong token does not stop this server: it starts anyway and lists every tool, which is why a client can look connected while nothing works. And npm is a year behind the repository: npm still serves version 1.3.4 from July 2025 while GitHub has shipped seven newer releases, so the README documents 42 tools and the package you actually get answers with 22. [1][3][4][5]

  • Tools

    22, enumerated live

  • Credentials

    Discord bot token needed [5]

  • Transport

    stdio, runs on your Mac

  • Maintainer

    barryyip0625, community project [1][3]

  • Downloads

    731 last week [2]

  • License

    MIT [1][6]

Verification

How this MCP server was verified.

Method

We spawned the server with npx over stdio with a dummy bot token, completed the MCP initialize handshake, and called tools/list: the 22 tools below are that response, word for word. We then made one real tools/call, discord_get_server_info, and it failed, as it had to. Authenticated calls here are pending a real DISCORD_TOKEN, a bot token minted in the Discord Developer Portal for a bot that has been invited into a Discord server, and we have neither, so nothing on this page claims a successful Discord read or write. We ran the server four times to collect the errors printed further down: with a dummy token passed as a command argument, with a dummy token passed as an environment variable instead, with no token at all, and once more with deliberately incomplete tool arguments. All four runs started, and all four listed the same 22 tools.

Startup banner

{"jsonrpc":"2.0","method":"log","params":{"level":"error","message":"Auto-login failed: DiscordjsError [TokenInvalid]: An invalid token was provided."}}
{"jsonrpc":"2.0","method":"log","params":{"level":"info","message":"Initializing stdio transport"}}
{"jsonrpc":"2.0","method":"log","params":{"level":"info","message":"MCP server started successfully"}}

One real tool call

tools/call discord_get_server_info {"guildId": "000000000000000000"}
Discord client not logged in.

Real lines from the captured result: enough to prove the call answered.

Tools

Every tool, enumerated from the running server.

The server answered tools/list with 22 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.

ToolWhat it does
discord_create_categoryguildId*name*positionreason

Creates a new category in a Discord server.

discord_edit_categorycategoryId*namepositionreason

Edits an existing Discord category (name and position).

discord_delete_categorycategoryId*reason

Deletes a Discord category by ID.

discord_logintoken

Logs in to Discord using the configured token

discord_sendchannelId*message*

Sends a message to a specified Discord text channel

discord_get_forum_channelsguildId*

Lists all forum channels in a specified Discord server (guild)

discord_create_forum_postforumChannelId*title*content*tags

Creates a new post in a Discord forum channel with optional tags

discord_get_forum_postthreadId*

Retrieves details about a forum post including its messages

discord_reply_to_forumthreadId*message*

Adds a reply to an existing forum post or thread

discord_create_text_channelguildId*channelName*topic

Creates a new text channel in a Discord server with an optional topic

discord_delete_channelchannelId*reason

Deletes a Discord channel with an optional reason

discord_read_messageschannelId*limit

Retrieves messages from a Discord text channel with a configurable limit

discord_get_server_infoguildId*

Retrieves detailed information about a Discord server including channels and member count

discord_add_reactionchannelId*messageId*emoji*

Adds an emoji reaction to a specific Discord message

discord_add_multiple_reactionschannelId*messageId*emojis*

Adds multiple emoji reactions to a Discord message at once

discord_remove_reactionchannelId*messageId*emoji*userId

Removes a specific emoji reaction from a Discord message

discord_delete_forum_postthreadId*reason

Deletes a forum post or thread with an optional reason

discord_delete_messagechannelId*messageId*reason

Deletes a specific message from a Discord text channel

discord_create_webhookchannelId*name*avatarreason

Creates a new webhook for a Discord channel

discord_send_webhook_messagewebhookId*webhookToken*content*usernameavatarURLthreadId

Sends a message to a Discord channel using a webhook

discord_edit_webhookwebhookId*webhookTokennameavatarchannelIdreason

Edits an existing webhook for a Discord channel

discord_delete_webhookwebhookId*webhookTokenreason

Deletes an existing webhook for a Discord channel

Parameters marked with * are required.

Setup

Working configs, one per app.

Copy the block for the app you use. Each one is the configuration this server was verified with.

Claude Desktop

Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-discord"
      ],
      "env": {
        "DISCORD_TOKEN": "YOUR_DISCORD_BOT_TOKEN"
      }
    }
  }
}

Paste your bot token in place of YOUR_DISCORD_BOT_TOKEN, then quit and reopen Claude Desktop. The README also documents passing the token as a command argument, --config followed by the token; we ran both and both work, but the environment variable keeps the token out of the process arguments, where anything on your Mac can read it. [9][5]

Claude Code

One command in your terminal:

claude mcp add discord -e DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN -- npx -y mcp-discord

Everything after the double dash is the exact command Claude Code will run, and it is the command we ran in the verification run. The -e flag sets the environment variable the server reads for its token. [10]

Cursor

Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-discord"
      ],
      "env": {
        "DISCORD_TOKEN": "YOUR_DISCORD_BOT_TOKEN"
      }
    }
  }
}

Cursor picks the file up on restart. This file holds a live bot token, so use the one in your home folder rather than a project-level .cursor/mcp.json that could end up in git. [11]

Routines

No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:

Name                   Discord
Command                npx
Arguments              -y mcp-discord
Environment Variables  DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN

The token goes in the Environment Variables field, one KEY=value per line, with no quotes around it. Click Test Connection first, and read the result carefully: this server answers with twenty-two tools even when the token is wrong, so a successful test proves the server started, not that Discord accepted you. [12]

No terminal needed

Set the Discord MCP server up without the terminal.

The connection itself needs no terminal, but the bot behind it does need setting up on Discord's own website first, and there is no way around that. Routines is a Mac app that runs MCP servers for you: create the bot once, fill in four fields, and this server's tools are available to your AI in chat and in scheduled routines.

  1. 01

    Install Routines

    Download the app from getroutines.ai/download, drag it to Applications, and sign in.

  2. 02

    Create a Discord bot and copy its token

    Go to discord.com/developers/applications, click New Application, name it, then open the Bot tab. Under Privileged Gateway Intents turn on Message Content, Server Members, and Presence: the README lists all three as prerequisites, and the server names all three in its own login error. Then click Reset Token and copy the token it shows you. That string is the credential everything else on this page needs.

  3. 03

    Invite the bot into your server

    A Discord bot can only see servers it has been added to. In the same portal open OAuth2, tick bot under scopes, pick the permissions you want it to have, and open the generated link in your browser to add it to your Discord server. If you skip this, the server starts and lists its tools but every call is about a server it cannot see.

  4. 04

    Open the MCP settings

    Back in Routines, click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.

  5. 05

    Choose Command (stdio)

    Switch the form to Command (stdio): this server is a command that runs on your Mac, not a web address. Name it Discord. Command: npx. Arguments: -y mcp-discord. In Environment Variables put one line, DISCORD_TOKEN=, followed by the token you copied.

  6. 06

    Test, then add and use it

    Click Test Connection: Routines starts the server and reports how many tools it found, twenty-two for this one. Note that it reports twenty-two with a wrong token too, so confirm the token by asking the assistant for your server info once the connection is added. Then click Add Server. The tools work in chat right away; to let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.

Routine ideas

Routines worth scheduling.

Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.

A Monday community digest

Prompt

Every Monday at 9:00, read the last week of messages in my Discord support channel, group them into questions nobody answered, bugs people reported, and feature requests, and write the result to discord-weekly.md.

An unanswered questions sweep

Prompt

Every weekday at 17:00, read the last 50 messages in my Discord support channel, list every question that still has no reply, and post that list as a single message in my team channel.

A release announcement

Prompt

Every Friday at 15:00, read my release-notes.md file, and if anything was added this week, post a short plain-English summary of it to my Discord announcements channel.

Troubleshooting

The errors we hit, and what fixed them.

Real errors captured during the verification run, printed exactly as the server returned them.

The tools are listed but every call comes back as an error

What you see

Discord client not logged in.

The fix

This is the state our verification run was in, and it is the one to understand first, because it looks like a broken server when it is not. The server started, the tools are real, and Discord simply never accepted the token. Check the token itself, then check that the three privileged intents are on in the Developer Portal, then restart your MCP client so it starts the server again.

The token is set but the login silently fails at startup

What you see

{"jsonrpc":"2.0","method":"log","params":{"level":"error","message":"Auto-login failed: DiscordjsError [TokenInvalid]: An invalid token was provided."}}

The fix

We triggered this on purpose with a made-up token. The server logs the failure and carries on: it finishes starting, answers tools/list with all twenty-two tools, and only fails when a tool is called. Most MCP clients never show you this line, so a mistyped or reset token looks like a working connection. Mint a fresh token in the Developer Portal under Bot, then Reset Token, and paste it again.

You forgot the token entirely and nothing looked wrong

What you see

{"jsonrpc":"2.0","method":"log","params":{"level":"info","message":"No Discord token found in config, skipping auto-login"}}

The fix

Started with neither the --config argument nor the DISCORD_TOKEN environment variable, the server skips the login attempt altogether and still lists all twenty-two tools. Add the token in the Environment Variables field, or after --config in the Arguments field, and restart. Both routes work; we tested both.

A login attempt says the token is missing and mentions intents

What you see

Discord token not provided and not configured. Cannot log in. Please check the following: 1. Provide a token in the login command or make sure the token is correctly set in your config or environment variables. 2. Ensure all required privileged intents (Message Content, Server Members, Presence) are enabled in the Discord Developer Portal for your bot application.

The fix

This is what the discord_login tool returns when no token reached the server, and it is worth quoting because of its second half: the server itself tells you that a correct token is not enough unless Message Content, Server Members and Presence are enabled on the bot. That switch is in the Developer Portal under your application, then Bot, then Privileged Gateway Intents, and it is the step people miss.

A tool call fails on a missing field

What you see

Invalid arguments: message: Required

The fix

The server validates arguments before it touches Discord and names the field that was missing. We triggered this by calling discord_send with a channel but no message. Nothing is wrong with your setup: tell the assistant what you actually want sent, or which message ID you mean, and it will fill the field in.

Your MCP client cannot start the server at all

The fix

The npx command belongs to Node.js. If Node is not installed on your Mac, every client on this page fails at the spawn step before the server can say anything. Install Node from nodejs.org, restart your MCP client, and try again.

FAQ

Questions people ask.

What is the Discord MCP server?

It is a small program that gives an AI assistant a set of Discord actions: reading messages in a channel, sending one, creating and deleting text channels and categories, opening forum posts and replying to them, adding and removing reactions, and managing webhooks. It runs as a local process on your Mac, talks to your AI app over stdio, and talks to Discord as a bot account you create in your own Discord Developer Portal. [5]

What exactly did you verify, and what did you not?

We started the server, completed the MCP handshake, and read the tool list off the wire; that part is measured, and the table above is the raw response. We also made real tool calls, and they failed, because a real call needs a bot token for a real Discord server and we have none. So the tool list is evidence, and nothing on this page describes what a successful Discord read or post returns. The errors we did get are printed in full in the troubleshooting section.

Which tools does the Discord MCP server include?

The running server exposes 22: messages (discord_send, discord_read_messages, discord_delete_message), reactions (discord_add_reaction, discord_add_multiple_reactions, discord_remove_reaction), forums (discord_get_forum_channels, discord_create_forum_post, discord_get_forum_post, discord_reply_to_forum, discord_delete_forum_post), channels and categories (discord_create_text_channel, discord_delete_channel, discord_create_category, discord_edit_category, discord_delete_category), webhooks (discord_create_webhook, discord_send_webhook_message, discord_edit_webhook, discord_delete_webhook), plus discord_get_server_info and discord_login. The table above is the live tools/list output, word for word.

Why does the README list 42 tools when you found 22?

Because npm and GitHub are not showing you the same software. The npm package has sat at version 1.3.4 since 10 July 2025, while the repository has shipped seven more releases since, the newest on 13 July 2026, and npm never received them. The README you read on GitHub describes the newer code: it documents 42 tools, and we counted 20 of them missing from what npx installs, including everything to do with roles and members, plus voice channels, message search, message editing and channel permissions. There is a third version number to go with it: npm says 1.3.4, the repository says 1.3.8, and the running server introduces itself over MCP as 1.0.0. All three are real, and all three are on this page. [1][4][5]

Is there an official Discord MCP server?

Not as of the date on this page. We checked three places: the discord and discordjs GitHub organisations hold no MCP repository, neither of Discord's own npm scopes, @discord and @discordjs, publishes an MCP package, and Discord's developer documentation has no MCP page, the address one would live at returns a 404. Watch the scope when you search npm, because packages named @discord-mcp are published by an unrelated account, not by Discord. Every Discord MCP server you can install today, including this one, is community built by an individual developer, so read the maintainer line above the way you would read it on any other unaffiliated package. [8]

What do I need before any of it works?

Three things, all free, all on Discord's side. A bot application in the Discord Developer Portal, its token copied out of the Bot tab. Three privileged gateway intents switched on for that bot: Message Content, Server Members, and Presence. And the bot invited into the Discord server you want it to work in, through the OAuth2 link the portal generates, because a bot can only see servers it was explicitly added to. Skip any one of them and you get the errors printed in the troubleshooting section above. [5][7]

Do I need the terminal to set it up?

Not for the connection. In Routines you fill four fields in Settings and click Test Connection; the walkthrough above shows every click. Claude Desktop and Cursor each need a small JSON file edited once. Only Claude Code is terminal-first by nature. The bot creation itself happens on Discord's website, not in a terminal, so nobody has to type a command to use this server. [12][9]

Sources

Every external claim, receipted.

Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.

  1. [1]

    npm registry: mcp-discordaccessed 2026-08-03

    Latest version 1.3.4, published 2025-07-10, license MIT, sole maintainer barry99625.

  2. [2]

    npm downloads API: last weekaccessed 2026-08-03

    731 downloads for the week ending 2026-08-01.

  3. [3]

    GitHub: barryyip0625/mcp-discordaccessed 2026-08-03

    101 stars, 57 forks and a push dated 2026-07-13 at access time, per the GitHub API.

  4. [4]

    barryyip0625/mcp-discord releasesaccessed 2026-08-03

    Seven releases after v1.3.4, from v1.3.5 to v1.4.1 on 2026-07-13, none of which reached npm.

  5. [5]

    mcp-discord READMEaccessed 2026-08-03

    Prerequisites, the three privileged intents, the bot invite links, the npx command, and a tools list of 42 entries.

  6. [6]

    mcp-discord LICENSE fileaccessed 2026-08-03

    MIT License, copyright 2025 BarryY.

  7. [7]

    Discord Developer Portal: applicationsaccessed 2026-08-03

    Where the bot, its token, its privileged intents and its invite link come from.

  8. [8]

    Discord developer documentationaccessed 2026-08-03

    The docs index resolves; the /developers/mcp path under it returns 404 at access time, so Discord documents no MCP server.

  9. [9]

    modelcontextprotocol.io: Connect to local MCP serversaccessed 2026-08-03

    The official Claude Desktop quickstart and the shape of claude_desktop_config.json.

  10. [10]

    Claude Code docs: MCPaccessed 2026-08-03

    The claude mcp add syntax, including -e for environment variables.

  11. [11]

    Cursor docs: Model Context Protocolaccessed 2026-08-03

    The mcp.json shape and file locations.

  12. [12]

    Routines: Connectorsaccessed 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server.

This page describes Discord as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.

Behind this directory

Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines