mcp-chat-connect 1.2.2 → 1.3.2

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 (2) hide show
  1. package/index.js +43 -3
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -261,6 +261,44 @@ if (savedConfig.token) {
261
261
  sessionState.userId = savedConfig.userId;
262
262
  }
263
263
 
264
+ // Auto-connect from env vars (headless/bot mode)
265
+ const envToken = process.env.MCP_CHAT_TOKEN;
266
+ const envChannel = process.env.MCP_CHAT_CHANNEL;
267
+ if (envToken && envChannel) {
268
+ let userId = null;
269
+ let userName = process.env.MCP_CHAT_USER_NAME || 'Bot';
270
+ try {
271
+ const payload = JSON.parse(Buffer.from(envToken.split('.')[1], 'base64').toString());
272
+ userId = payload.id;
273
+ userName = process.env.MCP_CHAT_USER_NAME || payload.name || 'Bot';
274
+ } catch {}
275
+
276
+ const sessionToken = `mcp-${crypto.randomBytes(16).toString('hex')}`;
277
+ sessionState = {
278
+ token: envToken,
279
+ channelId: parseInt(envChannel, 10),
280
+ channelName: process.env.MCP_CHAT_CHANNEL_NAME || `channel-${envChannel}`,
281
+ userName,
282
+ userId,
283
+ sessionToken,
284
+ sessionLabel: null,
285
+ connected: true,
286
+ };
287
+
288
+ // Register session for sequential label, then connect WebSocket
289
+ apiCall('register_session', {
290
+ channel_id: sessionState.channelId,
291
+ session_token: sessionToken,
292
+ }, envToken).then(result => {
293
+ sessionState.sessionLabel = result.label || 'Session';
294
+ process.stderr.write(`[mcp-chat] Auto-connected to #${sessionState.channelName} as ${userName} (${sessionState.sessionLabel})\n`);
295
+ }).catch(() => {
296
+ process.stderr.write(`[mcp-chat] Auto-connected to #${sessionState.channelName} as ${userName}\n`);
297
+ }).finally(() => {
298
+ connectWebSocket();
299
+ });
300
+ }
301
+
264
302
  function sendResponse(id, result) {
265
303
  const msg = JSON.stringify({ jsonrpc: '2.0', id, result });
266
304
  process.stdout.write(`${msg}\n`);
@@ -324,6 +362,7 @@ function getTools() {
324
362
  type: 'object',
325
363
  properties: {
326
364
  channel_id: { type: 'number', description: 'Channel ID to join' },
365
+ label: { type: 'string', description: 'Custom session label (e.g. "QA Agent", "Security Checker"). Defaults to sequential "Session N".' },
327
366
  },
328
367
  required: ['channel_id'],
329
368
  },
@@ -452,14 +491,15 @@ async function handleToolCall(name, args) {
452
491
  connected: true,
453
492
  };
454
493
 
455
- // Register session to get sequential label
456
- let sessionLabel = 'Session';
494
+ // Register session to get label (custom or sequential)
495
+ let sessionLabel = args.label || 'Session';
457
496
  try {
458
497
  const regResult = await apiCall('register_session', {
459
498
  channel_id: channelId,
460
499
  session_token: sessionToken,
500
+ label: args.label || undefined,
461
501
  }, sessionState.token);
462
- sessionLabel = regResult.label || 'Session';
502
+ sessionLabel = regResult.label || sessionLabel;
463
503
  sessionState.sessionLabel = sessionLabel;
464
504
  } catch {}
465
505
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-chat-connect",
3
- "version": "1.2.2",
3
+ "version": "1.3.2",
4
4
  "description": "MCP server with channels support for connecting Claude Code sessions to MCP Chat -- real-time team messaging for AI-assisted development",
5
5
  "main": "index.js",
6
6
  "bin": {