bn-slack-mcp-server 0.0.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.
Files changed (71) hide show
  1. package/README.md +243 -0
  2. package/dist/debug-middleware.d.ts +12 -0
  3. package/dist/debug-middleware.d.ts.map +1 -0
  4. package/dist/debug-middleware.js +36 -0
  5. package/dist/debug-middleware.js.map +1 -0
  6. package/dist/helpers.d.ts +86 -0
  7. package/dist/helpers.d.ts.map +1 -0
  8. package/dist/helpers.js +235 -0
  9. package/dist/helpers.js.map +1 -0
  10. package/dist/index.d.ts +9 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +162 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/schemas.d.ts +286 -0
  15. package/dist/schemas.d.ts.map +1 -0
  16. package/dist/schemas.js +840 -0
  17. package/dist/schemas.js.map +1 -0
  18. package/dist/slack-api-client.d.ts +51 -0
  19. package/dist/slack-api-client.d.ts.map +1 -0
  20. package/dist/slack-api-client.js +227 -0
  21. package/dist/slack-api-client.js.map +1 -0
  22. package/dist/tool-loader.d.ts +35 -0
  23. package/dist/tool-loader.d.ts.map +1 -0
  24. package/dist/tool-loader.js +121 -0
  25. package/dist/tool-loader.js.map +1 -0
  26. package/dist/tool-registry.d.ts +44 -0
  27. package/dist/tool-registry.d.ts.map +1 -0
  28. package/dist/tool-registry.js +56 -0
  29. package/dist/tool-registry.js.map +1 -0
  30. package/dist/tools/cache.d.ts +69 -0
  31. package/dist/tools/cache.d.ts.map +1 -0
  32. package/dist/tools/cache.js +94 -0
  33. package/dist/tools/cache.js.map +1 -0
  34. package/dist/tools/channels.d.ts +76 -0
  35. package/dist/tools/channels.d.ts.map +1 -0
  36. package/dist/tools/channels.js +251 -0
  37. package/dist/tools/channels.js.map +1 -0
  38. package/dist/tools/conversations.d.ts +77 -0
  39. package/dist/tools/conversations.d.ts.map +1 -0
  40. package/dist/tools/conversations.js +302 -0
  41. package/dist/tools/conversations.js.map +1 -0
  42. package/dist/tools/files.d.ts +15 -0
  43. package/dist/tools/files.d.ts.map +1 -0
  44. package/dist/tools/files.js +30 -0
  45. package/dist/tools/files.js.map +1 -0
  46. package/dist/tools/index.d.ts +12 -0
  47. package/dist/tools/index.d.ts.map +1 -0
  48. package/dist/tools/index.js +20 -0
  49. package/dist/tools/index.js.map +1 -0
  50. package/dist/tools/messages.d.ts +20 -0
  51. package/dist/tools/messages.d.ts.map +1 -0
  52. package/dist/tools/messages.js +40 -0
  53. package/dist/tools/messages.js.map +1 -0
  54. package/dist/tools/system.d.ts +48 -0
  55. package/dist/tools/system.d.ts.map +1 -0
  56. package/dist/tools/system.js +124 -0
  57. package/dist/tools/system.js.map +1 -0
  58. package/dist/tools/users.d.ts +69 -0
  59. package/dist/tools/users.d.ts.map +1 -0
  60. package/dist/tools/users.js +179 -0
  61. package/dist/tools/users.js.map +1 -0
  62. package/dist/tools/workspace.d.ts +50 -0
  63. package/dist/tools/workspace.d.ts.map +1 -0
  64. package/dist/tools/workspace.js +56 -0
  65. package/dist/tools/workspace.js.map +1 -0
  66. package/dist/types.d.ts +160 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +2 -0
  69. package/dist/types.js.map +1 -0
  70. package/package.json +48 -0
  71. package/tools.json +483 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * User tool handlers for Slack MCP Server
3
+ */
4
+ import type { Request } from "express";
5
+ import type { z } from "zod";
6
+ import type { UsersListSchema, UserInfoSchema, UserPresenceSchema } from "../schemas.js";
7
+ /**
8
+ * Get a list of users with basic info (always uses cache for performance)
9
+ */
10
+ export declare function usersList(req: Request, args: z.infer<typeof UsersListSchema>): Promise<{
11
+ success: boolean;
12
+ users: {
13
+ id: string;
14
+ username: string;
15
+ real_name: string;
16
+ display_name: string;
17
+ is_admin: boolean;
18
+ is_bot: boolean;
19
+ is_deleted: boolean;
20
+ timezone: string;
21
+ title: string;
22
+ }[];
23
+ summary: {
24
+ total_users: number;
25
+ filter_applied: string;
26
+ include_bots: boolean;
27
+ limit_applied: number | null;
28
+ };
29
+ cache_file: string;
30
+ source: string;
31
+ note: string;
32
+ }>;
33
+ /**
34
+ * Get detailed information about one or more users (cache-first approach)
35
+ */
36
+ export declare function userInfo(req: Request, args: z.infer<typeof UserInfoSchema>): Promise<{
37
+ success: boolean;
38
+ users: {
39
+ input: string;
40
+ resolved_id?: string;
41
+ user?: unknown;
42
+ source?: string;
43
+ success: boolean;
44
+ error?: string;
45
+ warning?: string;
46
+ }[];
47
+ summary: {
48
+ total_requested: number;
49
+ successful: number;
50
+ failed: number;
51
+ cache_hits: number;
52
+ api_calls: number;
53
+ };
54
+ cache_file: string | null;
55
+ note: string;
56
+ }>;
57
+ /**
58
+ * Get user's presence status (online, away, etc.)
59
+ */
60
+ export declare function userPresence(req: Request, args: z.infer<typeof UserPresenceSchema>): Promise<{
61
+ success: boolean;
62
+ presence: string;
63
+ online: boolean | undefined;
64
+ auto_away: boolean | undefined;
65
+ manual_away: boolean | undefined;
66
+ connection_count: number | undefined;
67
+ last_activity: number | undefined;
68
+ }>;
69
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;YAc/B,MAAM;kBACA,MAAM;mBACL,MAAM;sBACH,MAAM;kBACV,OAAO;gBACT,OAAO;oBACH,OAAO;kBACT,MAAM;eACT,MAAM;;;;;;;;;;;GAkDhB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC;;;eAQ3B,MAAM;sBACC,MAAM;eACb,OAAO;iBACL,MAAM;iBACN,OAAO;gBACR,MAAM;kBACJ,MAAM;;;;;;;;;;;GAgGnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;;;;;;;;GA0BzC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * User tool handlers for Slack MCP Server
3
+ */
4
+ import { getSlackClient } from "../slack-api-client.js";
5
+ import { createUserLookup } from "../helpers.js";
6
+ /**
7
+ * Get a list of users with basic info (always uses cache for performance)
8
+ */
9
+ export async function usersList(req, args) {
10
+ const client = getSlackClient(req);
11
+ const { filter_type = "active", include_bots = false, limit = 50, } = args;
12
+ // Always use cache for listing users (performance)
13
+ const usersData = await client.getCachedUsers();
14
+ // Filter users based on criteria
15
+ const filteredUsers = [];
16
+ for (const user of usersData) {
17
+ // Skip deleted users unless specifically requested
18
+ if (filter_type === "active" && user.deleted) {
19
+ continue;
20
+ }
21
+ if (filter_type === "deleted" && !user.deleted) {
22
+ continue;
23
+ }
24
+ if (filter_type === "admins" && !user.is_admin) {
25
+ continue;
26
+ }
27
+ // Skip bots unless specifically requested
28
+ if (!include_bots && user.is_bot) {
29
+ continue;
30
+ }
31
+ // Add simplified user info
32
+ filteredUsers.push({
33
+ id: user.id,
34
+ username: user.name || "unknown",
35
+ real_name: user.real_name || "Unknown",
36
+ display_name: user.profile?.display_name || "",
37
+ is_admin: user.is_admin || false,
38
+ is_bot: user.is_bot || false,
39
+ is_deleted: user.deleted || false,
40
+ timezone: user.tz || "",
41
+ title: user.profile?.title || "",
42
+ });
43
+ }
44
+ // Apply limit
45
+ const limitedUsers = limit > 0 ? filteredUsers.slice(0, limit) : filteredUsers;
46
+ return {
47
+ success: true,
48
+ users: limitedUsers,
49
+ summary: {
50
+ total_users: limitedUsers.length,
51
+ filter_applied: filter_type,
52
+ include_bots,
53
+ limit_applied: limitedUsers.length >= limit ? limit : null,
54
+ },
55
+ cache_file: client.usersCacheFile,
56
+ source: "cache",
57
+ note: "User listing always uses cache for performance",
58
+ };
59
+ }
60
+ /**
61
+ * Get detailed information about one or more users (cache-first approach)
62
+ */
63
+ export async function userInfo(req, args) {
64
+ const client = getSlackClient(req);
65
+ const { user_ids, use_cache = true } = args;
66
+ // Parse user IDs (support both single and multiple)
67
+ const userList = user_ids.split(",").map((u) => u.trim()).filter(Boolean);
68
+ const results = [];
69
+ let cacheHits = 0;
70
+ let apiCalls = 0;
71
+ // Load cache once for all users
72
+ const usersData = await client.getCachedUsers();
73
+ let cachedUsers = null;
74
+ if (use_cache) {
75
+ try {
76
+ cachedUsers = createUserLookup(usersData);
77
+ }
78
+ catch (cacheError) {
79
+ console.warn("Cache loading failed:", cacheError);
80
+ }
81
+ }
82
+ for (const userInput of userList) {
83
+ // Resolve user name to ID
84
+ let resolvedUserId;
85
+ try {
86
+ resolvedUserId = await client.resolveUserId(userInput);
87
+ }
88
+ catch (error) {
89
+ results.push({
90
+ input: userInput,
91
+ error: `Could not resolve user: ${error instanceof Error ? error.message : String(error)}`,
92
+ success: false,
93
+ });
94
+ continue;
95
+ }
96
+ // Try cache first if enabled
97
+ let userFound = false;
98
+ if (use_cache && cachedUsers && cachedUsers.has(resolvedUserId)) {
99
+ results.push({
100
+ input: userInput,
101
+ resolved_id: resolvedUserId,
102
+ user: cachedUsers.get(resolvedUserId),
103
+ source: "cache",
104
+ success: true,
105
+ });
106
+ cacheHits++;
107
+ userFound = true;
108
+ }
109
+ // Fall back to API call if cache miss or disabled
110
+ if (!userFound) {
111
+ try {
112
+ const data = await client.makeRequest("users.info", { user: resolvedUserId });
113
+ results.push({
114
+ input: userInput,
115
+ resolved_id: resolvedUserId,
116
+ user: data.user || {},
117
+ source: "api",
118
+ success: true,
119
+ });
120
+ apiCalls++;
121
+ }
122
+ catch (error) {
123
+ // If API fails, try cache as last resort
124
+ if (cachedUsers && cachedUsers.has(resolvedUserId)) {
125
+ results.push({
126
+ input: userInput,
127
+ resolved_id: resolvedUserId,
128
+ user: cachedUsers.get(resolvedUserId),
129
+ source: "cache_fallback",
130
+ success: true,
131
+ warning: `API failed, using cached data: ${error instanceof Error ? error.message : String(error)}`,
132
+ });
133
+ cacheHits++;
134
+ }
135
+ else {
136
+ results.push({
137
+ input: userInput,
138
+ resolved_id: resolvedUserId,
139
+ error: error instanceof Error ? error.message : String(error),
140
+ success: false,
141
+ });
142
+ }
143
+ }
144
+ }
145
+ }
146
+ return {
147
+ success: true,
148
+ users: results,
149
+ summary: {
150
+ total_requested: userList.length,
151
+ successful: results.filter((r) => r.success).length,
152
+ failed: results.filter((r) => !r.success).length,
153
+ cache_hits: cacheHits,
154
+ api_calls: apiCalls,
155
+ },
156
+ cache_file: use_cache ? client.usersCacheFile : null,
157
+ note: `Cache: ${cacheHits} hits, API: ${apiCalls} calls`,
158
+ };
159
+ }
160
+ /**
161
+ * Get user's presence status (online, away, etc.)
162
+ */
163
+ export async function userPresence(req, args) {
164
+ const client = getSlackClient(req);
165
+ const { user_id } = args;
166
+ // Resolve user name to ID
167
+ const resolvedUserId = await client.resolveUserId(user_id);
168
+ const data = await client.makeRequest("users.getPresence", { user: resolvedUserId });
169
+ return {
170
+ success: true,
171
+ presence: data.presence,
172
+ online: data.online,
173
+ auto_away: data.auto_away,
174
+ manual_away: data.manual_away,
175
+ connection_count: data.connection_count,
176
+ last_activity: data.last_activity,
177
+ };
178
+ }
179
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Workspace tool handlers for Slack MCP Server
3
+ */
4
+ import type { Request } from "express";
5
+ import type { z } from "zod";
6
+ import type { WorkspaceInfoSchema } from "../schemas.js";
7
+ /**
8
+ * Get information about the current Slack workspace/team
9
+ */
10
+ export declare function workspaceInfo(req: Request, _args: z.infer<typeof WorkspaceInfoSchema>): Promise<{
11
+ success: boolean;
12
+ id: string;
13
+ name: string;
14
+ domain: string;
15
+ email_domain: string | undefined;
16
+ icon: Record<string, string>;
17
+ enterprise_id: string | undefined;
18
+ enterprise_name: string | undefined;
19
+ source: string;
20
+ note?: undefined;
21
+ error?: undefined;
22
+ required_scope?: undefined;
23
+ } | {
24
+ success: boolean;
25
+ id: string | undefined;
26
+ name: string;
27
+ domain: string;
28
+ source: string;
29
+ note: string;
30
+ email_domain?: undefined;
31
+ icon?: undefined;
32
+ enterprise_id?: undefined;
33
+ enterprise_name?: undefined;
34
+ error?: undefined;
35
+ required_scope?: undefined;
36
+ } | {
37
+ success: boolean;
38
+ error: string;
39
+ note: string;
40
+ required_scope: string;
41
+ id?: undefined;
42
+ name?: undefined;
43
+ domain?: undefined;
44
+ email_domain?: undefined;
45
+ icon?: undefined;
46
+ enterprise_id?: undefined;
47
+ enterprise_name?: undefined;
48
+ source?: undefined;
49
+ }>;
50
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiE3C"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Workspace tool handlers for Slack MCP Server
3
+ */
4
+ import { getSlackClient } from "../slack-api-client.js";
5
+ /**
6
+ * Get information about the current Slack workspace/team
7
+ */
8
+ export async function workspaceInfo(req, _args) {
9
+ const client = getSlackClient(req);
10
+ try {
11
+ const data = await client.makeRequest("team.info");
12
+ const team = data.team || {};
13
+ return {
14
+ success: true,
15
+ id: team.id,
16
+ name: team.name,
17
+ domain: team.domain,
18
+ email_domain: team.email_domain,
19
+ icon: team.icon || {},
20
+ enterprise_id: team.enterprise_id,
21
+ enterprise_name: team.enterprise_name,
22
+ source: "team.info API",
23
+ };
24
+ }
25
+ catch (error) {
26
+ // Fallback: try to get workspace info from other sources
27
+ const errorMsg = error instanceof Error ? error.message : String(error);
28
+ if (errorMsg.includes("missing_scope")) {
29
+ try {
30
+ // Try to get basic info from users list (which usually works)
31
+ const usersData = await client.makeRequest("users.list", { limit: 1 });
32
+ if (usersData.members && usersData.members.length > 0) {
33
+ const teamId = usersData.members[0].team_id;
34
+ return {
35
+ success: true,
36
+ id: teamId,
37
+ name: "Unknown (missing team:read scope)",
38
+ domain: "Unknown",
39
+ source: "derived from users.list",
40
+ note: "Limited info due to missing 'team:read' scope. Add this scope for full workspace details.",
41
+ };
42
+ }
43
+ }
44
+ catch {
45
+ // Fall through to error response
46
+ }
47
+ }
48
+ return {
49
+ success: false,
50
+ error: errorMsg,
51
+ note: "This tool requires 'team:read' scope. Please add this scope to your Slack app for full workspace information.",
52
+ required_scope: "team:read",
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,KAA0C;IAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAUlC,WAAW,CAAC,CAAC;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yDAAyD;QACzD,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAEvC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAE/B,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBAE5C,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,mCAAmC;wBACzC,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,yBAAyB;wBACjC,IAAI,EAAE,2FAA2F;qBAClG,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,+GAA+G;YACrH,cAAc,EAAE,WAAW;SAC5B,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,160 @@
1
+ export interface DebugMetadata {
2
+ toolName: string;
3
+ toolInput: unknown;
4
+ toolCallTime: number;
5
+ timestamp: string;
6
+ }
7
+ export interface ToolResponse<T = unknown> {
8
+ data: T;
9
+ debug?: DebugMetadata;
10
+ }
11
+ export interface SlackUser {
12
+ id: string;
13
+ name: string;
14
+ real_name?: string;
15
+ deleted?: boolean;
16
+ is_admin?: boolean;
17
+ is_bot?: boolean;
18
+ tz?: string;
19
+ profile?: {
20
+ display_name?: string;
21
+ real_name?: string;
22
+ title?: string;
23
+ email?: string;
24
+ image_24?: string;
25
+ image_48?: string;
26
+ };
27
+ team_id?: string;
28
+ }
29
+ export interface SlackChannel {
30
+ id: string;
31
+ name?: string;
32
+ is_channel?: boolean;
33
+ is_group?: boolean;
34
+ is_im?: boolean;
35
+ is_mpim?: boolean;
36
+ is_private?: boolean;
37
+ is_archived?: boolean;
38
+ created?: number;
39
+ creator?: string;
40
+ num_members?: number;
41
+ topic?: {
42
+ value: string;
43
+ creator: string;
44
+ last_set: number;
45
+ };
46
+ purpose?: {
47
+ value: string;
48
+ creator: string;
49
+ last_set: number;
50
+ };
51
+ user?: string;
52
+ }
53
+ export interface SlackMessage {
54
+ type: string;
55
+ ts: string;
56
+ user?: string;
57
+ text: string;
58
+ thread_ts?: string;
59
+ reply_count?: number;
60
+ reactions?: Array<{
61
+ name: string;
62
+ count: number;
63
+ users: string[];
64
+ }>;
65
+ files?: SlackFile[];
66
+ user_details?: {
67
+ username: string;
68
+ real_name: string;
69
+ display_name: string;
70
+ is_bot: boolean;
71
+ };
72
+ channel_context?: {
73
+ channel_id: string;
74
+ channel_input: string;
75
+ };
76
+ }
77
+ export interface SlackFile {
78
+ id: string;
79
+ name: string;
80
+ title: string;
81
+ mimetype: string;
82
+ filetype: string;
83
+ size: number;
84
+ url_private?: string;
85
+ url_private_download?: string;
86
+ user?: string;
87
+ created?: number;
88
+ timestamp?: number;
89
+ }
90
+ export interface SlackTeam {
91
+ id: string;
92
+ name: string;
93
+ domain: string;
94
+ email_domain?: string;
95
+ icon?: Record<string, string>;
96
+ enterprise_id?: string;
97
+ enterprise_name?: string;
98
+ }
99
+ export interface SlackApiResponse<T = unknown> {
100
+ ok: boolean;
101
+ error?: string;
102
+ [key: string]: unknown;
103
+ }
104
+ export interface PaginatedResponse {
105
+ response_metadata?: {
106
+ next_cursor?: string;
107
+ };
108
+ }
109
+ export interface LimitParams {
110
+ limit?: number;
111
+ oldest?: string;
112
+ }
113
+ export interface CacheFileInfo {
114
+ exists: boolean;
115
+ absolute_path: string;
116
+ size_bytes: number;
117
+ size_kb: number;
118
+ last_modified: string | null;
119
+ age_hours: number | null;
120
+ is_fresh: boolean;
121
+ }
122
+ export interface SuccessResult<T = unknown> {
123
+ success: true;
124
+ data?: T;
125
+ [key: string]: unknown;
126
+ }
127
+ export interface ErrorResult {
128
+ success: false;
129
+ error: string;
130
+ [key: string]: unknown;
131
+ }
132
+ export type ToolResult<T = unknown> = SuccessResult<T> | ErrorResult;
133
+ export interface UserDetails {
134
+ username: string;
135
+ real_name: string;
136
+ display_name: string;
137
+ is_bot: boolean;
138
+ }
139
+ export interface MemberWithDetails {
140
+ id: string;
141
+ username: string;
142
+ real_name: string;
143
+ display_name: string;
144
+ is_admin: boolean;
145
+ is_bot: boolean;
146
+ deleted: boolean;
147
+ }
148
+ export interface PresenceInfo {
149
+ presence: string;
150
+ online?: boolean;
151
+ auto_away?: boolean;
152
+ manual_away?: boolean;
153
+ connection_count?: number;
154
+ last_activity?: number;
155
+ }
156
+ export interface PermissionStatus {
157
+ endpoint: string;
158
+ status: string;
159
+ }
160
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "bn-slack-mcp-server",
3
+ "version": "0.0.1",
4
+ "description": "Stateless MCP Server for Slack API",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "bn-slack-mcp-server": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "node --watch dist/index.js",
13
+ "start": "node dist/index.js",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "package": "docker build -t bn-slack-mcp-server .",
17
+ "clean": "rm -rf dist"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "slack",
22
+ "conversations",
23
+ "channels",
24
+ "messages",
25
+ "users",
26
+ "stateless"
27
+ ],
28
+ "author": "BlueNexus AI",
29
+ "license": "PROPRIETARY",
30
+ "dependencies": {
31
+ "@modelcontextprotocol/sdk": "^1.0.4",
32
+ "express": "^4.21.2",
33
+ "zod": "^3.24.1"
34
+ },
35
+ "devDependencies": {
36
+ "@types/express": "^5.0.0",
37
+ "@types/node": "^22.10.2",
38
+ "typescript": "^5.8.3",
39
+ "vitest": "^3.0.0"
40
+ },
41
+ "files": [
42
+ "dist/**/*",
43
+ "README.md",
44
+ "LICENSE",
45
+ "tools.json"
46
+ ],
47
+ "packageManager": "pnpm@10.22.0"
48
+ }