Full operational control of Discord. For AI agents — and the scripts that don't need one.
49 MCP tools. Route messages by project name — not raw channel IDs. One server for every Discord you operate.
npx discord-ops@latest One MCP server. Every Discord server you operate.
discord-ops maps your projects, guilds, and channels in a single config. Pass a project name — it finds the guild, the channel, and the owner. Tool calls use names, not snowflake IDs. Owner pings fire automatically on errors and releases. Works as an MCP server for AI agents, or as a shell command in GitHub Actions — no AI required.
{
"projects": {
"client-a": {
"guild_id": "111111111111111111",
"token_env": "CLIENT_A_DISCORD_TOKEN",
"channels": {
"releases": "987654321098765432",
"alerts": "111222333444555666",
"builds": "222333444555666777"
},
"owners": ["820027414902079548"],
"notify_owners_on": ["release", "error"]
},
"client-b": {
"guild_id": "222222222222222222",
"token_env": "CLIENT_B_DISCORD_TOKEN",
"channels": {
"dev": "333444555666777888",
"releases": "444555666777888999"
},
"owners": ["930138525013090659"],
"notify_owners_on": ["release", "alert"]
}
}
} Each project runs its own bot.
token_env per project means complete isolation. No cross-contamination
between clients or guilds.
Notifications route and mention automatically.
One call with notification_type: "release" hits the right
channel in the right guild and mentions the right owner. No lookup table, no hardcoded
IDs.
Validate before you deploy.
discord-ops validate catches missing tokens, duplicate
guilds, and invalid channel refs without connecting to Discord. Safe to run in CI pre-flight.
Load what the agent needs. Cut the rest.
Seven built-in profiles — scope an agent's tool access to exactly what it needs. Up to 85% reduction in schema token overhead.
get_messagessend_messageadd_reactioncreate_threadhealth_checklist_projectslist_bots
A CI notification bot or watch agent — can read, post, react, and open threads.
get_messageslist_channelslist_membersget_guildhealth_checklist_projectslist_bots
Read-only queries — analytics, audit agents, dashboards. Zero write access.
get_messageskick_memberban_membertimeout_memberdelete_messagepurge_messagesquery_audit_log
Moderation agents with full enforcement and audit tools.
- All tools
Complete control. Default when no profile is specified.
add_reactiondelete_messageedit_messageget_messagessend_message
A messaging-only bot. Minimal schema. No channel admin, moderation, or member access.
create_channeldelete_channeledit_channelget_channellist_channelspurge_messagesset_slowmode
Channel management agents — create, edit, archive, and moderate channel structure.
create_webhookdelete_webhookedit_webhookexecute_webhookget_webhooklist_webhooks
Webhook lifecycle management. No message or member access.
$ discord-ops --profile monitoring # CLI
$ discord-ops --tools "send_message,health_check" # ad-hoc
# ~/.discord-ops.json → "tool_profile": "monitoring" # per-project 23 production-ready embeds. One tool call.
DevOps (11)
-
releaseversion announcements with install buttons -
deploysuccess/failure with logs link -
ci_buildCI results with build link -
incidentseverity-colored alerts -
incident_resolvedresolution + postmortem -
maintenancelive timezone countdowns -
status_updateoperational/degraded/outage -
reviewPR review with diff stats -
dashboardmulti-embed service board -
oncallshift handoff with timestamps alertinfo/warn/error/critical
Team & Community (12)
-
celebrationcelebrate wins with images -
welcomeonboarding with link buttons -
shoutoutrecognize work with avatars -
quoteblock-quoted inspirational text -
announcementdeadline countdowns changelog7 section types-
milestonetarget date countdowns -
tipsyntax-highlighted code blocks pollnative Discord pollsprogressvisual progress barsstandupdaily standup summariesretrosprint retrospectives
Works in GitHub Actions. No AI required.
# No MCP client. No agent. Just npx.
- name: Notify Discord
run: |
npx discord-ops@latest run send_template --args '{
"project": "my-app",
"channel": "releases",
"template": "release",
"vars": {
"name": "my-app",
"version": "${steps.version.outputs.version}",
"highlights": "${steps.changelog.outputs.highlights}"
}
}'
env:
DISCORD_TOKEN: ${secrets.DISCORD_TOKEN}
DISCORD_OPS_CONFIG: ${secrets.DISCORD_OPS_CONFIG} Inline config via env var.
DISCORD_OPS_CONFIG accepts JSON inline. No file to write
to the runner.
All 23 templates available.
Same templates and project routing as agent use. Rich embeds in CI — no agent required.
Dry-run for testing.
--dry-run simulates destructive operations without calling
the Discord API.
Up in 30 seconds.
Install & Setup
Install globally, then run the interactive wizard — or export DISCORD_TOKEN and skip straight to discord-ops health.
$ npm install -g discord-ops
$ discord-ops setup
# Interactive wizard creates ~/.discord-ops.json Add to your AI client (.mcp.json)
Use @latest so every session gets the latest release without
a stale npx cache. Multi-org? Pass multiple token env vars and let ~/.discord-ops.json handle routing.
{
"mcpServers": {
"discord-ops": {
"command": "npx",
"args": ["-y", "discord-ops@latest"],
"env": {
"DISCORD_TOKEN": "${DISCORD_TOKEN}"
}
}
}
} Verify
Run a health check to confirm your bot token and guild connections are working.
$ discord-ops health
Bots configured: 1
Bot: MyBot#1234
Guilds: 2
Booked Solid Discord (1478...)
Client Server (1489...)
Health check passed. Validate your config (before CI)
Detects missing tokens, duplicate guild IDs, and invalid channel refs — without connecting to Discord.
$ discord-ops validate stdio for local. HTTP/SSE for remote.
Local clients
discord-ops starts the server. Works with Claude Code, Cursor,
Claude Desktop, any MCP client. No port, no auth required.
$ discord-ops Remote MCP clients
discord-ops serve --port 4242. Set DISCORD_OPS_HTTP_TOKEN for bearer auth. Constant-time comparison. GET /health
always exempt for load balancers.
$ export DISCORD_OPS_HTTP_TOKEN=your-token
$ discord-ops serve --port 4242 Give your agents Discord.
49 tools. 23 templates. Multi-guild. Multi-bot. MIT. Works in GitHub Actions with a single npx command — no AI agent required.
npx discord-ops@latest