MCP Server for Discord: the real options
Four real MCP servers that drive a Discord bot, matched to what you actually need — plus the minimal config and the bot-token safety you can't skip.

The right MCP server for Discord comes down to one choice: do you want an agent that acts in Discord — sends messages, manages channels, moderates — or one that reads Discord into a knowledge base? For acting, install one bot-driven server: Discord MCP, barryyip0625's server, or IQAI's. For search and RAG over Discord history, use Graphlit instead. Every one of these is a real, community-maintained server — there is no official Discord MCP server from Discord itself.
This is the grounded shortlist, each matched to a job, with the minimal config that works. All four run locally over stdio or a local HTTP port — no surprise there, since roughly 90% of MCP servers run on your own machine over stdio. The one thing they share is the thing that matters most: a Discord bot token that can delete channels and ban members, so the safety section below isn't optional.
Pick by what the agent should do
Start from the verb, not the star count. If the agent should do things in a server, you want a bot-driven MCP server; if it should answer questions about your Discord content, you want ingestion and RAG. The table maps each option to its job so you install exactly one.
| Server | Best for | Transport | Official? | Notes |
|---|---|---|---|---|
| Discord MCP | Full server management + moderation | HTTP (localhost:8085) | Community (JDA/Java) | Broadest toolset; Docker, singleton |
| barryyip0625 | Messaging, channels, forums, webhooks | stdio / HTTP | Community (TypeScript) | npx, best docs, easy start |
| IQAI | Auto-responding bot with sampling | stdio / HTTP | Community (TypeScript) | MCP sampling, rate-limit knobs |
| Graphlit | Search/RAG over Discord + other sources | stdio | Community (TypeScript) | Ingests Discord into a knowledge base |
If you only read one row: you want an agent to run a Discord server → Discord MCP; you want a clean start for messaging and channels → barryyip0625; you want the bot to auto-reply when mentioned → IQAI; you want to ask questions about Discord content → Graphlit.
Discord MCP: the broadest toolset
For an agent that should manage a whole Discord server, Discord MCP is the one to reach for. Built on the Java Discord API (JDA), it exposes the widest surface of any option here: messages, channels, categories, roles, webhooks, invites, forums, emojis, scheduled events, voice/stage channels, permission overwrites, and moderation actions like kick, ban, and timeout. If your workflow needs to administer a community rather than just post to it, this is the coverage you want.
It defaults to an HTTP transport at http://localhost:8085/mcp in singleton mode — one shared container instead of a process per client session — and ships as a Docker image. Start it, then point your client at the URL:
{ "url": "http://localhost:8085/mcp" }
The container needs your token, passed as an environment variable when you run it: docker run -d -p 8085:8085 -e DISCORD_TOKEN saseq/discord-mcp:latest. The endpoint is bound to localhost, so it's local-only by default. Only expose it remotely behind HTTPS if you genuinely need to, and understand you're publishing an admin-capable endpoint when you do.
barryyip0625: the easiest clean start
If you just need an agent to message, manage channels, run forum threads, add reactions, and handle webhooks, barryyip0625's Discord MCP is the least-friction option. It's a TypeScript server you launch with npx, it supports both stdio (the default) and streamable HTTP, and its README ships ready-to-paste Claude Desktop and Cursor config — which is exactly why it's the one I hand to someone setting this up for the first time. It's narrower than Discord MCP (no deep moderation stack), and for most bot use cases that's a feature.
Run it over stdio with the token in the environment, not the flag:
{
"command": "npx",
"args": ["-y", "mcp-discord"],
"env": { "DISCORD_TOKEN": "<your-discord-bot-token>" }
}
One concrete gotcha: the README also shows passing the token via --config <token>. Prefer the DISCORD_TOKEN env var instead. A token on the command line shows up in process listings (ps), which is the kind of leak you don't notice until it matters.
IQAI: when the bot should answer on its own
Reach for IQAI's Discord MCP when you want the bot to listen and reply automatically, not just execute one-off tool calls. Its distinguishing feature is MCP sampling: bi-directional communication where the server can call back into your host LLM to generate a response when the bot is mentioned. It covers the usual messaging, forums, reactions, and webhooks, plus runtime knobs — per-user rate limiting, message chunk sizing, respond-to-mentions-only, DM blocking, guild blocking — that matter the moment a bot starts talking on its own.
Setup mirrors barryyip0625, just a different package:
{
"command": "npx",
"args": ["-y", "@iqai/mcp-discord"],
"env": { "DISCORD_TOKEN": "<your-discord-bot-token>" }
}
Two honest caveats. First, sampling needs a client that supports it, and support is uneven across MCP clients — check yours before you build on it. Second, this is the youngest and smallest server on the list by adoption, so treat it as the newer, feature-forward pick rather than the safe default. If you don't need auto-responses, barryyip0625 is the calmer choice.
Graphlit: reading Discord, not running it
If the goal is to search Discord rather than act in it, none of the bot servers is the right tool — use Graphlit. It ingests content from Discord alongside Slack, Google Drive, GitHub, Jira, Linear, Notion, and more into a Graphlit project, then gives your agent built-in RAG, web crawl, and search over all of it. Documents are extracted to Markdown and audio/video is transcribed on ingestion, so a channel's history becomes a queryable knowledge base instead of a live command target.
It runs over stdio and authenticates with Graphlit platform credentials, not a Discord bot token:
{
"command": "npx",
"args": ["-y", "graphlit-mcp-server"],
"env": {
"GRAPHLIT_ORGANIZATION_ID": "your-organization-id",
"GRAPHLIT_ENVIRONMENT_ID": "your-environment-id",
"GRAPHLIT_JWT_SECRET": "your-jwt-secret"
}
}
The trade-off is that this is a hosted platform play: your Discord content flows into Graphlit, and per-connector credentials (like a Discord bot token) are supplied there. Pick it when the question is "what did people say about X," not "post this to #general."
Token safety, tool budget, and what to skip
Do not skip the token discipline — a Discord bot token grants full control of the bot account, and these servers can delete channels, manage roles, and ban members. Scope the bot's gateway intents and server permissions to the minimum it actually needs in the Discord developer portal, store the token in your client's secret handling rather than a committed config file, and prefer the DISCORD_TOKEN env var over any --config flag. Treat this bot the way you'd treat a production admin login, because that's what it is.
Skip installing two Discord servers at once — they overlap heavily, and every extra server eats into the roughly 40-tool budget most clients handle before tool selection gets flaky, which is real math laid out in Cursor's tool limit. Also skip trying to drive the Discord desktop app with a general accessibility server like Touchpoint: it's a fine tool for apps with no API, but Discord has a real API and these servers use it, so you'd trade reliability for nothing.
Adding any of these is the same three steps in every client — command or URL, the token, restart — walked through in how to add an MCP server. To compare the wider field, start from the best MCP servers, filter by capabilities, or check alternatives when none of these fits your setup.