Discord Manager
Allows AI assistants to manage and interact with Discord servers: catch up on messages, triage mentions, manage bookmarks with reasons, send messages, and monitor ingestion health.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Discord ManagerCatch me up on #general since last night."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Discord Manager
Let an AI assistant run your Discord server day for you. Discord Manager is a headless, self-hosted product: your own Discord bot ingests your server into a local append-only store, and an MCP server exposes it to the AI assistant you already use. There is no web UI β you catch up, triage mentions, manage bookmarks, and post replies by talking.
"Catch me up on #engineering since yesterday, bookmark anything that needs me, and answer the deploy question in the thread."
Each person runs their own bot and their own local stack. Nothing is shared, nothing leaves your machine but the Discord API calls your own bot makes.
What you get
Catch-up digests β everything posted since a moment in time, across the server or in one channel, each message with a jump link. Long stretches come back 200 messages at a time, so your assistant can walk a busy week in order.
Mention triage β the messages that pinged you, exactly as Discord counts a ping, ready for an assistant to sort by what actually needs you.
Bookmarks without Nitro β react to any message with π and your bot records a bookmark; remove the reaction and it's gone. Your assistant can also bookmark by message link, resolve, and snooze β privately, with no reaction anyone can see. Only your reactions count, so a whole team of bots coexists in one server without crosstalk.
Bookmarks that know why they're there β every bookmark is filed under a reason you manage, so "what am I on the hook to answer?" is a different question from "what should I read on the train?". A π reaction can't carry intent, so those land in your Inbox for your assistant to sort.
Draft and send β messages posted to any channel as your bot, optionally as a reply, with a status trail for every send. When a send comes back refused, your assistant can retry it as a linked second attempt, and the retry is refused outright unless the first one provably never reached the channel β so a message you asked for once can never turn up twice.
Ingestion health β whether the bot is still receiving from Discord and how far its history backfills have got, as plain readings with a concrete next action.
Everything is stored locally in SQLite as an append-only event history: edits are revisions, deletions are events, and nothing is ever erased β a bookmarked message survives the author's edit.
Related MCP server: Eye of Sauron - Discord Bot MCP
Setup
You'll need Node.js 22.12+ and pnpm 10.
1. Create your Discord app
Go to the Discord Developer Portal and click New Application. Name it after yourself β this bot acts for you (e.g. "Dana's Manager").
In Bot, click Reset Token and copy the token β you'll put it in
.envin a moment. Keep it secret; it is your bot.Still in Bot, under Privileged Gateway Intents, enable Message Content Intent. Without it Discord hands your bot empty messages.
2. Invite the bot to your server
In OAuth2, copy your Client ID, put it into this URL, open it, and pick your server:
https://discord.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=bot&permissions=274877975552274877975552 is exactly View Channels + Send Messages + Send Messages in Threads + Read Message History β everything the product does, nothing it doesn't. You'll need to be a server admin, or ask one.
3. Configure
git clone https://github.com/seasonedcc/discord-manager.git
cd discord-manager
pnpm install
cp .env.example .envOn Linux, pnpm install may have to build better-sqlite3 from source when no prebuilt binary matches your Node version β install python3 and your distribution's build tools (build-essential on Debian and Ubuntu) first if the install stops there.
Fill in .env β the file explains where each value comes from: your bot token, your own Discord user id (so only your π reactions become bookmarks), and the server id.
Then create the local store:
pnpm run db:migrate4. Start ingesting
pnpm run ingestThis is the long-running daemon: it connects to Discord's gateway, records everything as it happens, and backfills the history it missed while it was away β on startup and again after every reconnect. Threads Discord has archived get one last backfill each, so nothing said just before they went quiet is lost, and then they stop costing a request on every reconnect; post in one and it comes straight back. Keep it running however you keep things running (a terminal tab is fine to start).
5. Wire up your assistant
The repo ships a .mcp.json that wires the MCP server the way an assistant spawns it. With Claude Code, opening the repo is enough β it picks up .mcp.json and asks you to approve the server the first time; approve it and it starts per session from then on. For any other MCP client, point it at:
pnpm run mcpIf your client cannot find pnpm β GUI apps often start without your shell's PATH β put the absolute path in .mcp.json instead (which pnpm tells you where it lives), and give it the repo directory as the working directory.
Then just talk: "What did I miss since this morning?" β "Bookmark that as something to answer later." β "Sort my bookmark inbox." β "Reply that we'll ship it Thursday."
Try it before inviting a bot
Want to feel the product before touching the Developer Portal? Seed a demo store and point your assistant at it:
pnpm install
cp .env.example .env # fill the three Discord values with anything, e.g. "demo"
pnpm run db:migrate
pnpm run db:seed:devThe seed only ever runs against a freshly created, empty database, and sending will fail with demo credentials β everything that reads works. It leaves one refused send behind so you can see messages_send_status offer a retry.
The tools
Tool | What you get |
| The channels the bot can see, with the name each one carries now, plus its topic, category and position when it has them β and for threads, whether Discord has archived them, archived ones last |
| Everything posted since a moment in time, across the server or in one channel, 200 at a time |
| The messages that pinged you since a moment in time β someone naming you, plus replies to you the sender left the ping on |
| A bookmark from a Discord message link, filed under the reason you pick |
| The bookmarks still waiting on you, each with its reason, snoozed ones and single-reason views on request |
| A bookmark cleared, leaving any reaction in Discord untouched |
| A bookmark hidden until the moment you pick |
| A bookmark filed under a different reason β how an unsorted π capture leaves the Inbox |
| The reasons you can file bookmarks under, with how many bookmarks each one holds |
| A reason of your own, on top of the ones you started with |
| A reason reworded, on every bookmark already carrying it |
| A reason taken out of circulation, without disturbing the bookmarks that carry it |
| A message posted to a channel as your bot, optionally as a reply, or as a guarded retry of an earlier send |
| Where a send ended up β delivered, skipped, failed, still on its way, or stalled when nothing was ever recorded β whether it can be retried, and every attempt already made at it |
| Whether the bot is receiving from Discord, and how far backfills have got |
Good to know
π reactions are visible to the channel, like any reaction. When you'd rather bookmark quietly, ask your assistant to
bookmarks_addthe message link β nothing appears in Discord.Every bookmark carries a reason, so your assistant can triage by intent rather than guess. You start with six: Answer later, To-do, Follow up, Read later, Reference, and Inbox. Add, reword, and retire your own with the
bookmark_reasons_*tools β retiring one leaves the bookmarks already carrying it untouched, still showing its name.A π reaction cannot carry intent, so captures land in Inbox rather than have one invented for them. Ask your assistant to sort the inbox β "what's in my bookmark inbox?" β and it files each one with
bookmarks_set_reason. Inbox is the one reason you cannot reword or retire, because it is where every unsorted capture has to land.One deployment, one server, one owner. The bot only records the server you configured, and only answers to you. Teammates clone the repo and create their own app β five minutes each, no shared infrastructure.
This is a bot, not your account. Automating a user account ("self-botting") violates Discord's Terms of Service and risks a ban; Discord Manager only ever acts through a bot you created, posting as itself.
Development
pnpm run test:unit # Vitest against a real throwaway SQLite store β no mocks
pnpm run test:e2e # behavior specs driving the real MCP server over stdio
pnpm run test # both
pnpm run lint
pnpm run tscThe store is append-only β INSERT is the only write, and state is computed at query time. The end-to-end suite seeds through the real ingestion code with a scripted gateway feed, spawns the real MCP server, and fails if any registered tool goes unexercised. docs/architecture.md has the full picture; CLAUDE.md carries the working conventions if you're contributing with an AI assistant.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Discord servers through a bot, supporting channel management, messaging, forum operations, reactions, and webhooks.Last updated22671MIT
- Alicense-qualityDmaintenanceEnables AI assistants to control Discord servers with 93 tools for server management, moderation, voice TTS, AI chat via OpenRouter, and World of Warships stats lookup through the Model Context Protocol.Last updated271MIT
- Alicense-qualityBmaintenanceEnables comprehensive interaction with Discord servers to manage guilds, channels, messages, and members through an agentic workflow. It supports RAG capabilities, rate-limited message operations, and includes a React-based dashboard for monitoring and configuration.Last updated1MIT
- Alicense-qualityBmaintenanceEnables AI clients to manage Discord servers through natural language, offering tools for guilds, channels, messages, roles, members, webhooks, invites, and automations. Includes a conversational agent that responds to @mentions in Discord.Last updated8Apache 2.0
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyβ¦
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seasonedcc/discord-manager'
If you have feedback or need assistance with the MCP directory API, please join our Discord server