discord-ops 0.2.0 → 0.3.0

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +106 -69
  3. package/dist/cli/index.js +40 -3
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/setup.d.ts +7 -0
  6. package/dist/cli/setup.d.ts.map +1 -0
  7. package/dist/cli/setup.js +397 -0
  8. package/dist/cli/setup.js.map +1 -0
  9. package/dist/server.d.ts +4 -1
  10. package/dist/server.d.ts.map +1 -1
  11. package/dist/server.js +30 -1
  12. package/dist/server.js.map +1 -1
  13. package/dist/tools/channels/index.d.ts +1 -0
  14. package/dist/tools/channels/index.d.ts.map +1 -1
  15. package/dist/tools/channels/index.js +1 -0
  16. package/dist/tools/channels/index.js.map +1 -1
  17. package/dist/tools/channels/permissions.d.ts +3 -0
  18. package/dist/tools/channels/permissions.d.ts.map +1 -0
  19. package/dist/tools/channels/permissions.js +34 -0
  20. package/dist/tools/channels/permissions.js.map +1 -0
  21. package/dist/tools/guilds/index.d.ts +1 -0
  22. package/dist/tools/guilds/index.d.ts.map +1 -1
  23. package/dist/tools/guilds/index.js +1 -0
  24. package/dist/tools/guilds/index.js.map +1 -1
  25. package/dist/tools/guilds/invites.d.ts +4 -0
  26. package/dist/tools/guilds/invites.d.ts.map +1 -0
  27. package/dist/tools/guilds/invites.js +93 -0
  28. package/dist/tools/guilds/invites.js.map +1 -0
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +14 -0
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/messaging/index.d.ts +3 -0
  33. package/dist/tools/messaging/index.d.ts.map +1 -1
  34. package/dist/tools/messaging/index.js +3 -0
  35. package/dist/tools/messaging/index.js.map +1 -1
  36. package/dist/tools/messaging/pin.d.ts +3 -0
  37. package/dist/tools/messaging/pin.d.ts.map +1 -0
  38. package/dist/tools/messaging/pin.js +24 -0
  39. package/dist/tools/messaging/pin.js.map +1 -0
  40. package/dist/tools/messaging/search.d.ts +3 -0
  41. package/dist/tools/messaging/search.d.ts.map +1 -0
  42. package/dist/tools/messaging/search.js +61 -0
  43. package/dist/tools/messaging/search.js.map +1 -0
  44. package/dist/tools/messaging/unpin.d.ts +3 -0
  45. package/dist/tools/messaging/unpin.d.ts.map +1 -0
  46. package/dist/tools/messaging/unpin.js +24 -0
  47. package/dist/tools/messaging/unpin.js.map +1 -0
  48. package/dist/tools/threads/archive.d.ts +3 -0
  49. package/dist/tools/threads/archive.d.ts.map +1 -0
  50. package/dist/tools/threads/archive.js +33 -0
  51. package/dist/tools/threads/archive.js.map +1 -0
  52. package/dist/tools/threads/index.d.ts +1 -0
  53. package/dist/tools/threads/index.d.ts.map +1 -1
  54. package/dist/tools/threads/index.js +1 -0
  55. package/dist/tools/threads/index.js.map +1 -1
  56. package/dist/transport/http.d.ts +6 -0
  57. package/dist/transport/http.d.ts.map +1 -0
  58. package/dist/transport/http.js +81 -0
  59. package/dist/transport/http.js.map +1 -0
  60. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -4,7 +4,15 @@
4
4
 
5
5
  ### Minor Changes
6
6
 
7
- - d2c052b: Add 17 new tools (moderation, role CRUD, webhook CRUD+execute, audit log, channel moderation), security hardening (rate limiting, permission pre-flight, snowflake validation, self-protection guards), and local CI infrastructure.
7
+ - 6e421f2: Add 8 new tools (pin/unpin message, search messages, archive thread, set channel permissions, get/create invites), HTTP/SSE transport, dry-run mode for destructive operations, and interactive CLI setup wizard.
8
+
9
+ ## 0.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 17 new tools: moderation (kick, ban, unban, timeout), role CRUD + assign, webhook CRUD + execute, audit log query, channel moderation (purge, slowmode, edit, delete)
14
+ - Security hardening: rate limiting, permission pre-flight checks, snowflake validation, self-protection guards, error sanitization
15
+ - Local CI infrastructure (act-ci.sh + act-ci.yml)
8
16
 
9
17
  ## 0.1.0
10
18
 
package/README.md CHANGED
@@ -8,10 +8,13 @@ Agency-grade Discord MCP server with multi-guild project routing.
8
8
 
9
9
  ## Features
10
10
 
11
- - **35 MCP tools** — messaging, channels, moderation, roles, webhooks, audit log, threads, guilds, health check
11
+ - **42 MCP tools** — messaging, channels, moderation, roles, webhooks, audit log, threads, guilds, invites, permissions, search
12
12
  - **Multi-guild project routing** — `send_message({ project: "my-app", channel: "builds" })` instead of raw channel IDs
13
13
  - **Notification routing** — map notification types (ci_build, deploy, error) to channels per project
14
14
  - **Multi-bot support** — manage multiple Discord bots from a single MCP server
15
+ - **HTTP/SSE + stdio transports** — stdio for Claude Code, HTTP/SSE for remote MCP clients
16
+ - **Dry-run mode** — simulate destructive operations without calling Discord API
17
+ - **Interactive setup wizard** — `discord-ops setup` walks through config creation
15
18
  - **Security hardening** — rate limiting, permission pre-flight checks, snowflake ID validation, self-protection guards
16
19
  - **Lazy login** — tools enumerate before Discord connects; first tool call triggers login
17
20
  - **Zod validation** — all inputs validated before execution
@@ -25,14 +28,18 @@ Agency-grade Discord MCP server with multi-guild project routing.
25
28
  # Install
26
29
  npm install -g discord-ops
27
30
 
28
- # Set your bot token
29
- export DISCORD_TOKEN="your-bot-token"
31
+ # Interactive setup (creates ~/.discord-ops.json)
32
+ discord-ops setup
30
33
 
31
- # Run health check
34
+ # Or manual setup
35
+ export DISCORD_TOKEN="your-bot-token"
32
36
  discord-ops health
33
37
 
34
38
  # Start MCP server (stdio)
35
39
  discord-ops
40
+
41
+ # Start MCP server (HTTP/SSE)
42
+ discord-ops serve --port 3000
36
43
  ```
37
44
 
38
45
  ## Claude Code Integration
@@ -108,83 +115,113 @@ send_message({ channel_id: "123456789", content: "Hello" })
108
115
 
109
116
  ## Tools
110
117
 
111
- ### Messaging
112
-
113
- | Tool | Description |
114
- | --- | --- |
115
- | `send_message` | Send a message with project routing |
116
- | `get_messages` | Fetch recent messages |
117
- | `edit_message` | Edit a bot message |
118
- | `delete_message` | Delete a message |
119
- | `add_reaction` | React to a message |
120
-
121
- ### Channels
122
-
123
- | Tool | Description |
124
- | --- | --- |
125
- | `list_channels` | List guild channels |
126
- | `get_channel` | Get channel details |
127
- | `create_channel` | Create a channel |
128
- | `edit_channel` | Edit channel properties |
129
- | `delete_channel` | Delete a channel |
130
- | `purge_messages` | Bulk-delete messages (max 100, < 14 days old) |
131
- | `set_slowmode` | Set or disable slowmode |
132
-
133
- ### Moderation
134
-
135
- | Tool | Description |
136
- | --- | --- |
137
- | `kick_member` | Kick a member from a guild |
138
- | `ban_member` | Ban a user from a guild |
139
- | `unban_member` | Unban a user |
140
- | `timeout_member` | Timeout (mute) a member |
141
-
142
- ### Roles
143
-
144
- | Tool | Description |
145
- | --- | --- |
146
- | `list_roles` | List guild roles |
147
- | `create_role` | Create a new role |
148
- | `edit_role` | Edit role properties |
149
- | `delete_role` | Delete a role |
118
+ ### Messaging (8 tools)
119
+
120
+ | Tool | Description |
121
+ | ----------------- | ------------------------------------------------- |
122
+ | `send_message` | Send a message with project routing |
123
+ | `get_messages` | Fetch recent messages |
124
+ | `edit_message` | Edit a bot message |
125
+ | `delete_message` | Delete a message |
126
+ | `add_reaction` | React to a message |
127
+ | `pin_message` | Pin a message in a channel |
128
+ | `unpin_message` | Unpin a message |
129
+ | `search_messages` | Search messages by content, author, or date range |
130
+
131
+ ### Channels (8 tools)
132
+
133
+ | Tool | Description |
134
+ | ----------------- | ----------------------------------------------------- |
135
+ | `list_channels` | List guild channels |
136
+ | `get_channel` | Get channel details |
137
+ | `create_channel` | Create a channel |
138
+ | `edit_channel` | Edit channel properties |
139
+ | `delete_channel` | Delete a channel |
140
+ | `purge_messages` | Bulk-delete messages (max 100, < 14 days old) |
141
+ | `set_slowmode` | Set or disable slowmode |
142
+ | `set_permissions` | Set channel permission overrides for a role or member |
143
+
144
+ ### Moderation (4 tools)
145
+
146
+ | Tool | Description |
147
+ | ---------------- | -------------------------- |
148
+ | `kick_member` | Kick a member from a guild |
149
+ | `ban_member` | Ban a user from a guild |
150
+ | `unban_member` | Unban a user |
151
+ | `timeout_member` | Timeout (mute) a member |
152
+
153
+ ### Roles (5 tools)
154
+
155
+ | Tool | Description |
156
+ | ------------- | ---------------------------------- |
157
+ | `list_roles` | List guild roles |
158
+ | `create_role` | Create a new role |
159
+ | `edit_role` | Edit role properties |
160
+ | `delete_role` | Delete a role |
150
161
  | `assign_role` | Add or remove a role from a member |
151
162
 
152
- ### Webhooks
163
+ ### Webhooks (6 tools)
153
164
 
154
- | Tool | Description |
155
- | --- | --- |
156
- | `create_webhook` | Create a webhook on a channel |
157
- | `get_webhook` | Get webhook details |
158
- | `list_webhooks` | List webhooks for a guild or channel |
159
- | `edit_webhook` | Edit webhook properties |
160
- | `delete_webhook` | Delete a webhook |
161
- | `execute_webhook` | Send a message via webhook |
165
+ | Tool | Description |
166
+ | ----------------- | ------------------------------------ |
167
+ | `create_webhook` | Create a webhook on a channel |
168
+ | `get_webhook` | Get webhook details |
169
+ | `list_webhooks` | List webhooks for a guild or channel |
170
+ | `edit_webhook` | Edit webhook properties |
171
+ | `delete_webhook` | Delete a webhook |
172
+ | `execute_webhook` | Send a message via webhook |
162
173
 
163
- ### Audit
174
+ ### Audit (1 tool)
164
175
 
165
- | Tool | Description |
166
- | --- | --- |
176
+ | Tool | Description |
177
+ | ----------------- | ---------------------------------- |
167
178
  | `query_audit_log` | Query guild audit log with filters |
168
179
 
169
- ### Other
180
+ ### Guilds & Members (6 tools)
181
+
182
+ | Tool | Description |
183
+ | --------------- | ----------------------------------- |
184
+ | `list_guilds` | List bot's guilds |
185
+ | `get_guild` | Get guild details |
186
+ | `get_invites` | Get all active invites for a guild |
187
+ | `create_invite` | Create an invite link for a channel |
188
+ | `list_members` | List guild members |
189
+ | `get_member` | Get member details |
190
+
191
+ ### Threads (3 tools)
192
+
193
+ | Tool | Description |
194
+ | ---------------- | -------------------------------------- |
195
+ | `create_thread` | Create a thread |
196
+ | `list_threads` | List active threads |
197
+ | `archive_thread` | Archive (and optionally lock) a thread |
170
198
 
171
- | Tool | Description |
172
- | --- | --- |
173
- | `list_guilds` | List bot's guilds |
174
- | `get_guild` | Get guild details |
175
- | `list_members` | List guild members |
176
- | `get_member` | Get member details |
177
- | `create_thread` | Create a thread |
178
- | `list_threads` | List active threads |
199
+ ### System (1 tool)
200
+
201
+ | Tool | Description |
202
+ | -------------- | ------------------------ |
179
203
  | `health_check` | Bot status + permissions |
180
204
 
205
+ ## CLI
206
+
207
+ ```
208
+ discord-ops Start MCP server (stdio transport)
209
+ discord-ops serve Start MCP server (HTTP/SSE transport)
210
+ discord-ops setup Interactive setup wizard
211
+ discord-ops health Run health check + permission audit
212
+ discord-ops --dry-run Simulate destructive operations
213
+ discord-ops --help Show help
214
+ discord-ops --version Show version
215
+ ```
216
+
181
217
  ## Environment Variables
182
218
 
183
- | Variable | Required | Description |
184
- | --- | --- | --- |
185
- | `DISCORD_TOKEN` | Yes | Discord bot token |
186
- | `DISCORD_OPS_CONFIG` | No | Path to global config (default: `~/.discord-ops.json`) |
187
- | `DISCORD_OPS_LOG_LEVEL` | No | `debug`, `info`, `warn`, `error` (default: `info`) |
219
+ | Variable | Required | Description |
220
+ | ----------------------- | -------- | ------------------------------------------------------ |
221
+ | `DISCORD_TOKEN` | Yes | Discord bot token |
222
+ | `DISCORD_OPS_CONFIG` | No | Path to global config (default: `~/.discord-ops.json`) |
223
+ | `DISCORD_OPS_LOG_LEVEL` | No | `debug`, `info`, `warn`, `error` (default: `info`) |
224
+ | `DISCORD_OPS_DRY_RUN` | No | Enable dry-run mode (any truthy value) |
188
225
 
189
226
  ## Development
190
227
 
package/dist/cli/index.js CHANGED
@@ -3,7 +3,9 @@ import { loadConfig } from "../config/index.js";
3
3
  import { DiscordClient } from "../client.js";
4
4
  import { createServer } from "../server.js";
5
5
  import { startStdioTransport } from "../transport/stdio.js";
6
+ import { startHttpTransport } from "../transport/http.js";
6
7
  import { logger, setLogLevel } from "../utils/logger.js";
8
+ import { runSetup } from "./setup.js";
7
9
  async function main() {
8
10
  const args = process.argv.slice(2);
9
11
  // Handle --help
@@ -13,7 +15,7 @@ async function main() {
13
15
  }
14
16
  // Handle --version
15
17
  if (args.includes("--version") || args.includes("-v")) {
16
- console.log("discord-ops 0.1.0");
18
+ console.log("discord-ops 0.2.0");
17
19
  process.exit(0);
18
20
  }
19
21
  // Handle health subcommand
@@ -21,6 +23,14 @@ async function main() {
21
23
  await runHealthCheck();
22
24
  return;
23
25
  }
26
+ // Handle setup subcommand
27
+ if (args[0] === "setup") {
28
+ await runSetup();
29
+ return;
30
+ }
31
+ // Parse global flags
32
+ const dryRun = args.includes("--dry-run");
33
+ const serverOptions = { dryRun };
24
34
  // Configure log level
25
35
  const logLevel = process.env.DISCORD_OPS_LOG_LEVEL;
26
36
  if (logLevel)
@@ -30,8 +40,27 @@ async function main() {
30
40
  // Create lazy Discord client
31
41
  const discord = new DiscordClient(config.defaultToken);
32
42
  // Create MCP server with tool context
33
- const server = createServer({ discord, config });
34
- // Start stdio transport
43
+ const server = createServer({ discord, config }, serverOptions);
44
+ // Handle serve subcommand (HTTP/SSE transport)
45
+ if (args[0] === "serve") {
46
+ const portIndex = args.indexOf("--port");
47
+ const port = portIndex !== -1 ? parseInt(args[portIndex + 1], 10) : undefined;
48
+ if (portIndex !== -1 && (!port || isNaN(port))) {
49
+ console.error("Invalid --port value");
50
+ process.exit(1);
51
+ }
52
+ await startHttpTransport(server, { port });
53
+ // Graceful shutdown
54
+ const shutdown = async () => {
55
+ logger.info("Shutting down...");
56
+ await discord.destroy();
57
+ process.exit(0);
58
+ };
59
+ process.on("SIGINT", shutdown);
60
+ process.on("SIGTERM", shutdown);
61
+ return;
62
+ }
63
+ // Default: start stdio transport
35
64
  await startStdioTransport(server);
36
65
  // Graceful shutdown
37
66
  const shutdown = async () => {
@@ -91,15 +120,23 @@ discord-ops - Agency-grade Discord MCP server
91
120
 
92
121
  USAGE:
93
122
  discord-ops Start MCP server (stdio transport)
123
+ discord-ops serve Start MCP server (HTTP/SSE transport)
124
+ discord-ops setup Interactive setup wizard
94
125
  discord-ops health Run health check + permission audit
95
126
  discord-ops --help Show this help
96
127
  discord-ops --version Show version
97
128
 
129
+ OPTIONS:
130
+ --dry-run Simulate destructive operations without calling Discord API
131
+ --port <port> HTTP port for serve mode (default: 3000)
132
+
98
133
  ENVIRONMENT:
99
134
  DISCORD_TOKEN Default Discord bot token (required)
100
135
  <PROJECT>_TOKEN Per-project bot tokens (configured via token_env in config)
101
136
  DISCORD_OPS_CONFIG Path to global config file (default: ~/.discord-ops.json)
102
137
  DISCORD_OPS_LOG_LEVEL Log level: debug, info, warn, error (default: info)
138
+ DISCORD_OPS_DRY_RUN Enable dry-run mode (any truthy value)
139
+ DRY_RUN Enable dry-run mode (any truthy value, alias)
103
140
 
104
141
  CONFIG FILES:
105
142
  ~/.discord-ops.json Global project routing config
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Interactive setup wizard for discord-ops configuration.
3
+ * Walks users through bot token verification, guild selection,
4
+ * channel aliasing, and notification routing.
5
+ */
6
+ export declare function runSetup(): Promise<void>;
7
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA2CA;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAqH9C"}