@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 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
  ```
@@ -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('Error: DISCORD_TOKEN or BOT_TOKEN environment variable is required');
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('Error: DISCORD_GUILD_ID environment variable is required');
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 Discord MCP server...');
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('MCP server ready and listening');
61
+ console.error(`[discord-mcp] Ready guild ${guildId}`);
49
62
  // Handle graceful shutdown
50
63
  const shutdown = async (signal) => {
51
- console.error(`\nReceived ${signal}, shutting down...`);
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
- console.error('Failed to start MCP server:', error);
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
  }
@@ -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,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;IAErC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,4BAA4B;QAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAElD,yCAAyC;QACzC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,MAAM,kBAAkB,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAEhC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEhD,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,oBAAoB,CAAC,CAAC;YACxD,MAAM,aAAa,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,aAAa,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnF,IAAI,WAAW,EAAE,CAAC;IAChB,IAAI,EAAE,CAAC;AACT,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.0",
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
- "anthropic"
32
+ "discord-admin",
33
+ "anthropic",
34
+ "ai-tools"
30
35
  ],
31
36
  "author": "QuadsLab",
32
37
  "license": "MIT",