Crow
MCP server that gives AI agents first-class access to Discord, enabling discovery, messaging, channel management, moderation, and arbitrary REST calls through typed, consent-aware tools.
README
<p align="center"> <img src="assets/crow-logo.png" alt="Crow logo" width="180" /> </p>
<h1 align="center">Crow</h1>
<p align="center"><em>A Discord toolkit for AI agents.</em></p>
Crow is an MCP (Model Context Protocol) server built on the
@modelcontextprotocol/sdk. It gives AI
agents first-class access to Discord: discovery, messaging, channels, invites, emojis, stickers,
moderation, and arbitrary REST calls, through a small set of typed, consent-aware tools.
Links
What is Crow?
Crow is a single-purpose MCP server that bridges an AI agent and a Discord bot account. Configure it
once with a bot userId and token, connect it to any MCP client, and the agent can discover the
guilds, members, and channels it has access to, then read and send messages, manage channels, apply
consent-gated moderation, and fall back to raw Discord REST calls for edge cases.
Crow is deliberately small and convention-driven. Each capability is a self-contained tool module registered through a single registry, so adding a Discord feature is a matter of writing one file and registering it.
Capabilities
- Discovery: list guilds, members, channels, and bans so the agent can select its target.
- Overview:
get_guild_overviewgives a one-call orientation of a guild (basics + boost info, channels grouped by category, and roles). - Notes: attach local, informational notes to users, roles, channels, messages, guilds, webhooks, and more, so context survives across agent sessions.
- Messaging: read (with embeds, components, and attachments), send, edit, delete, pin, and bulk-delete messages.
- Direct messages: list DM channels, send DMs, and read DM history with content, embeds, components, and attachments.
- Embeds: build rich embeds with Discord's limits enforced.
- Components: send messages with buttons, select menus, and Components V2 layout (containers, sections, text, media galleries, thumbnails, separators, files).
- Channels: full control: text/voice/forum settings, threads, forum posts, and permission overwrites.
- Guild config: set the guild name, description, and rules channel.
- Roles: create, modify, and delete roles; assign and remove them from members.
- Members: edit nicknames, voice state, and timeouts.
- Self: read and modify the bot's own profile (username, avatar, banner, bio) and its per-guild member profile (nickname, guild avatar/banner/bio).
- Voice: read and modify stage-channel voice states (suppress, request-to-speak, and move between stage channels).
- Reactions: add, remove, and list message reactions.
- Audit: read the guild audit log.
- Community: manage the welcome screen, onboarding, and membership screening.
- Boost: read a guild's Server Boost level, boost count, and progress bar state.
- Webhooks: create, manage, and execute webhooks.
- Attachments: send files, images, and GIFs alongside messages.
- Invites: list, create, inspect, and delete guild and channel invites.
- Emojis: create, list, modify, and delete custom emojis.
- Stickers: create, list, modify, and delete guild stickers, plus sticker packs.
- Actions: register replies and modals for component interactions, and inspect the values users submit.
- Gateway:
crow gatewaydaemon receives interactions live and dispatches registered actions. - Moderation: kick and ban behind an explicit consent gate; list and unban.
- Raw REST: a generic Discord REST escape hatch for any endpoint the typed tools do not cover.
Destructive actions (kick_member, ban_member, delete_channel, delete_message,
delete_webhook, delete_invite, delete_emoji, delete_sticker, delete_role,
bulk_delete_messages) require an explicit "confirm": true consent flag.
Every tool also declares MCP annotations (readOnlyHint, destructiveHint, idempotentHint,
openWorldHint) plus human-readable titles and per-field descriptions, so clients can present and
permission the tools safely.
Tools
| Module | Tools |
|---|---|
| Health | ping |
| Discovery | list_guilds, get_guild, list_members, get_member, list_channels, get_channel |
| Overview | get_guild_overview |
| Messaging | read_messages, send_message, edit_message, delete_message, pin_message, unpin_message, bulk_delete_messages |
| Direct messages | list_dm_channels, get_dm_channel, send_dm, read_dm_messages |
| Embeds | create_embed |
| Channels & threads | modify_channel, create_channel, delete_channel, list_active_threads, list_archived_threads, create_thread, modify_thread, edit_channel_permissions, delete_channel_permissions |
| Guild config | modify_guild |
| Roles | list_roles, create_role, modify_role, delete_role |
| Members | modify_member, add_role_to_member, remove_role_from_member |
| Self | get_current_user, modify_current_user, modify_current_member |
| Voice | get_voice_state, modify_voice_state |
| Reactions | add_reaction, remove_own_reaction, remove_user_reaction, list_reactions |
| Audit | list_audit_log_entries |
| Community | get_welcome_screen, modify_welcome_screen, get_onboarding, modify_onboarding, get_member_verification, modify_member_verification |
| Boost | get_boost_info |
| Webhooks | list_webhooks, get_webhook, create_webhook, modify_webhook, delete_webhook, execute_webhook |
| Invites | list_guild_invites, list_channel_invites, get_invite, get_vanity_url, create_invite, delete_invite |
| Emojis | list_emojis, get_emoji, create_emoji, modify_emoji, delete_emoji |
| Stickers | list_stickers, get_sticker, list_sticker_packs, get_sticker_pack, create_sticker, modify_sticker, delete_sticker |
| Actions | register_action, list_actions, remove_action, list_recent_interactions |
| Notes | add_note, list_notes, remove_note, clear_notes |
| Moderation | list_bans, get_ban, kick_member, ban_member, unban_member |
| Raw | discord_request |
See docs/tools.md for the full reference, the selection pipeline, and the consent model.
Quick Start
Install with one command, which clones the repo, builds it, links the crow command onto your PATH,
and drops you into the setup wizard:
curl -fsSL https://raw.githubusercontent.com/Hydr46605/Crow/main/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/Hydr46605/Crow/main/install.ps1 | iex
Windows (cmd.exe):
curl -o install.bat https://raw.githubusercontent.com/Hydr46605/Crow/main/install.bat && install.bat
The wizard asks for your bot token, detects the bot user ID, verifies the token against Discord,
and checks that the privileged intents Crow needs (GUILD_MEMBERS, MESSAGE_CONTENT) are enabled,
prompting you to fix and re-check them if they are not.
Command line
Crow ships a single crow command:
| Command | What it does |
|---|---|
crow / crow serve |
Run the MCP server over stdio. |
crow setup |
Interactive setup wizard (token → user ID → intent check → save). |
crow doctor |
Check the bot token and privileged intents. |
crow gateway |
Run the always-on interaction gateway daemon. |
crow --version |
Print the version. |
crow --help |
Show help. |
Credentials live in ~/.crow/.env (owner-readable) and are loaded automatically, so an MCP client
config is just:
{
"mcpServers": {
"crow": {
"command": "crow"
}
}
}
Prefer inline credentials? You can still set CROW_BOT_TOKEN and CROW_BOT_USER_ID in the
client's env block instead.
Build from source
git clone https://github.com/Hydr46605/Crow.git
cd Crow
npm install
npm run build
npm start
Compatibility
- Node.js
>= 22(CI runs against 22 and 24). - ESM-only.
- Discord API v10 via
discord.js. - Distributed via GitHub (not npm); install with the scripts above.
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.