mcp-use 1.1.7 → 1.1.8-canary.1
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.
|
@@ -939,25 +939,48 @@ if (container && Component) {
|
|
|
939
939
|
}
|
|
940
940
|
let html = "";
|
|
941
941
|
try {
|
|
942
|
-
html =
|
|
942
|
+
html = (0, import_node_fs2.readFileSync)((0, import_node_path.join)(tempDir, widget.name, "index.html"), "utf8");
|
|
943
|
+
const mcpUrl = process.env.MCP_URL || "/";
|
|
944
|
+
if (mcpUrl && html) {
|
|
945
|
+
const htmlWithoutComments = html.replace(/<!--[\s\S]*?-->/g, "");
|
|
946
|
+
const baseTagRegex = /<base\s+[^>]*\/?>/i;
|
|
947
|
+
if (baseTagRegex.test(htmlWithoutComments)) {
|
|
948
|
+
const actualBaseTagMatch = html.match(/<base\s+[^>]*\/?>/i);
|
|
949
|
+
if (actualBaseTagMatch) {
|
|
950
|
+
html = html.replace(actualBaseTagMatch[0], `<base href="${mcpUrl}" />`);
|
|
951
|
+
}
|
|
952
|
+
} else {
|
|
953
|
+
const headTagRegex = /<head[^>]*>/i;
|
|
954
|
+
if (headTagRegex.test(html)) {
|
|
955
|
+
html = html.replace(headTagRegex, (match) => `${match}
|
|
956
|
+
<base href="${mcpUrl}" />`);
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
961
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
962
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
963
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${widget.name}/"+filename }</script>`);
|
|
943
964
|
} catch (error) {
|
|
944
965
|
console.error(`Failed to read html template for widget ${widget.name}`, error);
|
|
945
966
|
}
|
|
946
967
|
this.uiResource({
|
|
947
968
|
name: widget.name,
|
|
948
|
-
title: widget.name,
|
|
969
|
+
title: widgetMetadata.title || widget.name,
|
|
949
970
|
description,
|
|
950
971
|
type,
|
|
951
972
|
props,
|
|
952
973
|
_meta: {
|
|
953
974
|
"mcp-use/widget": {
|
|
954
975
|
name: widget.name,
|
|
976
|
+
title: widgetMetadata.title || widget.name,
|
|
955
977
|
description,
|
|
956
978
|
type,
|
|
957
979
|
props,
|
|
958
980
|
html,
|
|
959
981
|
dev: true
|
|
960
|
-
}
|
|
982
|
+
},
|
|
983
|
+
...widgetMetadata._meta || {}
|
|
961
984
|
},
|
|
962
985
|
htmlTemplate: html,
|
|
963
986
|
appsSdkMetadata: {
|
|
@@ -967,10 +990,18 @@ if (container && Component) {
|
|
|
967
990
|
"openai/widgetAccessible": true,
|
|
968
991
|
"openai/resultCanProduceWidget": true,
|
|
969
992
|
"openai/widgetCSP": {
|
|
970
|
-
connect_domains: [
|
|
971
|
-
|
|
993
|
+
connect_domains: [
|
|
994
|
+
...widgetMetadata.appsSdkMetadata?.connect_domains || []
|
|
995
|
+
],
|
|
996
|
+
resource_domains: [
|
|
997
|
+
"https://*.oaistatic.com",
|
|
998
|
+
"https://*.oaiusercontent.com",
|
|
999
|
+
// always also add the base url of the server
|
|
1000
|
+
...this.serverBaseUrl ? [this.serverBaseUrl] : []
|
|
1001
|
+
]
|
|
972
1002
|
}
|
|
973
|
-
}
|
|
1003
|
+
},
|
|
1004
|
+
...widgetMetadata.appsSdkMetadata || {}
|
|
974
1005
|
});
|
|
975
1006
|
}
|
|
976
1007
|
}
|
|
@@ -1011,6 +1042,27 @@ if (container && Component) {
|
|
|
1011
1042
|
let html = "";
|
|
1012
1043
|
try {
|
|
1013
1044
|
html = (0, import_node_fs2.readFileSync)(indexPath, "utf8");
|
|
1045
|
+
const mcpUrl = process.env.MCP_URL || "/";
|
|
1046
|
+
if (mcpUrl && html) {
|
|
1047
|
+
const htmlWithoutComments = html.replace(/<!--[\s\S]*?-->/g, "");
|
|
1048
|
+
const baseTagRegex = /<base\s+[^>]*\/?>/i;
|
|
1049
|
+
if (baseTagRegex.test(htmlWithoutComments)) {
|
|
1050
|
+
const actualBaseTagMatch = html.match(/<base\s+[^>]*\/?>/i);
|
|
1051
|
+
if (actualBaseTagMatch) {
|
|
1052
|
+
html = html.replace(actualBaseTagMatch[0], `<base href="${mcpUrl}" />`);
|
|
1053
|
+
}
|
|
1054
|
+
} else {
|
|
1055
|
+
const headTagRegex = /<head[^>]*>/i;
|
|
1056
|
+
if (headTagRegex.test(html)) {
|
|
1057
|
+
html = html.replace(headTagRegex, (match) => `${match}
|
|
1058
|
+
<base href="${mcpUrl}" />`);
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1062
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1063
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
1064
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${widgetName}/"+filename }</script>`);
|
|
1065
|
+
}
|
|
1014
1066
|
} catch (error) {
|
|
1015
1067
|
console.error(`[WIDGET] Failed to read ${widgetName}/index.html:`, error);
|
|
1016
1068
|
continue;
|
|
@@ -1032,7 +1084,7 @@ if (container && Component) {
|
|
|
1032
1084
|
}
|
|
1033
1085
|
this.uiResource({
|
|
1034
1086
|
name: widgetName,
|
|
1035
|
-
title: widgetName,
|
|
1087
|
+
title: metadata.title || widgetName,
|
|
1036
1088
|
description,
|
|
1037
1089
|
type: "appsSdk",
|
|
1038
1090
|
props,
|
|
@@ -1044,7 +1096,8 @@ if (container && Component) {
|
|
|
1044
1096
|
props,
|
|
1045
1097
|
html,
|
|
1046
1098
|
dev: false
|
|
1047
|
-
}
|
|
1099
|
+
},
|
|
1100
|
+
...metadata._meta || {}
|
|
1048
1101
|
},
|
|
1049
1102
|
htmlTemplate: html,
|
|
1050
1103
|
appsSdkMetadata: {
|
|
@@ -1053,14 +1106,17 @@ if (container && Component) {
|
|
|
1053
1106
|
"openai/toolInvocation/invoked": `${widgetName} ready`,
|
|
1054
1107
|
"openai/widgetAccessible": true,
|
|
1055
1108
|
"openai/resultCanProduceWidget": true,
|
|
1109
|
+
...metadata.appsSdkMetadata || {},
|
|
1056
1110
|
"openai/widgetCSP": {
|
|
1057
|
-
connect_domains: [
|
|
1111
|
+
connect_domains: [
|
|
1112
|
+
...metadata.appsSdkMetadata?.connect_domains || []
|
|
1113
|
+
],
|
|
1058
1114
|
resource_domains: [
|
|
1059
1115
|
"https://*.oaistatic.com",
|
|
1060
|
-
"https://*.unsplash.com",
|
|
1061
1116
|
"https://*.oaiusercontent.com",
|
|
1062
1117
|
// always also add the base url of the server
|
|
1063
|
-
...this.serverBaseUrl ? [this.serverBaseUrl] : []
|
|
1118
|
+
...this.serverBaseUrl ? [this.serverBaseUrl] : [],
|
|
1119
|
+
...metadata.appsSdkMetadata?.resource_domains || []
|
|
1064
1120
|
]
|
|
1065
1121
|
}
|
|
1066
1122
|
}
|
|
@@ -1249,7 +1305,12 @@ if (container && Component) {
|
|
|
1249
1305
|
});
|
|
1250
1306
|
this.app.get("/mcp-use/widgets/:widget", (req, res, next) => {
|
|
1251
1307
|
const filePath = (0, import_node_path.join)(process.cwd(), "dist", "resources", "widgets", req.params.widget, "index.html");
|
|
1252
|
-
|
|
1308
|
+
let html = (0, import_node_fs2.readFileSync)(filePath, "utf8");
|
|
1309
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1310
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1311
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
1312
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${req.params.widget}/"+filename }</script>`);
|
|
1313
|
+
res.send(html);
|
|
1253
1314
|
});
|
|
1254
1315
|
}
|
|
1255
1316
|
/**
|
package/dist/src/server/index.js
CHANGED
|
@@ -901,25 +901,48 @@ if (container && Component) {
|
|
|
901
901
|
}
|
|
902
902
|
let html = "";
|
|
903
903
|
try {
|
|
904
|
-
html =
|
|
904
|
+
html = readFileSync(join(tempDir, widget.name, "index.html"), "utf8");
|
|
905
|
+
const mcpUrl = process.env.MCP_URL || "/";
|
|
906
|
+
if (mcpUrl && html) {
|
|
907
|
+
const htmlWithoutComments = html.replace(/<!--[\s\S]*?-->/g, "");
|
|
908
|
+
const baseTagRegex = /<base\s+[^>]*\/?>/i;
|
|
909
|
+
if (baseTagRegex.test(htmlWithoutComments)) {
|
|
910
|
+
const actualBaseTagMatch = html.match(/<base\s+[^>]*\/?>/i);
|
|
911
|
+
if (actualBaseTagMatch) {
|
|
912
|
+
html = html.replace(actualBaseTagMatch[0], `<base href="${mcpUrl}" />`);
|
|
913
|
+
}
|
|
914
|
+
} else {
|
|
915
|
+
const headTagRegex = /<head[^>]*>/i;
|
|
916
|
+
if (headTagRegex.test(html)) {
|
|
917
|
+
html = html.replace(headTagRegex, (match) => `${match}
|
|
918
|
+
<base href="${mcpUrl}" />`);
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
923
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
924
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
925
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${widget.name}/"+filename }</script>`);
|
|
905
926
|
} catch (error) {
|
|
906
927
|
console.error(`Failed to read html template for widget ${widget.name}`, error);
|
|
907
928
|
}
|
|
908
929
|
this.uiResource({
|
|
909
930
|
name: widget.name,
|
|
910
|
-
title: widget.name,
|
|
931
|
+
title: widgetMetadata.title || widget.name,
|
|
911
932
|
description,
|
|
912
933
|
type,
|
|
913
934
|
props,
|
|
914
935
|
_meta: {
|
|
915
936
|
"mcp-use/widget": {
|
|
916
937
|
name: widget.name,
|
|
938
|
+
title: widgetMetadata.title || widget.name,
|
|
917
939
|
description,
|
|
918
940
|
type,
|
|
919
941
|
props,
|
|
920
942
|
html,
|
|
921
943
|
dev: true
|
|
922
|
-
}
|
|
944
|
+
},
|
|
945
|
+
...widgetMetadata._meta || {}
|
|
923
946
|
},
|
|
924
947
|
htmlTemplate: html,
|
|
925
948
|
appsSdkMetadata: {
|
|
@@ -929,10 +952,18 @@ if (container && Component) {
|
|
|
929
952
|
"openai/widgetAccessible": true,
|
|
930
953
|
"openai/resultCanProduceWidget": true,
|
|
931
954
|
"openai/widgetCSP": {
|
|
932
|
-
connect_domains: [
|
|
933
|
-
|
|
955
|
+
connect_domains: [
|
|
956
|
+
...widgetMetadata.appsSdkMetadata?.connect_domains || []
|
|
957
|
+
],
|
|
958
|
+
resource_domains: [
|
|
959
|
+
"https://*.oaistatic.com",
|
|
960
|
+
"https://*.oaiusercontent.com",
|
|
961
|
+
// always also add the base url of the server
|
|
962
|
+
...this.serverBaseUrl ? [this.serverBaseUrl] : []
|
|
963
|
+
]
|
|
934
964
|
}
|
|
935
|
-
}
|
|
965
|
+
},
|
|
966
|
+
...widgetMetadata.appsSdkMetadata || {}
|
|
936
967
|
});
|
|
937
968
|
}
|
|
938
969
|
}
|
|
@@ -973,6 +1004,27 @@ if (container && Component) {
|
|
|
973
1004
|
let html = "";
|
|
974
1005
|
try {
|
|
975
1006
|
html = readFileSync(indexPath, "utf8");
|
|
1007
|
+
const mcpUrl = process.env.MCP_URL || "/";
|
|
1008
|
+
if (mcpUrl && html) {
|
|
1009
|
+
const htmlWithoutComments = html.replace(/<!--[\s\S]*?-->/g, "");
|
|
1010
|
+
const baseTagRegex = /<base\s+[^>]*\/?>/i;
|
|
1011
|
+
if (baseTagRegex.test(htmlWithoutComments)) {
|
|
1012
|
+
const actualBaseTagMatch = html.match(/<base\s+[^>]*\/?>/i);
|
|
1013
|
+
if (actualBaseTagMatch) {
|
|
1014
|
+
html = html.replace(actualBaseTagMatch[0], `<base href="${mcpUrl}" />`);
|
|
1015
|
+
}
|
|
1016
|
+
} else {
|
|
1017
|
+
const headTagRegex = /<head[^>]*>/i;
|
|
1018
|
+
if (headTagRegex.test(html)) {
|
|
1019
|
+
html = html.replace(headTagRegex, (match) => `${match}
|
|
1020
|
+
<base href="${mcpUrl}" />`);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1024
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1025
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
1026
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${widgetName}/"+filename }</script>`);
|
|
1027
|
+
}
|
|
976
1028
|
} catch (error) {
|
|
977
1029
|
console.error(`[WIDGET] Failed to read ${widgetName}/index.html:`, error);
|
|
978
1030
|
continue;
|
|
@@ -994,7 +1046,7 @@ if (container && Component) {
|
|
|
994
1046
|
}
|
|
995
1047
|
this.uiResource({
|
|
996
1048
|
name: widgetName,
|
|
997
|
-
title: widgetName,
|
|
1049
|
+
title: metadata.title || widgetName,
|
|
998
1050
|
description,
|
|
999
1051
|
type: "appsSdk",
|
|
1000
1052
|
props,
|
|
@@ -1006,7 +1058,8 @@ if (container && Component) {
|
|
|
1006
1058
|
props,
|
|
1007
1059
|
html,
|
|
1008
1060
|
dev: false
|
|
1009
|
-
}
|
|
1061
|
+
},
|
|
1062
|
+
...metadata._meta || {}
|
|
1010
1063
|
},
|
|
1011
1064
|
htmlTemplate: html,
|
|
1012
1065
|
appsSdkMetadata: {
|
|
@@ -1015,14 +1068,17 @@ if (container && Component) {
|
|
|
1015
1068
|
"openai/toolInvocation/invoked": `${widgetName} ready`,
|
|
1016
1069
|
"openai/widgetAccessible": true,
|
|
1017
1070
|
"openai/resultCanProduceWidget": true,
|
|
1071
|
+
...metadata.appsSdkMetadata || {},
|
|
1018
1072
|
"openai/widgetCSP": {
|
|
1019
|
-
connect_domains: [
|
|
1073
|
+
connect_domains: [
|
|
1074
|
+
...metadata.appsSdkMetadata?.connect_domains || []
|
|
1075
|
+
],
|
|
1020
1076
|
resource_domains: [
|
|
1021
1077
|
"https://*.oaistatic.com",
|
|
1022
|
-
"https://*.unsplash.com",
|
|
1023
1078
|
"https://*.oaiusercontent.com",
|
|
1024
1079
|
// always also add the base url of the server
|
|
1025
|
-
...this.serverBaseUrl ? [this.serverBaseUrl] : []
|
|
1080
|
+
...this.serverBaseUrl ? [this.serverBaseUrl] : [],
|
|
1081
|
+
...metadata.appsSdkMetadata?.resource_domains || []
|
|
1026
1082
|
]
|
|
1027
1083
|
}
|
|
1028
1084
|
}
|
|
@@ -1211,7 +1267,12 @@ if (container && Component) {
|
|
|
1211
1267
|
});
|
|
1212
1268
|
this.app.get("/mcp-use/widgets/:widget", (req, res, next) => {
|
|
1213
1269
|
const filePath = join(process.cwd(), "dist", "resources", "widgets", req.params.widget, "index.html");
|
|
1214
|
-
|
|
1270
|
+
let html = readFileSync(filePath, "utf8");
|
|
1271
|
+
html = html.replace(/src="\/mcp-use\/widgets\/([^"]+)"/g, `src="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1272
|
+
html = html.replace(/href="\/mcp-use\/widgets\/([^"]+)"/g, `href="${this.serverBaseUrl}/mcp-use/widgets/$1"`);
|
|
1273
|
+
html = html.replace(/<head[^>]*>/i, `<head>
|
|
1274
|
+
<script>window.__getFile = (filename) => { return "${this.serverBaseUrl}/mcp-use/widgets/${req.params.widget}/"+filename }</script>`);
|
|
1275
|
+
res.send(html);
|
|
1215
1276
|
});
|
|
1216
1277
|
}
|
|
1217
1278
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,oBAAoB,EAIrB,MAAM,kBAAkB,CAAA;AAGzB,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAc/C,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAQ;IAE9B;;;;;;;;;OASG;gBACS,MAAM,EAAE,YAAY;IAmChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAmBtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,gBAAgB,CAAC,0BAA0B,EAAE,0BAA0B,GAAG,IAAI;IA4C9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAmB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAiBhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAoJlD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IAsBtB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;;;;;;;OAUG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjB;;;;;;;;;;;;OAYG;YACW,eAAe;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
|