@quadslab.io/discord-mcp 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +59 -0
- package/dist/mcp-server.js +28 -10
- package/dist/mcp-server.js.map +1 -1
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.3.1] - 2026-02-22
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Troubleshooting section in README covering all common errors with fixes
|
|
13
|
+
- Actionable startup error messages that point to `init` or `check` commands
|
|
14
|
+
- More npm keywords for discoverability (cursor, windsurf, claude-desktop, ai-tools)
|
|
15
|
+
- GitHub repo topics for better search visibility
|
|
16
|
+
|
|
17
|
+
### Improved
|
|
18
|
+
|
|
19
|
+
- Startup log messages use `[discord-mcp]` prefix for cleaner output
|
|
20
|
+
- Error on missing token/guild now shows the exact command to fix it
|
|
21
|
+
- Failed startup points to `npx @quadslab.io/discord-mcp check` for diagnostics
|
|
22
|
+
|
|
8
23
|
## [1.3.0] - 2026-02-22
|
|
9
24
|
|
|
10
25
|
### Fixed
|
package/README.md
CHANGED
|
@@ -478,6 +478,65 @@ These privileged intents must be enabled in the [Discord Developer Portal](https
|
|
|
478
478
|
|
|
479
479
|
---
|
|
480
480
|
|
|
481
|
+
## Troubleshooting
|
|
482
|
+
|
|
483
|
+
Run the health check to diagnose issues:
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
npx @quadslab.io/discord-mcp check
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
<details>
|
|
490
|
+
<summary><strong>Common issues and fixes</strong></summary>
|
|
491
|
+
|
|
492
|
+
### "DISCORD_TOKEN is not set"
|
|
493
|
+
|
|
494
|
+
The MCP server can't find your bot token. Either:
|
|
495
|
+
- Run `npx @quadslab.io/discord-mcp init` to set up automatically
|
|
496
|
+
- Or check that your `.mcp.json` / MCP client config has the `DISCORD_TOKEN` in the `env` block
|
|
497
|
+
|
|
498
|
+
### "Request with opcode 8 was rate limited"
|
|
499
|
+
|
|
500
|
+
Discord rate-limited the gateway connection (usually from member caching on large servers). The server retries automatically — if you're still seeing this, wait 30 seconds and try again. This is a Discord-side limit, not a bug.
|
|
501
|
+
|
|
502
|
+
### "Role @everyone not found"
|
|
503
|
+
|
|
504
|
+
Fixed in v1.2.2+. Update to the latest version:
|
|
505
|
+
```bash
|
|
506
|
+
npx @quadslab.io/discord-mcp@latest init
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### "Missing Access" or "Missing Permissions"
|
|
510
|
+
|
|
511
|
+
The bot's role doesn't have the required permissions. Either:
|
|
512
|
+
- Re-invite the bot using the URL from `npx @quadslab.io/discord-mcp init` (it includes all permissions)
|
|
513
|
+
- Or go to **Server Settings > Roles** and grant the missing permissions to the bot's role
|
|
514
|
+
- Run `npx @quadslab.io/discord-mcp check` to see exactly which permissions are missing
|
|
515
|
+
|
|
516
|
+
### Bot can't manage a specific role
|
|
517
|
+
|
|
518
|
+
Discord enforces role hierarchy — the bot can only manage roles **below** its own highest role. Move the bot's role higher in **Server Settings > Roles**.
|
|
519
|
+
|
|
520
|
+
### Bot can't read messages
|
|
521
|
+
|
|
522
|
+
Enable **Message Content Intent** in the [Discord Developer Portal](https://discord.com/developers/applications) > Bot tab.
|
|
523
|
+
|
|
524
|
+
### "Used disallowed intents"
|
|
525
|
+
|
|
526
|
+
Enable **Server Members Intent** and **Message Content Intent** in the [Discord Developer Portal](https://discord.com/developers/applications) > Bot tab. Both are required.
|
|
527
|
+
|
|
528
|
+
### Tools work but are slow
|
|
529
|
+
|
|
530
|
+
The first tool call after startup may be slow due to caching. Subsequent calls use the cached data and should be instant. If all calls are slow, check your network connection to Discord.
|
|
531
|
+
|
|
532
|
+
### `.mcp.json` was created in the wrong directory
|
|
533
|
+
|
|
534
|
+
If you ran `init` from Desktop or Downloads, update to v1.2.3+ which auto-detects this and writes to `~/.claude.json` (global config) instead. Or move the `.mcp.json` file to your project root.
|
|
535
|
+
|
|
536
|
+
</details>
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
481
540
|
## Architecture
|
|
482
541
|
|
|
483
542
|
```
|
package/dist/mcp-server.js
CHANGED
|
@@ -23,32 +23,45 @@ export async function main() {
|
|
|
23
23
|
const token = process.env['DISCORD_TOKEN'] || process.env['BOT_TOKEN'];
|
|
24
24
|
const guildId = process.env['DISCORD_GUILD_ID'];
|
|
25
25
|
if (!token) {
|
|
26
|
-
console.error('
|
|
26
|
+
console.error('');
|
|
27
|
+
console.error(' Error: DISCORD_TOKEN is not set.');
|
|
28
|
+
console.error('');
|
|
29
|
+
console.error(' Run the setup wizard to configure:');
|
|
30
|
+
console.error(' npx @quadslab.io/discord-mcp init');
|
|
31
|
+
console.error('');
|
|
32
|
+
console.error(' Or set it manually:');
|
|
33
|
+
console.error(' DISCORD_TOKEN=your-bot-token');
|
|
34
|
+
console.error('');
|
|
27
35
|
process.exit(1);
|
|
28
36
|
}
|
|
29
37
|
if (!guildId) {
|
|
30
|
-
console.error('
|
|
38
|
+
console.error('');
|
|
39
|
+
console.error(' Error: DISCORD_GUILD_ID is not set.');
|
|
40
|
+
console.error('');
|
|
41
|
+
console.error(' Run the setup wizard to configure:');
|
|
42
|
+
console.error(' npx @quadslab.io/discord-mcp init');
|
|
43
|
+
console.error('');
|
|
44
|
+
console.error(' Or set it manually:');
|
|
45
|
+
console.error(' DISCORD_GUILD_ID=your-server-id');
|
|
46
|
+
console.error('');
|
|
31
47
|
process.exit(1);
|
|
32
48
|
}
|
|
33
49
|
// Set DISCORD_TOKEN for the discord-client module
|
|
34
50
|
process.env['DISCORD_TOKEN'] = token;
|
|
35
|
-
console.error('Starting
|
|
36
|
-
console.error(`Guild ID: ${guildId}`);
|
|
51
|
+
console.error('[discord-mcp] Starting...');
|
|
37
52
|
try {
|
|
38
53
|
// Initialize Discord client
|
|
39
|
-
console.error('Connecting to Discord...');
|
|
40
54
|
const client = await initializeClient();
|
|
41
|
-
console.error(`Logged in as ${client.user?.tag}`);
|
|
55
|
+
console.error(`[discord-mcp] Logged in as ${client.user?.tag}`);
|
|
42
56
|
// Pre-cache server data for fast lookups
|
|
43
|
-
console.error('Caching server data...');
|
|
44
57
|
await refreshServerCache();
|
|
45
58
|
// Create and start MCP server
|
|
46
59
|
const mcpServer = createMCPServer();
|
|
47
60
|
await startMCPServer(mcpServer);
|
|
48
|
-
console.error(
|
|
61
|
+
console.error(`[discord-mcp] Ready — guild ${guildId}`);
|
|
49
62
|
// Handle graceful shutdown
|
|
50
63
|
const shutdown = async (signal) => {
|
|
51
|
-
console.error(
|
|
64
|
+
console.error(`[discord-mcp] ${signal} received, shutting down...`);
|
|
52
65
|
await destroyClient();
|
|
53
66
|
process.exit(0);
|
|
54
67
|
};
|
|
@@ -56,7 +69,12 @@ export async function main() {
|
|
|
56
69
|
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
57
70
|
}
|
|
58
71
|
catch (error) {
|
|
59
|
-
|
|
72
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
73
|
+
console.error(`[discord-mcp] Failed to start: ${msg}`);
|
|
74
|
+
console.error('');
|
|
75
|
+
console.error(' Troubleshoot with:');
|
|
76
|
+
console.error(' npx @quadslab.io/discord-mcp check');
|
|
77
|
+
console.error('');
|
|
60
78
|
await destroyClient();
|
|
61
79
|
process.exit(1);
|
|
62
80
|
}
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,0CAA0C;IAC1C,sDAAsD;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quadslab.io/discord-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Manage your entire Discord server from Claude Code, Claude Desktop, Cursor, or Windsurf via MCP. 99 admin tools across 14 categories. Interactive setup wizard included.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,10 +23,15 @@
|
|
|
23
23
|
"model-context-protocol",
|
|
24
24
|
"claude",
|
|
25
25
|
"claude-code",
|
|
26
|
+
"claude-desktop",
|
|
27
|
+
"cursor",
|
|
28
|
+
"windsurf",
|
|
26
29
|
"server-admin",
|
|
27
30
|
"discord-bot",
|
|
28
31
|
"discord-management",
|
|
29
|
-
"
|
|
32
|
+
"discord-admin",
|
|
33
|
+
"anthropic",
|
|
34
|
+
"ai-tools"
|
|
30
35
|
],
|
|
31
36
|
"author": "QuadsLab",
|
|
32
37
|
"license": "MIT",
|