Search and administer Discord through MCP, with explicit access scopes and reviewed changes.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add guildcontrol --env DISCORD_BOT_TOKEN='<DISCORD_BOT_TOKEN>' -- npx -y guildctl '<CONFIG_FILE>'~/.codex/config.toml
[mcp_servers.guildcontrol]
command = "npx"
args = ["-y", "guildctl", "<CONFIG_FILE>"]
env = { DISCORD_BOT_TOKEN = "<DISCORD_BOT_TOKEN>" }
# codex mcp add guildcontrol --env DISCORD_BOT_TOKEN='<DISCORD_BOT_TOKEN>' -- npx -y guildctl '<CONFIG_FILE>'~/.cursor/mcp.json
{
"mcpServers": {
"guildcontrol": {
"command": "npx",
"args": [
"-y",
"guildctl",
"<CONFIG_FILE>"
],
"env": {
"DISCORD_BOT_TOKEN": "<DISCORD_BOT_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"guildcontrol": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"guildctl",
"<CONFIG_FILE>"
],
"env": {
"DISCORD_BOT_TOKEN": "<DISCORD_BOT_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"guildcontrol": {
"command": "npx",
"args": [
"-y",
"guildctl",
"<CONFIG_FILE>"
],
"env": {
"DISCORD_BOT_TOKEN": "<DISCORD_BOT_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"guildcontrol": {
"command": "npx",
"args": [
"-y",
"guildctl",
"<CONFIG_FILE>"
],
"env": {
"DISCORD_BOT_TOKEN": "<DISCORD_BOT_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"guildcontrol": {
"command": "npx",
"args": [
"-y",
"guildctl",
"<CONFIG_FILE>"
],
"env": {
"DISCORD_BOT_TOKEN": "<DISCORD_BOT_TOKEN>"
}
}
}
}Environment variables
DISCORD_BOT_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.