@danainnovations/cortex-mcp 1.0.98 → 1.0.100
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/dist/cli.js +151 -53
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -822,7 +822,18 @@ function getWizardHtml() {
|
|
|
822
822
|
</div>
|
|
823
823
|
</div>
|
|
824
824
|
|
|
825
|
-
<!-- Step 5:
|
|
825
|
+
<!-- Step 5: Manual Setup Walkthrough -->
|
|
826
|
+
<div id="step-manual-setup" class="step">
|
|
827
|
+
<div class="card">
|
|
828
|
+
<div id="manual-setup-content"></div>
|
|
829
|
+
<div class="btn-row">
|
|
830
|
+
<button class="btn btn-secondary" id="btn-manual-skip" onclick="skipManualSetup()">Skip for now</button>
|
|
831
|
+
<button class="btn btn-primary" id="btn-manual-done" onclick="completeManualSetup()">I've done this</button>
|
|
832
|
+
</div>
|
|
833
|
+
</div>
|
|
834
|
+
</div>
|
|
835
|
+
|
|
836
|
+
<!-- Step 6: Connect Accounts -->
|
|
826
837
|
<div id="step-connect" class="step">
|
|
827
838
|
<div class="card">
|
|
828
839
|
<h2>Connect Accounts</h2>
|
|
@@ -868,10 +879,12 @@ function getWizardHtml() {
|
|
|
868
879
|
configuredClients: [],
|
|
869
880
|
connections: [],
|
|
870
881
|
serverUrl: '',
|
|
882
|
+
manualQueue: [],
|
|
883
|
+
currentManualIndex: 0,
|
|
871
884
|
};
|
|
872
885
|
|
|
873
886
|
// \u2500\u2500 Step Index Map \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
874
|
-
var STEP_ORDER = ['welcome', 'signin', 'mcps', 'clients', 'connect', 'done'];
|
|
887
|
+
var STEP_ORDER = ['welcome', 'signin', 'mcps', 'clients', 'manual-setup', 'connect', 'done'];
|
|
875
888
|
var currentStepIndex = 0;
|
|
876
889
|
|
|
877
890
|
// \u2500\u2500 MCP Icons (inline SVG) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
@@ -906,6 +919,14 @@ function getWizardHtml() {
|
|
|
906
919
|
stdio: '<svg viewBox="0 0 16 16"><path d="M2 3h12a1 1 0 011 1v8a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1zm1 2v6h10V5H3z"/></svg>',
|
|
907
920
|
};
|
|
908
921
|
|
|
922
|
+
// \u2500\u2500 Manual Client Display Names \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
923
|
+
var MANUAL_CLIENT_NAMES = {
|
|
924
|
+
'claude-cowork': 'Claude CoWork',
|
|
925
|
+
'claude-ai': 'Claude.ai & Mobile',
|
|
926
|
+
'perplexity': 'Perplexity',
|
|
927
|
+
'stdio': 'OpenClaw / Stdio',
|
|
928
|
+
};
|
|
929
|
+
|
|
909
930
|
// \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
910
931
|
async function init() {
|
|
911
932
|
try {
|
|
@@ -961,6 +982,7 @@ function getWizardHtml() {
|
|
|
961
982
|
if (step === 'signin') renderSignin();
|
|
962
983
|
if (step === 'mcps') renderMcps();
|
|
963
984
|
if (step === 'clients') renderClients();
|
|
985
|
+
if (step === 'manual-setup') renderManualSetup();
|
|
964
986
|
if (step === 'connect') renderConnect();
|
|
965
987
|
if (step === 'done') renderDone();
|
|
966
988
|
}
|
|
@@ -1213,7 +1235,7 @@ function getWizardHtml() {
|
|
|
1213
1235
|
function renderClientItem(client) {
|
|
1214
1236
|
var detected = client.detected;
|
|
1215
1237
|
var icon = CLIENT_ICONS[client.type] || '';
|
|
1216
|
-
var isManual = client.type === 'perplexity' || client.type === 'stdio' || client.type === 'claude-ai'
|
|
1238
|
+
var isManual = client.type === 'perplexity' || client.type === 'stdio' || client.type === 'claude-ai';
|
|
1217
1239
|
var alreadyConfigured = !isManual && state.configuredClients.indexOf(client.type) !== -1;
|
|
1218
1240
|
var statusText = alreadyConfigured ? 'Configured' : (detected ? 'Detected' : 'Not found');
|
|
1219
1241
|
return (
|
|
@@ -1234,17 +1256,17 @@ function getWizardHtml() {
|
|
|
1234
1256
|
document.getElementById('btn-configure').textContent = 'Configure';
|
|
1235
1257
|
|
|
1236
1258
|
// Pre-select already-configured clients (exclude manual/additional ones)
|
|
1237
|
-
var nonAutoTypes = ['perplexity', 'stdio', 'claude-ai'
|
|
1259
|
+
var nonAutoTypes = ['perplexity', 'stdio', 'claude-ai'];
|
|
1238
1260
|
state.selectedClients = state.configuredClients.filter(function(c) {
|
|
1239
1261
|
return nonAutoTypes.indexOf(c) === -1;
|
|
1240
1262
|
});
|
|
1241
1263
|
|
|
1242
1264
|
// Split into auto-configured, web/mobile/cowork, and manual-setup clients
|
|
1243
1265
|
var autoClients = state.detectedClients.filter(function(c) {
|
|
1244
|
-
return c.type !== 'perplexity' && c.type !== 'stdio' && c.type !== 'claude-ai'
|
|
1266
|
+
return c.type !== 'perplexity' && c.type !== 'stdio' && c.type !== 'claude-ai';
|
|
1245
1267
|
});
|
|
1246
1268
|
var webClients = state.detectedClients.filter(function(c) {
|
|
1247
|
-
return c.type === 'claude-ai'
|
|
1269
|
+
return c.type === 'claude-ai';
|
|
1248
1270
|
});
|
|
1249
1271
|
var manualClients = state.detectedClients.filter(function(c) {
|
|
1250
1272
|
return c.type === 'perplexity' || c.type === 'stdio';
|
|
@@ -1255,7 +1277,7 @@ function getWizardHtml() {
|
|
|
1255
1277
|
if (webClients.length > 0) {
|
|
1256
1278
|
html += '<div class="client-section-divider">' +
|
|
1257
1279
|
'<div class="client-section-title">Web & Mobile</div>' +
|
|
1258
|
-
'<div class="client-section-subtitle">Use Cortex tools on claude.ai
|
|
1280
|
+
'<div class="client-section-subtitle">Use Cortex tools on claude.ai and the Claude mobile app</div>' +
|
|
1259
1281
|
'</div>';
|
|
1260
1282
|
html += webClients.map(renderClientItem).join('');
|
|
1261
1283
|
}
|
|
@@ -1270,7 +1292,7 @@ function getWizardHtml() {
|
|
|
1270
1292
|
|
|
1271
1293
|
el.innerHTML = html;
|
|
1272
1294
|
|
|
1273
|
-
var manualTypes = ['perplexity', 'stdio', 'claude-ai'
|
|
1295
|
+
var manualTypes = ['perplexity', 'stdio', 'claude-ai'];
|
|
1274
1296
|
el.querySelectorAll('.client-item:not(.disabled):not(.already-configured)').forEach(function(item) {
|
|
1275
1297
|
// Auto-select detected clients, but NOT manual/additional/web ones
|
|
1276
1298
|
if (manualTypes.indexOf(item.dataset.client) === -1) {
|
|
@@ -1318,66 +1340,37 @@ function getWizardHtml() {
|
|
|
1318
1340
|
|
|
1319
1341
|
state.configuredClients = data.results.filter(function(r) { return r.success; }).map(function(r) { return r.client; });
|
|
1320
1342
|
|
|
1343
|
+
// Separate manual-setup clients from auto-configured ones
|
|
1344
|
+
var manualClientTypes = ['claude-cowork', 'claude-ai', 'perplexity', 'stdio'];
|
|
1345
|
+
|
|
1321
1346
|
// Update per-client status inline
|
|
1322
1347
|
data.results.forEach(function(r) {
|
|
1323
1348
|
var item = document.querySelector('[data-client="' + r.client + '"]');
|
|
1324
1349
|
if (item) {
|
|
1325
1350
|
var statusSpan = item.querySelector('.client-status');
|
|
1326
1351
|
if (r.success) {
|
|
1327
|
-
|
|
1352
|
+
var isManual = manualClientTypes.indexOf(r.client) !== -1;
|
|
1353
|
+
statusSpan.innerHTML = isManual
|
|
1354
|
+
? '<span style="color: #00A3E1;">Setup required \u2192</span>'
|
|
1355
|
+
: '<span style="color: #4CAF50;">✓ Done</span>';
|
|
1328
1356
|
} else {
|
|
1329
1357
|
statusSpan.innerHTML = '<span style="color: #EF5350;">✗ Failed</span>';
|
|
1330
1358
|
}
|
|
1331
1359
|
}
|
|
1332
1360
|
});
|
|
1361
|
+
state.manualQueue = data.results.filter(function(r) {
|
|
1362
|
+
return r.success && manualClientTypes.indexOf(r.client) !== -1;
|
|
1363
|
+
});
|
|
1364
|
+
state.currentManualIndex = 0;
|
|
1333
1365
|
|
|
1334
1366
|
var resultEl = document.getElementById('client-result');
|
|
1335
1367
|
resultEl.className = '';
|
|
1336
1368
|
resultEl.innerHTML = data.results.map(function(r) {
|
|
1369
|
+
var isManualClient = manualClientTypes.indexOf(r.client) !== -1;
|
|
1337
1370
|
var html = '<div class="status ' + (r.success ? 'status-success' : 'status-error') + '">' +
|
|
1338
1371
|
'<span>' + (r.success ? '✓' : '✗') + '</span>' +
|
|
1339
|
-
'<span>' + (r.success ? escapeHtml(r.message || 'Configured') : escapeHtml(r.client) + ': ' + (r.error || 'Failed')) + '</span>' +
|
|
1372
|
+
'<span>' + (r.success ? escapeHtml(isManualClient ? (MANUAL_CLIENT_NAMES[r.client] || r.client) + ' \u2014 setup instructions on next page' : (r.message || 'Configured')) : escapeHtml(r.client) + ': ' + (r.error || 'Failed')) + '</span>' +
|
|
1340
1373
|
'</div>';
|
|
1341
|
-
// Show Claude CoWork instructions with copyable URL
|
|
1342
|
-
if (r.client === 'claude-cowork' && r.success && r.message) {
|
|
1343
|
-
var coworkUrl = (state.serverUrl || 'https://cortex-bice.vercel.app') + '/mcp/cortex';
|
|
1344
|
-
html += '<div class="stdio-snippet" style="text-align: left;">' +
|
|
1345
|
-
'<ol style="margin: 0 0 12px 0; padding-left: 20px; line-height: 1.8;">' +
|
|
1346
|
-
'<li>Open Claude Desktop \u2192 <strong>Settings</strong> \u2192 <strong>Connectors</strong></li>' +
|
|
1347
|
-
'<li>Click <strong>Add connector</strong> \u2192 <strong>Custom connector</strong></li>' +
|
|
1348
|
-
'<li>Paste this URL and click Add:</li>' +
|
|
1349
|
-
'</ol>' +
|
|
1350
|
-
'<div style="display: flex; align-items: center; gap: 8px; background: rgba(0,163,225,0.08); border: 1px solid rgba(0,163,225,0.2); border-radius: 6px; padding: 8px 12px;">' +
|
|
1351
|
-
'<code style="flex: 1; font-size: 12px; word-break: break-all;">' + escapeHtml(coworkUrl) + '</code>' +
|
|
1352
|
-
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1353
|
-
'</div>' +
|
|
1354
|
-
'<p style="margin: 10px 0 0 0; font-size: 12px; opacity: 0.7;">Sign in via Okta when prompted. Tools are available in all CoWork sessions.</p>' +
|
|
1355
|
-
'</div>';
|
|
1356
|
-
}
|
|
1357
|
-
// Show Claude.ai instructions with copyable URL
|
|
1358
|
-
if (r.client === 'claude-ai' && r.success && r.message) {
|
|
1359
|
-
var mcpUrl = (state.serverUrl || 'https://cortex-bice.vercel.app') + '/mcp/cortex';
|
|
1360
|
-
html += '<div class="stdio-snippet" style="text-align: left;">' +
|
|
1361
|
-
'<ol style="margin: 0 0 12px 0; padding-left: 20px; line-height: 1.8;">' +
|
|
1362
|
-
'<li>Open <a href="https://claude.ai/settings/integrations" target="_blank" style="color: #00A3E1;">claude.ai/settings/integrations</a></li>' +
|
|
1363
|
-
'<li>Click <strong>Add custom integration</strong></li>' +
|
|
1364
|
-
'<li>Paste this URL and click Add:</li>' +
|
|
1365
|
-
'</ol>' +
|
|
1366
|
-
'<div style="display: flex; align-items: center; gap: 8px; background: rgba(0,163,225,0.08); border: 1px solid rgba(0,163,225,0.2); border-radius: 6px; padding: 8px 12px;">' +
|
|
1367
|
-
'<code style="flex: 1; font-size: 12px; word-break: break-all;">' + escapeHtml(mcpUrl) + '</code>' +
|
|
1368
|
-
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1369
|
-
'</div>' +
|
|
1370
|
-
'<p style="margin: 10px 0 0 0; font-size: 12px; opacity: 0.7;">Claude handles SSO authentication automatically. Tools sync to mobile.</p>' +
|
|
1371
|
-
'</div>';
|
|
1372
|
-
}
|
|
1373
|
-
// Show copyable snippet for stdio/OpenClaw and Perplexity instructions
|
|
1374
|
-
if ((r.client === 'stdio' || r.client === 'perplexity') && r.success && r.message) {
|
|
1375
|
-
var snippet = r.message.replace(/^Add this to your client config:\\n\\n/, '');
|
|
1376
|
-
html += '<div class="stdio-snippet">' +
|
|
1377
|
-
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1378
|
-
'<pre>' + escapeHtml(snippet) + '</pre>' +
|
|
1379
|
-
'</div>';
|
|
1380
|
-
}
|
|
1381
1374
|
return html;
|
|
1382
1375
|
}).join('');
|
|
1383
1376
|
|
|
@@ -1390,7 +1383,13 @@ function getWizardHtml() {
|
|
|
1390
1383
|
|
|
1391
1384
|
btn.textContent = 'Continue';
|
|
1392
1385
|
btn.disabled = false;
|
|
1393
|
-
btn.onclick = function() {
|
|
1386
|
+
btn.onclick = function() {
|
|
1387
|
+
if (state.manualQueue.length > 0) {
|
|
1388
|
+
goToStep('manual-setup');
|
|
1389
|
+
} else {
|
|
1390
|
+
goToStep('connect');
|
|
1391
|
+
}
|
|
1392
|
+
};
|
|
1394
1393
|
} catch (err) {
|
|
1395
1394
|
btn.disabled = false;
|
|
1396
1395
|
btn.textContent = 'Retry';
|
|
@@ -1400,7 +1399,106 @@ function getWizardHtml() {
|
|
|
1400
1399
|
}
|
|
1401
1400
|
}
|
|
1402
1401
|
|
|
1403
|
-
// \u2500\u2500 Step 5:
|
|
1402
|
+
// \u2500\u2500 Step 5: Manual Setup Walkthrough \u2500\u2500\u2500\u2500\u2500\u2500
|
|
1403
|
+
function getManualSetupContent(clientType) {
|
|
1404
|
+
var mcpUrl = (state.serverUrl || 'https://cortex-bice.vercel.app') + '/mcp/cortex';
|
|
1405
|
+
|
|
1406
|
+
if (clientType === 'claude-cowork') {
|
|
1407
|
+
return '<ol style="margin: 0 0 20px 0; padding-left: 20px; line-height: 2; font-size: 15px;">' +
|
|
1408
|
+
'<li>Open <strong>Claude Desktop</strong> \u2192 <strong>Settings</strong> \u2192 <strong>Connectors</strong></li>' +
|
|
1409
|
+
'<li>Click <strong>Add custom connector</strong></li>' +
|
|
1410
|
+
'<li>Enter the name: <strong>Cortex CoWork</strong></li>' +
|
|
1411
|
+
'<li>Paste the URL below into <strong>Remote MCP server URL</strong></li>' +
|
|
1412
|
+
'<li>Click <strong>Add</strong> \u2014 sign in via <strong>Okta</strong> when prompted</li>' +
|
|
1413
|
+
'</ol>' +
|
|
1414
|
+
'<div style="display: flex; align-items: center; gap: 8px; background: rgba(0,163,225,0.08); border: 1px solid rgba(0,163,225,0.2); border-radius: 8px; padding: 12px 16px; margin-bottom: 16px;">' +
|
|
1415
|
+
'<code style="flex: 1; font-size: 13px; word-break: break-all;">' + escapeHtml(mcpUrl) + '</code>' +
|
|
1416
|
+
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1417
|
+
'</div>' +
|
|
1418
|
+
'<p style="font-size: 13px; opacity: 0.6;">Once connected, Cortex tools are available in all CoWork sessions.</p>';
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
if (clientType === 'claude-ai') {
|
|
1422
|
+
return '<ol style="margin: 0 0 20px 0; padding-left: 20px; line-height: 2; font-size: 15px;">' +
|
|
1423
|
+
'<li>Open <a href="https://claude.ai/settings/integrations" target="_blank" style="color: #00A3E1;">claude.ai/settings/integrations</a></li>' +
|
|
1424
|
+
'<li>Click <strong>Add custom integration</strong></li>' +
|
|
1425
|
+
'<li>Paste the URL below and click <strong>Add</strong></li>' +
|
|
1426
|
+
'<li>Claude handles SSO authentication automatically</li>' +
|
|
1427
|
+
'</ol>' +
|
|
1428
|
+
'<div style="display: flex; align-items: center; gap: 8px; background: rgba(0,163,225,0.08); border: 1px solid rgba(0,163,225,0.2); border-radius: 8px; padding: 12px 16px; margin-bottom: 16px;">' +
|
|
1429
|
+
'<code style="flex: 1; font-size: 13px; word-break: break-all;">' + escapeHtml(mcpUrl) + '</code>' +
|
|
1430
|
+
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1431
|
+
'</div>' +
|
|
1432
|
+
'<p style="font-size: 13px; opacity: 0.6;">Tools sync automatically to claude.ai, Claude Desktop (web), and the Claude mobile app.</p>';
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
if (clientType === 'perplexity') {
|
|
1436
|
+
var item = state.manualQueue[state.currentManualIndex];
|
|
1437
|
+
var msg = (item && item.message) || '';
|
|
1438
|
+
return '<div style="font-size: 14px; line-height: 1.8; margin-bottom: 16px;">' + escapeHtml(msg).replace(/\\n/g, '<br>') + '</div>';
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
if (clientType === 'stdio') {
|
|
1442
|
+
var item = state.manualQueue[state.currentManualIndex];
|
|
1443
|
+
var msg = (item && item.message) || '';
|
|
1444
|
+
var snippet = msg.replace(/^Add this to your client config:\\n\\n/, '');
|
|
1445
|
+
return '<p style="margin-bottom: 12px; font-size: 14px;">Add this to your client\u2019s MCP config:</p>' +
|
|
1446
|
+
'<div class="stdio-snippet">' +
|
|
1447
|
+
'<button class="copy-btn" onclick="copySnippet(this)">Copy</button>' +
|
|
1448
|
+
'<pre>' + escapeHtml(snippet) + '</pre>' +
|
|
1449
|
+
'</div>';
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
return '';
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
function renderManualSetup() {
|
|
1456
|
+
var el = document.getElementById('manual-setup-content');
|
|
1457
|
+
var total = state.manualQueue.length;
|
|
1458
|
+
var idx = state.currentManualIndex;
|
|
1459
|
+
|
|
1460
|
+
if (idx >= total) {
|
|
1461
|
+
goToStep('connect');
|
|
1462
|
+
return;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
var item = state.manualQueue[idx];
|
|
1466
|
+
var clientType = item.client;
|
|
1467
|
+
var clientName = MANUAL_CLIENT_NAMES[clientType] || clientType;
|
|
1468
|
+
var icon = CLIENT_ICONS[clientType] || '';
|
|
1469
|
+
|
|
1470
|
+
var progressHtml = total > 1
|
|
1471
|
+
? '<div style="font-size: 12px; text-transform: uppercase; letter-spacing: 0.1em; opacity: 0.5; margin-bottom: 8px;">Setup ' + (idx + 1) + ' of ' + total + '</div>'
|
|
1472
|
+
: '';
|
|
1473
|
+
|
|
1474
|
+
el.innerHTML = progressHtml +
|
|
1475
|
+
'<div style="display: flex; align-items: center; gap: 12px; margin-bottom: 24px;">' +
|
|
1476
|
+
(icon ? '<div class="client-icon" style="width: 32px; height: 32px;">' + icon + '</div>' : '') +
|
|
1477
|
+
'<h2 style="margin: 0;">Set up ' + escapeHtml(clientName) + '</h2>' +
|
|
1478
|
+
'</div>' +
|
|
1479
|
+
'<p class="subtitle" style="margin-bottom: 24px;">Follow these steps to connect Cortex</p>' +
|
|
1480
|
+
getManualSetupContent(clientType);
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
function completeManualSetup() {
|
|
1484
|
+
state.currentManualIndex++;
|
|
1485
|
+
if (state.currentManualIndex < state.manualQueue.length) {
|
|
1486
|
+
renderManualSetup();
|
|
1487
|
+
} else {
|
|
1488
|
+
goToStep('connect');
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
function skipManualSetup() {
|
|
1493
|
+
state.currentManualIndex++;
|
|
1494
|
+
if (state.currentManualIndex < state.manualQueue.length) {
|
|
1495
|
+
renderManualSetup();
|
|
1496
|
+
} else {
|
|
1497
|
+
goToStep('connect');
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
// \u2500\u2500 Step 6: Connect Accounts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
1404
1502
|
async function renderConnect() {
|
|
1405
1503
|
var el = document.getElementById('conn-list');
|
|
1406
1504
|
el.innerHTML = '<div class="status status-info"><span class="spinner"></span> Loading connections...</div>';
|
|
@@ -1999,7 +2097,7 @@ function configureClaudeAi(serverUrl, _apiKey, _mcps) {
|
|
|
1999
2097
|
}
|
|
2000
2098
|
function configureClaudeCowork(serverUrl, _apiKey, _mcps) {
|
|
2001
2099
|
const url = `${serverUrl}/mcp/cortex`;
|
|
2002
|
-
return 'Add Cortex to Claude CoWork:\n\n1. Open Claude Desktop \u2192 Settings \u2192 Connectors\n2. Click "Add connector"
|
|
2100
|
+
return 'Add Cortex to Claude CoWork:\n\n1. Open Claude Desktop \u2192 Settings \u2192 Connectors\n2. Click "Add custom connector"\n3. Name: Cortex CoWork\n4. Remote MCP server URL: ' + url + "\n5. Click Add \u2014 sign in via Okta when prompted\n6. Cortex tools are now available in CoWork sessions";
|
|
2003
2101
|
}
|
|
2004
2102
|
function generateStdioSnippet(_apiKey) {
|
|
2005
2103
|
const isWindowsTarget = getPlatform() === "windows" || isWSL();
|