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.
- package/index.js +43 -3
- 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
|
|
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 ||
|
|
502
|
+
sessionLabel = regResult.label || sessionLabel;
|
|
463
503
|
sessionState.sessionLabel = sessionLabel;
|
|
464
504
|
} catch {}
|
|
465
505
|
|
package/package.json
CHANGED