discord-selfbot-mcp
Provides a comprehensive set of tools for automating a Discord user account, including guild and channel management, message sending/editing/deleting, reactions, voice, threads, relationships, profile editing, and interaction with buttons/menus and slash commands.
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-selfbot-mcpsend a message to #general saying hello"
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.
⚠ DEPRECATED. Use discord.py-self-mcp instead!
installation
Codex
Tell Codex:
Fetch and follow instructions from https://raw.githubusercontent.com/Microck/discord-selfbot-mcp/refs/heads/master/.codex/INSTALL.mdOpenCode
Tell OpenCode:
Fetch and follow instructions from https://raw.githubusercontent.com/Microck/discord-selfbot-mcp/refs/heads/master/.opencode/INSTALL.mdmanual installation
one-liner (recommended for AI terminals):
npx discord-selfbot-mcp-setuphow it works (step by step)
run the setup wizard
npx discord-selfbot-mcp-setupchoose how to provide your token:
1= Extract automatically (opens browser, you log in)2= Enter token manually (paste your existing token)3= Show me how to get a token manually
choose your MCP client:
1= Claude Desktop (auto-configuresclaude_desktop_config.json)2= Cursor (auto-configures Cursor's MCP settings)3= OpenCode / Claude Code CLI (prints config JSON for you to paste)4= Generic (savesmcp.jsonto current directory)5= Just show me the config (no save)
restart your MCP client - the discord-selfbot tools are now available
no .env files needed - the token is stored directly in your MCP client's config.
getting your token manually
if you prefer not to use the browser extraction:
open Discord in your browser (discord.com/app)
log in to your account
press F12 to open Developer Tools
go to the Console tab
paste this and press Enter:
(webpackChunkdiscord_app.push([[],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken).exports.default.getToken()copy the token (without quotes)
run
npx discord-selfbot-mcp-setupand choose option 2 to enter it
manual configuration
if you already have a token, add this to your MCP config:
claude desktop (claude_desktop_config.json):
{
"mcpServers": {
"discord-selfbot": {
"command": "npx",
"args": ["discord-selfbot-mcp"],
"env": {
"DISCORD_TOKEN": "your_token_here"
}
}
}
}opencode/claude code (.opencode.json or project config):
{
"mcpServers": {
"discord-selfbot": {
"command": "npx",
"args": ["discord-selfbot-mcp"],
"env": {
"DISCORD_TOKEN": "your_token_here"
}
}
}
}the token is passed via the env block in the MCP config - no separate .env file required.
captcha handling
when joining servers, discord sometimes requires captcha verification.
automatic solving (optional):
{
"mcpServers": {
"discord-selfbot": {
"command": "npx",
"args": ["discord-selfbot-mcp"],
"env": {
"DISCORD_TOKEN": "your_token",
"CAPTCHA_SERVICE": "capsolver",
"CAPTCHA_API_KEY": "your_api_key"
}
}
}
}service | env value | pricing | signup |
CapSolver |
| ~$0.80/1k | |
CapMonster |
| ~$0.70/1k | |
NopeCHA |
| 100 free/day |
browser fallback (default):
if no captcha service is configured, the MCP automatically:
opens a local webpage in your browser
shows instructions: "click to open discord invite"
you solve the captcha manually in your browser
the MCP detects when you've joined and continues
this means captcha never blocks you - worst case you solve it yourself in ~10 seconds.
features
80 tools across 18 categories.
category | tools | description |
system | 3 | health, whoami, get_config |
guilds | 8 | list, info, members, nickname, leave, invite, create, delete |
channels | 5 | list, info, create, delete, edit |
messages | 8 | read, send, reply, edit, delete, search, get, forward |
reactions | 4 | react, unreact, get_reactions, remove_all |
pins | 3 | pin, unpin, list_pinned |
dms | 5 | list, read, send, create, close |
threads | 7 | list, create, join, leave, archive, read, send |
presence | 5 | set_status, set_custom, set_activity, clear, get_user |
voice | 5 | join, leave, set_state, get_state, list_members |
relationships | 8 | friends, blocked, pending, request, remove, block, unblock, accept |
notifications | 5 | mentions, mark_read, mark_guild_read, mute_channel, mute_guild |
files | 3 | upload, download, list |
events | 4 | list, get, rsvp, create |
profile | 1 | edit_profile (avatar, bio, username) |
interactions | 4 | trigger_typing, click_button, select_menu, get_components |
invites | 1 | accept_invite (auto browser fallback for captcha) |
slash | 1 | send_slash (execute bot slash commands, waits for response) |
comparison
feature | discord-selfbot-mcp | Maol-1997 | codebyyassine | elyxlz |
read messages | yes | yes | yes | yes |
send messages | yes | yes | yes | yes |
list guilds | yes | yes | yes | yes |
list channels | yes | yes | yes | yes |
get user info | yes | yes | yes | no |
search messages | yes | no | no | no |
create channels | yes | no | yes | no |
delete channels | yes | no | yes | no |
edit messages | yes | no | no | no |
delete messages | yes | no | no | no |
join voice | yes | no | no | no |
manage friends | yes | no | no | no |
manage threads | yes | no | no | no |
slash commands | yes | no | no | no |
click buttons | yes | no | no | no |
select menus | yes | no | no | no |
setup wizard | yes | no | no | no |
captcha fallback | yes | no | no | no |
total tools | 80 | 7 | 29 | 4 |
examples
slash commands - execute bot commands:
send_slash({
channel_id: "123456789",
bot_id: "987654321",
command: "task import",
args: ["argument1", "argument2"]
})button clicks - interact with bot messages:
click_button({
channel_id: "123456789",
message_id: "987654321",
button_id: "0,0" // row 0, col 0 (first button)
})select menus - choose dropdown options:
select_menu({
channel_id: "123456789",
message_id: "987654321",
menu_id: "0",
values: ["option1", "option2"]
})inspect components - see all buttons/menus on a message:
get_components({
channel_id: "123456789",
message_id: "987654321"
})troubleshooting
problem | solution |
token invalid | run |
rate limited | reduce |
missing permissions | ensure account has access to the guild/channel |
captcha required | configure captcha service OR just solve it in the browser popup |
mcp not loading | restart your MCP client after config changes |
project structure
src/
├── core/ # configuration, logging, errors, captcha
├── discord/ # discord.js client wrapper
├── mcp/ # mcp server & registry
├── tools/ # 80 tool implementations
│ ├── channels/ # channel management
│ ├── dms/ # direct messages
│ ├── events/ # scheduled events
│ ├── files/ # file upload/download
│ ├── guilds/ # server management
│ ├── interactions/ # buttons, menus, typing
│ ├── invites/ # join servers (with captcha handling)
│ ├── messages/ # send, read, edit, delete, search
│ ├── notifications/ # mentions, mute, mark read
│ ├── presence/ # status, activity
│ ├── profile/ # edit avatar, bio, username
│ ├── relationships/ # friends, blocks
│ ├── slash/ # execute bot slash commands
│ ├── system/ # health, whoami
│ ├── threads/ # thread management
│ └── voice/ # join/leave voice channels
├── index.ts # entry point
└── setup.ts # setup wizardlicense
mit
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.
Latest Blog Posts
- 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/Microck/discord-selfbot-mcp-node-legacy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server