@danainnovations/cortex-mcp 1.0.72 → 1.0.74
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/{chunk-KO4SHBAF.js → chunk-D4PD3E6J.js} +8 -1
- package/dist/{chunk-KO4SHBAF.js.map → chunk-D4PD3E6J.js.map} +1 -1
- package/dist/cli.js +59 -25
- package/dist/cli.js.map +1 -1
- package/dist/{constants-COUEGU7A.js → constants-QSLA3TAZ.js} +2 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- /package/dist/{constants-COUEGU7A.js.map → constants-QSLA3TAZ.js.map} +0 -0
|
@@ -88,6 +88,13 @@ var AVAILABLE_MCPS = [
|
|
|
88
88
|
description: "Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)",
|
|
89
89
|
serverName: "cortex-databricks",
|
|
90
90
|
authMode: "company"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "concur",
|
|
94
|
+
displayName: "SAP Concur",
|
|
95
|
+
description: "Expense reports, entries, receipts, approvals (16 tools)",
|
|
96
|
+
serverName: "cortex-concur",
|
|
97
|
+
authMode: "personal"
|
|
91
98
|
}
|
|
92
99
|
];
|
|
93
100
|
var MCP_NAMES = AVAILABLE_MCPS.map((m) => m.name);
|
|
@@ -108,4 +115,4 @@ export {
|
|
|
108
115
|
CONFIG_FILE_NAME,
|
|
109
116
|
CREDENTIALS_FILE_NAME
|
|
110
117
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-D4PD3E6J.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n] as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n {\n name: \"concur\",\n displayName: \"SAP Concur\",\n description: \"Expense reports, entries, receipts, approvals (16 tools)\",\n serverName: \"cortex-concur\",\n authMode: \"personal\" as const,\n },\n] as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
DEFAULT_SERVER_URL,
|
|
10
10
|
MCP_NAMES,
|
|
11
11
|
PROTOCOL_VERSION
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-D4PD3E6J.js";
|
|
13
13
|
import {
|
|
14
14
|
getAntigravityConfigPath,
|
|
15
15
|
getClaudeDesktopConfigPath,
|
|
@@ -399,6 +399,21 @@ function getWizardHtml() {
|
|
|
399
399
|
.mcp-item.user-connected { border-color: rgba(76, 175, 80, 0.4); cursor: default; }
|
|
400
400
|
.mcp-item.user-connected .mcp-check { background: #4CAF50; border-color: #4CAF50; }
|
|
401
401
|
.mcp-item.user-connected .mcp-check-icon { display: block; }
|
|
402
|
+
.mcp-item.disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
|
|
403
|
+
.mcp-item.disabled .mcp-check { background: transparent; border-color: rgba(255,255,255,0.1); }
|
|
404
|
+
.mcp-coming-soon-label {
|
|
405
|
+
position: absolute;
|
|
406
|
+
top: 6px;
|
|
407
|
+
right: 8px;
|
|
408
|
+
font-size: 9px;
|
|
409
|
+
font-weight: 600;
|
|
410
|
+
text-transform: uppercase;
|
|
411
|
+
letter-spacing: 0.5px;
|
|
412
|
+
color: rgba(255, 255, 255, 0.35);
|
|
413
|
+
background: rgba(255, 255, 255, 0.06);
|
|
414
|
+
padding: 2px 6px;
|
|
415
|
+
border-radius: 4px;
|
|
416
|
+
}
|
|
402
417
|
.mcp-connected-badge {
|
|
403
418
|
display: block;
|
|
404
419
|
font-size: 11px;
|
|
@@ -852,7 +867,8 @@ function getWizardHtml() {
|
|
|
852
867
|
var data = await resp.json();
|
|
853
868
|
state.credentials = data.credentials;
|
|
854
869
|
state.availableMcps = data.availableMcps || [];
|
|
855
|
-
state.
|
|
870
|
+
state.enabledMcps = data.enabledMcps || ['m365'];
|
|
871
|
+
state.selectedMcps = (data.enabledMcps || ['m365']).slice();
|
|
856
872
|
state.detectedClients = data.detectedClients || [];
|
|
857
873
|
state.configuredClients = (data.config && data.config.configuredClients) || [];
|
|
858
874
|
} catch (err) {
|
|
@@ -1005,7 +1021,6 @@ function getWizardHtml() {
|
|
|
1005
1021
|
}
|
|
1006
1022
|
|
|
1007
1023
|
// \u2500\u2500 Step 3: Select MCPs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
1008
|
-
var REQUIRED_MCPS = ['github', 'supabase', 'vercel', 'databricks', 'bestbuy'];
|
|
1009
1024
|
|
|
1010
1025
|
var MCP_TOOLTIPS = {
|
|
1011
1026
|
asana: 'Manage projects, tasks, and team workflows',
|
|
@@ -1034,31 +1049,35 @@ function getWizardHtml() {
|
|
|
1034
1049
|
state.connections = state.connections || [];
|
|
1035
1050
|
}
|
|
1036
1051
|
|
|
1037
|
-
var
|
|
1038
|
-
|
|
1052
|
+
var enabledList = (state.enabledMcps && state.enabledMcps.length > 0)
|
|
1053
|
+
? state.enabledMcps : ['m365'];
|
|
1054
|
+
var enabledMcps = state.availableMcps.filter(function(m) { return enabledList.indexOf(m.name) !== -1; });
|
|
1055
|
+
var disabledMcps = state.availableMcps.filter(function(m) { return enabledList.indexOf(m.name) === -1; });
|
|
1039
1056
|
|
|
1040
1057
|
var html = '';
|
|
1041
1058
|
|
|
1042
|
-
//
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1059
|
+
// Enabled section
|
|
1060
|
+
if (enabledMcps.length > 0) {
|
|
1061
|
+
html += '<div class="mcp-section">';
|
|
1062
|
+
html += '<div class="mcp-section-title">Available integrations</div>';
|
|
1063
|
+
html += '<div class="mcp-list">';
|
|
1064
|
+
html += enabledMcps.map(function(mcp) { return renderMcpItem(mcp, false, false); }).join('');
|
|
1065
|
+
html += '</div></div>';
|
|
1066
|
+
}
|
|
1048
1067
|
|
|
1049
|
-
//
|
|
1050
|
-
if (
|
|
1068
|
+
// Disabled (coming soon) section
|
|
1069
|
+
if (disabledMcps.length > 0) {
|
|
1051
1070
|
html += '<div class="mcp-section">';
|
|
1052
|
-
html += '<div class="mcp-section-title">
|
|
1071
|
+
html += '<div class="mcp-section-title">Coming soon</div>';
|
|
1053
1072
|
html += '<div class="mcp-list">';
|
|
1054
|
-
html +=
|
|
1073
|
+
html += disabledMcps.map(function(mcp) { return renderMcpItem(mcp, false, true); }).join('');
|
|
1055
1074
|
html += '</div></div>';
|
|
1056
1075
|
}
|
|
1057
1076
|
|
|
1058
1077
|
container.innerHTML = html;
|
|
1059
1078
|
|
|
1060
|
-
// Attach click handlers to
|
|
1061
|
-
container.querySelectorAll('.mcp-item:not(.
|
|
1079
|
+
// Attach click handlers to enabled items only (not disabled, not user-connected)
|
|
1080
|
+
container.querySelectorAll('.mcp-item:not(.disabled):not(.user-connected)').forEach(function(item) {
|
|
1062
1081
|
item.addEventListener('click', function(e) {
|
|
1063
1082
|
e.preventDefault();
|
|
1064
1083
|
var cb = item.querySelector('input[type="checkbox"]');
|
|
@@ -1068,16 +1087,17 @@ function getWizardHtml() {
|
|
|
1068
1087
|
});
|
|
1069
1088
|
}
|
|
1070
1089
|
|
|
1071
|
-
function renderMcpItem(mcp, isRequired) {
|
|
1090
|
+
function renderMcpItem(mcp, isRequired, isDisabled) {
|
|
1072
1091
|
var icon = MCP_ICONS[mcp.name] || '';
|
|
1073
1092
|
var conn = (state.connections || []).find(function(c) { return c.mcp_name === mcp.name; });
|
|
1074
|
-
var isConnected = conn && !conn.is_company_default && conn.account_email;
|
|
1075
|
-
var checked = isRequired || isConnected || state.selectedMcps.indexOf(mcp.name) !== -1;
|
|
1093
|
+
var isConnected = !isDisabled && conn && !conn.is_company_default && conn.account_email;
|
|
1094
|
+
var checked = !isDisabled && (isRequired || isConnected || state.selectedMcps.indexOf(mcp.name) !== -1);
|
|
1076
1095
|
return (
|
|
1077
1096
|
'<label class="mcp-item' + (checked ? ' checked' : '') + (isRequired ? ' required' : '') +
|
|
1078
|
-
(isConnected ? ' user-connected' : '') +
|
|
1097
|
+
(isConnected ? ' user-connected' : '') +
|
|
1098
|
+
(isDisabled ? ' disabled' : '') + '" data-mcp="' + mcp.name + '">' +
|
|
1079
1099
|
(MCP_TOOLTIPS[mcp.name] ? '<span class="mcp-tooltip">' + MCP_TOOLTIPS[mcp.name] + '</span>' : '') +
|
|
1080
|
-
'<input type="checkbox" value="' + mcp.name + '"' + (checked ? ' checked' : '') + (isConnected ? ' disabled' : '') + '>' +
|
|
1100
|
+
'<input type="checkbox" value="' + mcp.name + '"' + (checked ? ' checked' : '') + ((isConnected || isDisabled) ? ' disabled' : '') + '>' +
|
|
1081
1101
|
(icon ? '<div class="mcp-icon">' + icon + '</div>' : '') +
|
|
1082
1102
|
'<div class="mcp-check"><span class="mcp-check-icon">✓</span></div>' +
|
|
1083
1103
|
'<div class="mcp-info">' +
|
|
@@ -1089,14 +1109,14 @@ function getWizardHtml() {
|
|
|
1089
1109
|
'</div>' +
|
|
1090
1110
|
(isRequired ? '<span class="mcp-required-label">Required</span>' : '') +
|
|
1091
1111
|
(isConnected && !isRequired ? '<span class="mcp-connected-label">Connected</span>' : '') +
|
|
1112
|
+
(isDisabled ? '<span class="mcp-coming-soon-label">Coming Soon</span>' : '') +
|
|
1092
1113
|
'</label>'
|
|
1093
1114
|
);
|
|
1094
1115
|
}
|
|
1095
1116
|
|
|
1096
1117
|
function saveMcps() {
|
|
1097
|
-
var checkboxes = document.querySelectorAll('.mcp-item input[type="checkbox"]');
|
|
1118
|
+
var checkboxes = document.querySelectorAll('.mcp-item:not(.disabled) input[type="checkbox"]');
|
|
1098
1119
|
var selected = Array.from(checkboxes).filter(function(cb) { return cb.checked; }).map(function(cb) { return cb.value; });
|
|
1099
|
-
REQUIRED_MCPS.forEach(function(name) { if (selected.indexOf(name) === -1) selected.push(name); });
|
|
1100
1120
|
state.selectedMcps = selected;
|
|
1101
1121
|
goToStep('clients');
|
|
1102
1122
|
}
|
|
@@ -1876,11 +1896,25 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
|
|
|
1876
1896
|
const creds = readCredentials();
|
|
1877
1897
|
const config = readConfig();
|
|
1878
1898
|
const clients = detectClients();
|
|
1899
|
+
let enabledMcps = ["m365"];
|
|
1900
|
+
try {
|
|
1901
|
+
const setupResp = await fetch(
|
|
1902
|
+
`${options.serverUrl}/api/v1/mcps/setup-enabled`
|
|
1903
|
+
);
|
|
1904
|
+
if (setupResp.ok) {
|
|
1905
|
+
const setupData = await setupResp.json();
|
|
1906
|
+
if (Array.isArray(setupData.enabled)) {
|
|
1907
|
+
enabledMcps = setupData.enabled;
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
} catch {
|
|
1911
|
+
}
|
|
1879
1912
|
json(res, {
|
|
1880
1913
|
credentials: creds ? { email: creds.email, name: creds.name } : null,
|
|
1881
1914
|
config,
|
|
1882
1915
|
apiKey: getState().apiKey,
|
|
1883
1916
|
defaultMcps: [...DEFAULT_MCPS],
|
|
1917
|
+
enabledMcps,
|
|
1884
1918
|
availableMcps: AVAILABLE_MCPS.map((m) => ({
|
|
1885
1919
|
name: m.name,
|
|
1886
1920
|
displayName: m.displayName,
|
|
@@ -3944,7 +3978,7 @@ program.command("disconnect <provider>").description("Remove your personal OAuth
|
|
|
3944
3978
|
}
|
|
3945
3979
|
});
|
|
3946
3980
|
program.command("connect-mobile").description("Connect Cortex to Claude on mobile \u2014 opens setup page in browser").action(async () => {
|
|
3947
|
-
const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-
|
|
3981
|
+
const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-QSLA3TAZ.js");
|
|
3948
3982
|
const { openBrowser: openBrowser2 } = await import("./browser-WFTDXNKP.js");
|
|
3949
3983
|
const url = `${DEFAULT_SERVER_URL3}/connect`;
|
|
3950
3984
|
console.log("\nOpening Cortex connect page...");
|