@kwonye/mcpx 0.1.90 → 0.1.91

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.
@@ -1 +1 @@
1
- {"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-desktop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAuB,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoC/H,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAG,gBAAgB,CAAU;IAExC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAUjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IA6D9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAsDzE"}
1
+ {"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-desktop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAuB,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2C/H,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAG,gBAAgB,CAAU;IAExC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAUjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IA6D9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAsDzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../src/adapters/cline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiD1G,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAU;IAE/B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAWjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CA0DzE"}
1
+ {"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../src/adapters/cline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2D1G,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAU;IAE/B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAWjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAmE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAgEzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+B1G,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAU;IAE/B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IA+D9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAwDzE"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmC1G,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAU;IAE/B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IA+D9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAwDzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B1G,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAEhC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAUjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CA4DzE"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B1G,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAEhC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAMjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CA4DzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../src/adapters/kiro.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA6BjH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAE9B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAwDxE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CAyBlC"}
1
+ {"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../src/adapters/kiro.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoCjH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAE9B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAwDxE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CAyBlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B1G,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,EAAE,EAAG,UAAU,CAAU;IAElC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAwDzE"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+B1G,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,EAAE,EAAG,UAAU,CAAU;IAElC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAuE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;CAwDzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../src/adapters/qwen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BjH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAE9B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgE9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAuDxE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CAuBlC"}
1
+ {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../src/adapters/qwen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgCjH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAE9B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,OAAO;IAIvB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY;IAgF9D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU;IAuDxE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CAuBlC"}
@@ -486,7 +486,7 @@ class ClaudeAdapter {
486
486
  }
487
487
  const entry = parsed.data;
488
488
  const isDisabled = entry.disabled === true || disabledMcpServers.has(name);
489
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
489
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
490
490
  result.candidates.push({
491
491
  clientId: this.id,
492
492
  configPath,
@@ -638,7 +638,7 @@ class ClaudeDesktopAdapter {
638
638
  continue;
639
639
  }
640
640
  const entry = parsed.data;
641
- if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable_http") && entry.url && !entry.command) {
641
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
642
642
  result.candidates.push({
643
643
  clientId: this.id,
644
644
  configPath,
@@ -854,13 +854,7 @@ var cursorEntrySchema = z4.object({
854
854
  class CursorAdapter {
855
855
  id = "cursor";
856
856
  detectConfigPath() {
857
- if (process.platform === "linux") {
858
- return path5.join(homeDir(), ".config", "Cursor", "User", "mcp.json");
859
- }
860
- if (process.platform === "win32") {
861
- return path5.join(process.env.APPDATA ?? "", "Cursor", "User", "mcp.json");
862
- }
863
- return path5.join(homeDir(), "Library", "Application Support", "Cursor", "User", "mcp.json");
857
+ return path5.join(homeDir(), ".cursor", "mcp.json");
864
858
  }
865
859
  supportsHttp() {
866
860
  return true;
@@ -873,7 +867,7 @@ class CursorAdapter {
873
867
  }
874
868
  const raw = readJsonFile(configPath, {});
875
869
  const servers = {
876
- ...raw.servers ?? {}
870
+ ...raw.mcpServers ?? {}
877
871
  };
878
872
  for (const [name, rawEntry] of Object.entries(servers)) {
879
873
  if (isManagedGatewayProjection(name) || managedIndex.managed[this.id]?.entries?.[name]) {
@@ -885,7 +879,7 @@ class CursorAdapter {
885
879
  continue;
886
880
  }
887
881
  const entry = parsed.data;
888
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
882
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
889
883
  result.candidates.push({
890
884
  clientId: this.id,
891
885
  configPath,
@@ -929,7 +923,7 @@ class CursorAdapter {
929
923
  try {
930
924
  const raw = readJsonFile(configPath, {});
931
925
  const servers = {
932
- ...raw.servers ?? {}
926
+ ...raw.mcpServers ?? {}
933
927
  };
934
928
  removeSourceEntries(servers, options.sourceEntriesToRemove);
935
929
  const enabledEntries = options.managedEntries.filter((entry) => entry.enabled);
@@ -951,7 +945,7 @@ class CursorAdapter {
951
945
  }
952
946
  const next = {
953
947
  ...raw,
954
- servers
948
+ mcpServers: servers
955
949
  };
956
950
  writeJsonAtomic(configPath, next);
957
951
  setManagedEntries(options.managedIndex, this.id, configPath, Object.fromEntries(options.managedEntries.map((entry) => [
@@ -969,8 +963,10 @@ class CursorAdapter {
969
963
  import path6 from "node:path";
970
964
  import fs4 from "node:fs";
971
965
  import { z as z5 } from "zod";
966
+ var HTTP_TRANSPORT_TYPES = new Set(["http", "sse", "streamableHttp"]);
972
967
  var stringMapSchema5 = z5.record(z5.string(), z5.string());
973
968
  var clineEntrySchema = z5.object({
969
+ type: z5.string().optional(),
974
970
  transportType: z5.string().optional(),
975
971
  url: z5.string().min(1).optional(),
976
972
  headers: stringMapSchema5.optional(),
@@ -984,18 +980,21 @@ function getCandidatePaths() {
984
980
  if (process.platform === "linux") {
985
981
  return [
986
982
  path6.join(homeDir(), ".config", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
987
- path6.join(homeDir(), ".config", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
983
+ path6.join(homeDir(), ".config", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
984
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
988
985
  ];
989
986
  }
990
987
  if (process.platform === "win32") {
991
988
  return [
992
989
  path6.join(process.env.APPDATA ?? "", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
993
- path6.join(process.env.APPDATA ?? "", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
990
+ path6.join(process.env.APPDATA ?? "", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
991
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
994
992
  ];
995
993
  }
996
994
  return [
997
995
  path6.join(homeDir(), "Library", "Application Support", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
998
- path6.join(homeDir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
996
+ path6.join(homeDir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
997
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
999
998
  ];
1000
999
  }
1001
1000
 
@@ -1033,7 +1032,8 @@ class ClineAdapter {
1033
1032
  continue;
1034
1033
  }
1035
1034
  const entry = parsed.data;
1036
- if ((entry.transportType === undefined || entry.transportType === "http") && entry.url && !entry.command) {
1035
+ const transport = entry.type ?? entry.transportType;
1036
+ if ((transport === undefined || HTTP_TRANSPORT_TYPES.has(transport)) && entry.url && !entry.command) {
1037
1037
  result.candidates.push({
1038
1038
  clientId: this.id,
1039
1039
  configPath,
@@ -1048,7 +1048,7 @@ class ClineAdapter {
1048
1048
  });
1049
1049
  continue;
1050
1050
  }
1051
- if ((entry.transportType === undefined || entry.transportType === "stdio") && entry.command && !entry.url) {
1051
+ if ((transport === undefined || transport === "stdio") && entry.command && !entry.url) {
1052
1052
  result.candidates.push({
1053
1053
  clientId: this.id,
1054
1054
  configPath,
@@ -1085,7 +1085,7 @@ class ClineAdapter {
1085
1085
  removeSourceEntries(servers, options.sourceEntriesToRemove);
1086
1086
  const managedNames = options.managedEntries.map((entry) => entry.name);
1087
1087
  const serverEntries = Object.fromEntries(options.managedEntries.map((entry) => [entry.name, {
1088
- transportType: "http",
1088
+ type: "streamableHttp",
1089
1089
  url: entry.url,
1090
1090
  headers: entry.headers,
1091
1091
  disabled: !entry.enabled
@@ -1119,6 +1119,7 @@ import path7 from "node:path";
1119
1119
  import { z as z6 } from "zod";
1120
1120
  var stringMapSchema6 = z6.record(z6.string(), z6.string());
1121
1121
  var kiroEntrySchema = z6.object({
1122
+ type: z6.string().optional(),
1122
1123
  url: z6.string().min(1).optional(),
1123
1124
  headers: stringMapSchema6.optional(),
1124
1125
  command: z6.string().min(1).optional(),
@@ -1156,7 +1157,7 @@ class KiroAdapter {
1156
1157
  continue;
1157
1158
  }
1158
1159
  const entry = parsed.data;
1159
- if (entry.url && !entry.command) {
1160
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http" || entry.type === "sse") && entry.url && !entry.command) {
1160
1161
  result.candidates.push({
1161
1162
  clientId: this.id,
1162
1163
  configPath,
@@ -1171,7 +1172,7 @@ class KiroAdapter {
1171
1172
  });
1172
1173
  continue;
1173
1174
  }
1174
- if (entry.command && !entry.url) {
1175
+ if ((entry.type === undefined || entry.type === "stdio") && entry.command && !entry.url) {
1175
1176
  result.candidates.push({
1176
1177
  clientId: this.id,
1177
1178
  configPath,
@@ -1260,9 +1261,10 @@ var openCodeEntrySchema = z7.object({
1260
1261
  type: z7.string().optional(),
1261
1262
  url: z7.string().min(1).optional(),
1262
1263
  headers: stringMapSchema7.optional(),
1263
- command: z7.string().min(1).optional(),
1264
+ command: z7.union([z7.string().min(1), z7.array(z7.string())]).optional(),
1264
1265
  args: z7.array(z7.string()).optional(),
1265
1266
  env: stringMapSchema7.optional(),
1267
+ environment: stringMapSchema7.optional(),
1266
1268
  cwd: z7.string().min(1).optional(),
1267
1269
  enabled: z7.boolean().optional()
1268
1270
  }).passthrough();
@@ -1295,7 +1297,7 @@ class OpenCodeAdapter {
1295
1297
  continue;
1296
1298
  }
1297
1299
  const entry = parsed.data;
1298
- if ((entry.type === undefined || entry.type === "remote" || entry.type === "http") && entry.url && !entry.command) {
1300
+ if ((entry.type === undefined || entry.type === "remote" || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
1299
1301
  result.candidates.push({
1300
1302
  clientId: this.id,
1301
1303
  configPath,
@@ -1310,7 +1312,12 @@ class OpenCodeAdapter {
1310
1312
  });
1311
1313
  continue;
1312
1314
  }
1313
- if ((entry.type === undefined || entry.type === "stdio") && entry.command && !entry.url) {
1315
+ if ((entry.type === undefined || entry.type === "local" || entry.type === "stdio") && entry.command && !entry.url) {
1316
+ const commandParts = Array.isArray(entry.command) ? entry.command : [entry.command, ...entry.args ?? []];
1317
+ if (commandParts.length === 0) {
1318
+ result.skipped.push(buildImportSkip(this.id, name, "Entry could not be mapped to an mcpx server.", configPath));
1319
+ continue;
1320
+ }
1314
1321
  result.candidates.push({
1315
1322
  clientId: this.id,
1316
1323
  configPath,
@@ -1318,9 +1325,9 @@ class OpenCodeAdapter {
1318
1325
  serverName: name,
1319
1326
  spec: {
1320
1327
  transport: "stdio",
1321
- command: entry.command,
1322
- args: entry.args,
1323
- env: entry.env,
1328
+ command: commandParts[0],
1329
+ args: commandParts.slice(1),
1330
+ env: entry.environment ?? entry.env,
1324
1331
  cwd: entry.cwd,
1325
1332
  enabled: entry.enabled !== false
1326
1333
  }
@@ -1421,7 +1428,7 @@ class VsCodeAdapter {
1421
1428
  continue;
1422
1429
  }
1423
1430
  const entry = parsed.data;
1424
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
1431
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
1425
1432
  result.candidates.push({
1426
1433
  clientId: this.id,
1427
1434
  configPath,
@@ -1508,6 +1515,7 @@ import { z as z9 } from "zod";
1508
1515
  var stringMapSchema9 = z9.record(z9.string(), z9.string());
1509
1516
  var qwenEntrySchema = z9.object({
1510
1517
  httpUrl: z9.string().min(1).optional(),
1518
+ url: z9.string().min(1).optional(),
1511
1519
  headers: stringMapSchema9.optional(),
1512
1520
  command: z9.string().min(1).optional(),
1513
1521
  args: z9.array(z9.string()).optional(),
@@ -1558,6 +1566,21 @@ class QwenAdapter {
1558
1566
  });
1559
1567
  continue;
1560
1568
  }
1569
+ if (entry.url && !entry.httpUrl && !entry.command) {
1570
+ result.candidates.push({
1571
+ clientId: this.id,
1572
+ configPath,
1573
+ sourceEntryName: name,
1574
+ serverName: name,
1575
+ spec: {
1576
+ transport: "http",
1577
+ url: entry.url,
1578
+ headers: entry.headers,
1579
+ enabled: !(entry.disabled === true || excludedSet.has(name))
1580
+ }
1581
+ });
1582
+ continue;
1583
+ }
1561
1584
  if (entry.command && !entry.httpUrl) {
1562
1585
  result.candidates.push({
1563
1586
  clientId: this.id,
@@ -486,7 +486,7 @@ class ClaudeAdapter {
486
486
  }
487
487
  const entry = parsed.data;
488
488
  const isDisabled = entry.disabled === true || disabledMcpServers.has(name);
489
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
489
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
490
490
  result.candidates.push({
491
491
  clientId: this.id,
492
492
  configPath,
@@ -638,7 +638,7 @@ class ClaudeDesktopAdapter {
638
638
  continue;
639
639
  }
640
640
  const entry = parsed.data;
641
- if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable_http") && entry.url && !entry.command) {
641
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
642
642
  result.candidates.push({
643
643
  clientId: this.id,
644
644
  configPath,
@@ -854,13 +854,7 @@ var cursorEntrySchema = z4.object({
854
854
  class CursorAdapter {
855
855
  id = "cursor";
856
856
  detectConfigPath() {
857
- if (process.platform === "linux") {
858
- return path5.join(homeDir(), ".config", "Cursor", "User", "mcp.json");
859
- }
860
- if (process.platform === "win32") {
861
- return path5.join(process.env.APPDATA ?? "", "Cursor", "User", "mcp.json");
862
- }
863
- return path5.join(homeDir(), "Library", "Application Support", "Cursor", "User", "mcp.json");
857
+ return path5.join(homeDir(), ".cursor", "mcp.json");
864
858
  }
865
859
  supportsHttp() {
866
860
  return true;
@@ -873,7 +867,7 @@ class CursorAdapter {
873
867
  }
874
868
  const raw = readJsonFile(configPath, {});
875
869
  const servers = {
876
- ...raw.servers ?? {}
870
+ ...raw.mcpServers ?? {}
877
871
  };
878
872
  for (const [name, rawEntry] of Object.entries(servers)) {
879
873
  if (isManagedGatewayProjection(name) || managedIndex.managed[this.id]?.entries?.[name]) {
@@ -885,7 +879,7 @@ class CursorAdapter {
885
879
  continue;
886
880
  }
887
881
  const entry = parsed.data;
888
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
882
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
889
883
  result.candidates.push({
890
884
  clientId: this.id,
891
885
  configPath,
@@ -929,7 +923,7 @@ class CursorAdapter {
929
923
  try {
930
924
  const raw = readJsonFile(configPath, {});
931
925
  const servers = {
932
- ...raw.servers ?? {}
926
+ ...raw.mcpServers ?? {}
933
927
  };
934
928
  removeSourceEntries(servers, options.sourceEntriesToRemove);
935
929
  const enabledEntries = options.managedEntries.filter((entry) => entry.enabled);
@@ -951,7 +945,7 @@ class CursorAdapter {
951
945
  }
952
946
  const next = {
953
947
  ...raw,
954
- servers
948
+ mcpServers: servers
955
949
  };
956
950
  writeJsonAtomic(configPath, next);
957
951
  setManagedEntries(options.managedIndex, this.id, configPath, Object.fromEntries(options.managedEntries.map((entry) => [
@@ -969,8 +963,10 @@ class CursorAdapter {
969
963
  import path6 from "node:path";
970
964
  import fs4 from "node:fs";
971
965
  import { z as z5 } from "zod";
966
+ var HTTP_TRANSPORT_TYPES = new Set(["http", "sse", "streamableHttp"]);
972
967
  var stringMapSchema5 = z5.record(z5.string(), z5.string());
973
968
  var clineEntrySchema = z5.object({
969
+ type: z5.string().optional(),
974
970
  transportType: z5.string().optional(),
975
971
  url: z5.string().min(1).optional(),
976
972
  headers: stringMapSchema5.optional(),
@@ -984,18 +980,21 @@ function getCandidatePaths() {
984
980
  if (process.platform === "linux") {
985
981
  return [
986
982
  path6.join(homeDir(), ".config", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
987
- path6.join(homeDir(), ".config", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
983
+ path6.join(homeDir(), ".config", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
984
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
988
985
  ];
989
986
  }
990
987
  if (process.platform === "win32") {
991
988
  return [
992
989
  path6.join(process.env.APPDATA ?? "", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
993
- path6.join(process.env.APPDATA ?? "", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
990
+ path6.join(process.env.APPDATA ?? "", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
991
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
994
992
  ];
995
993
  }
996
994
  return [
997
995
  path6.join(homeDir(), "Library", "Application Support", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
998
- path6.join(homeDir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
996
+ path6.join(homeDir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
997
+ path6.join(homeDir(), ".cline", "settings", "cline_mcp_settings.json")
999
998
  ];
1000
999
  }
1001
1000
 
@@ -1033,7 +1032,8 @@ class ClineAdapter {
1033
1032
  continue;
1034
1033
  }
1035
1034
  const entry = parsed.data;
1036
- if ((entry.transportType === undefined || entry.transportType === "http") && entry.url && !entry.command) {
1035
+ const transport = entry.type ?? entry.transportType;
1036
+ if ((transport === undefined || HTTP_TRANSPORT_TYPES.has(transport)) && entry.url && !entry.command) {
1037
1037
  result.candidates.push({
1038
1038
  clientId: this.id,
1039
1039
  configPath,
@@ -1048,7 +1048,7 @@ class ClineAdapter {
1048
1048
  });
1049
1049
  continue;
1050
1050
  }
1051
- if ((entry.transportType === undefined || entry.transportType === "stdio") && entry.command && !entry.url) {
1051
+ if ((transport === undefined || transport === "stdio") && entry.command && !entry.url) {
1052
1052
  result.candidates.push({
1053
1053
  clientId: this.id,
1054
1054
  configPath,
@@ -1085,7 +1085,7 @@ class ClineAdapter {
1085
1085
  removeSourceEntries(servers, options.sourceEntriesToRemove);
1086
1086
  const managedNames = options.managedEntries.map((entry) => entry.name);
1087
1087
  const serverEntries = Object.fromEntries(options.managedEntries.map((entry) => [entry.name, {
1088
- transportType: "http",
1088
+ type: "streamableHttp",
1089
1089
  url: entry.url,
1090
1090
  headers: entry.headers,
1091
1091
  disabled: !entry.enabled
@@ -1119,6 +1119,7 @@ import path7 from "node:path";
1119
1119
  import { z as z6 } from "zod";
1120
1120
  var stringMapSchema6 = z6.record(z6.string(), z6.string());
1121
1121
  var kiroEntrySchema = z6.object({
1122
+ type: z6.string().optional(),
1122
1123
  url: z6.string().min(1).optional(),
1123
1124
  headers: stringMapSchema6.optional(),
1124
1125
  command: z6.string().min(1).optional(),
@@ -1156,7 +1157,7 @@ class KiroAdapter {
1156
1157
  continue;
1157
1158
  }
1158
1159
  const entry = parsed.data;
1159
- if (entry.url && !entry.command) {
1160
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http" || entry.type === "sse") && entry.url && !entry.command) {
1160
1161
  result.candidates.push({
1161
1162
  clientId: this.id,
1162
1163
  configPath,
@@ -1171,7 +1172,7 @@ class KiroAdapter {
1171
1172
  });
1172
1173
  continue;
1173
1174
  }
1174
- if (entry.command && !entry.url) {
1175
+ if ((entry.type === undefined || entry.type === "stdio") && entry.command && !entry.url) {
1175
1176
  result.candidates.push({
1176
1177
  clientId: this.id,
1177
1178
  configPath,
@@ -1260,9 +1261,10 @@ var openCodeEntrySchema = z7.object({
1260
1261
  type: z7.string().optional(),
1261
1262
  url: z7.string().min(1).optional(),
1262
1263
  headers: stringMapSchema7.optional(),
1263
- command: z7.string().min(1).optional(),
1264
+ command: z7.union([z7.string().min(1), z7.array(z7.string())]).optional(),
1264
1265
  args: z7.array(z7.string()).optional(),
1265
1266
  env: stringMapSchema7.optional(),
1267
+ environment: stringMapSchema7.optional(),
1266
1268
  cwd: z7.string().min(1).optional(),
1267
1269
  enabled: z7.boolean().optional()
1268
1270
  }).passthrough();
@@ -1295,7 +1297,7 @@ class OpenCodeAdapter {
1295
1297
  continue;
1296
1298
  }
1297
1299
  const entry = parsed.data;
1298
- if ((entry.type === undefined || entry.type === "remote" || entry.type === "http") && entry.url && !entry.command) {
1300
+ if ((entry.type === undefined || entry.type === "remote" || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
1299
1301
  result.candidates.push({
1300
1302
  clientId: this.id,
1301
1303
  configPath,
@@ -1310,7 +1312,12 @@ class OpenCodeAdapter {
1310
1312
  });
1311
1313
  continue;
1312
1314
  }
1313
- if ((entry.type === undefined || entry.type === "stdio") && entry.command && !entry.url) {
1315
+ if ((entry.type === undefined || entry.type === "local" || entry.type === "stdio") && entry.command && !entry.url) {
1316
+ const commandParts = Array.isArray(entry.command) ? entry.command : [entry.command, ...entry.args ?? []];
1317
+ if (commandParts.length === 0) {
1318
+ result.skipped.push(buildImportSkip(this.id, name, "Entry could not be mapped to an mcpx server.", configPath));
1319
+ continue;
1320
+ }
1314
1321
  result.candidates.push({
1315
1322
  clientId: this.id,
1316
1323
  configPath,
@@ -1318,9 +1325,9 @@ class OpenCodeAdapter {
1318
1325
  serverName: name,
1319
1326
  spec: {
1320
1327
  transport: "stdio",
1321
- command: entry.command,
1322
- args: entry.args,
1323
- env: entry.env,
1328
+ command: commandParts[0],
1329
+ args: commandParts.slice(1),
1330
+ env: entry.environment ?? entry.env,
1324
1331
  cwd: entry.cwd,
1325
1332
  enabled: entry.enabled !== false
1326
1333
  }
@@ -1421,7 +1428,7 @@ class VsCodeAdapter {
1421
1428
  continue;
1422
1429
  }
1423
1430
  const entry = parsed.data;
1424
- if ((entry.type === undefined || entry.type === "http") && entry.url && !entry.command) {
1431
+ if ((entry.type === undefined || entry.type === "http" || entry.type === "streamable-http") && entry.url && !entry.command) {
1425
1432
  result.candidates.push({
1426
1433
  clientId: this.id,
1427
1434
  configPath,
@@ -1508,6 +1515,7 @@ import { z as z9 } from "zod";
1508
1515
  var stringMapSchema9 = z9.record(z9.string(), z9.string());
1509
1516
  var qwenEntrySchema = z9.object({
1510
1517
  httpUrl: z9.string().min(1).optional(),
1518
+ url: z9.string().min(1).optional(),
1511
1519
  headers: stringMapSchema9.optional(),
1512
1520
  command: z9.string().min(1).optional(),
1513
1521
  args: z9.array(z9.string()).optional(),
@@ -1558,6 +1566,21 @@ class QwenAdapter {
1558
1566
  });
1559
1567
  continue;
1560
1568
  }
1569
+ if (entry.url && !entry.httpUrl && !entry.command) {
1570
+ result.candidates.push({
1571
+ clientId: this.id,
1572
+ configPath,
1573
+ sourceEntryName: name,
1574
+ serverName: name,
1575
+ spec: {
1576
+ transport: "http",
1577
+ url: entry.url,
1578
+ headers: entry.headers,
1579
+ enabled: !(entry.disabled === true || excludedSet.has(name))
1580
+ }
1581
+ });
1582
+ continue;
1583
+ }
1561
1584
  if (entry.command && !entry.httpUrl) {
1562
1585
  result.candidates.push({
1563
1586
  clientId: this.id,
@@ -2250,7 +2273,7 @@ async function getOAuthAccessToken(serverName, spec, secrets, options = {}) {
2250
2273
  }
2251
2274
 
2252
2275
  // src/version.ts
2253
- var APP_VERSION = "0.1.90";
2276
+ var APP_VERSION = "0.1.91";
2254
2277
 
2255
2278
  // src/core/update.ts
2256
2279
  import fs8 from "node:fs";
package/dist/cli.js CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  stopDaemon,
39
39
  syncAllClients,
40
40
  toSecretRef
41
- } from "./cli-mzgjjdjt.js";
41
+ } from "./cli-grafmdtc.js";
42
42
  import {
43
43
  loadConfig,
44
44
  loadMergedConfig,
@@ -41,7 +41,7 @@ import {
41
41
  stopDaemon,
42
42
  syncAllClients,
43
43
  toSecretRef
44
- } from "../cli-mzgjjdjt.js";
44
+ } from "../cli-grafmdtc.js";
45
45
  import {
46
46
  defaultConfig,
47
47
  loadConfig,
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const APP_VERSION = "0.1.90";
1
+ export declare const APP_VERSION = "0.1.91";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwonye/mcpx",
3
- "version": "0.1.90",
3
+ "version": "0.1.91",
4
4
  "description": "HTTP-first MCP gateway and cross-client installer",
5
5
  "keywords": [
6
6
  "mcp",