mcp-use 1.5.1-canary.2 → 1.5.1-canary.3
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/.tsbuildinfo +1 -1
- package/dist/{chunk-QRABML5H.js → chunk-SJEHVCPM.js} +7 -3
- package/dist/index.cjs +7 -3
- package/dist/index.js +1 -1
- package/dist/src/react/Image.d.ts.map +1 -1
- package/dist/src/react/index.cjs +7 -3
- package/dist/src/react/index.js +1 -1
- package/dist/src/react/types.d.ts +23 -1
- package/dist/src/react/types.d.ts.map +1 -1
- package/dist/src/react/useMcp.d.ts.map +1 -1
- package/dist/src/react/widget-types.d.ts +1 -0
- package/dist/src/react/widget-types.d.ts.map +1 -1
- package/dist/src/server/index.cjs +201 -16
- package/dist/src/server/index.d.ts +1 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +201 -16
- package/dist/src/server/mcp-server.d.ts +81 -0
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/types/tool.d.ts +26 -2
- package/dist/src/server/types/tool.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -311,7 +311,7 @@ function useMcp(options) {
|
|
|
311
311
|
sseReadTimeout
|
|
312
312
|
]);
|
|
313
313
|
const callTool = useCallback(
|
|
314
|
-
async (name, args) => {
|
|
314
|
+
async (name, args, options2) => {
|
|
315
315
|
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
316
316
|
throw new Error(
|
|
317
317
|
`MCP client is not ready (current state: ${state}). Cannot call tool "${name}".`
|
|
@@ -324,7 +324,11 @@ function useMcp(options) {
|
|
|
324
324
|
if (!session) {
|
|
325
325
|
throw new Error("No active session found");
|
|
326
326
|
}
|
|
327
|
-
const result = await session.connector.callTool(
|
|
327
|
+
const result = await session.connector.callTool(
|
|
328
|
+
name,
|
|
329
|
+
args || {},
|
|
330
|
+
options2
|
|
331
|
+
);
|
|
328
332
|
addLog("info", `Tool "${name}" call successful:`, result);
|
|
329
333
|
return result;
|
|
330
334
|
} catch (err) {
|
|
@@ -658,7 +662,7 @@ var ErrorBoundary = class extends React.Component {
|
|
|
658
662
|
// src/react/Image.tsx
|
|
659
663
|
import React2 from "react";
|
|
660
664
|
var Image = /* @__PURE__ */ __name(({ src, ...props }) => {
|
|
661
|
-
const publicUrl = typeof window !== "undefined"
|
|
665
|
+
const publicUrl = typeof window !== "undefined" ? window.__mcpPublicAssetsUrl || window.__mcpPublicUrl || "" : "";
|
|
662
666
|
const getFinalSrc = /* @__PURE__ */ __name((source) => {
|
|
663
667
|
if (!source) return source;
|
|
664
668
|
if (source.startsWith("http://") || source.startsWith("https://") || source.startsWith("data:")) {
|
package/dist/index.cjs
CHANGED
|
@@ -7530,7 +7530,7 @@ function useMcp(options) {
|
|
|
7530
7530
|
sseReadTimeout
|
|
7531
7531
|
]);
|
|
7532
7532
|
const callTool = (0, import_react.useCallback)(
|
|
7533
|
-
async (name, args) => {
|
|
7533
|
+
async (name, args, options2) => {
|
|
7534
7534
|
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
7535
7535
|
throw new Error(
|
|
7536
7536
|
`MCP client is not ready (current state: ${state}). Cannot call tool "${name}".`
|
|
@@ -7543,7 +7543,11 @@ function useMcp(options) {
|
|
|
7543
7543
|
if (!session) {
|
|
7544
7544
|
throw new Error("No active session found");
|
|
7545
7545
|
}
|
|
7546
|
-
const result = await session.connector.callTool(
|
|
7546
|
+
const result = await session.connector.callTool(
|
|
7547
|
+
name,
|
|
7548
|
+
args || {},
|
|
7549
|
+
options2
|
|
7550
|
+
);
|
|
7547
7551
|
addLog("info", `Tool "${name}" call successful:`, result);
|
|
7548
7552
|
return result;
|
|
7549
7553
|
} catch (err) {
|
|
@@ -7877,7 +7881,7 @@ var ErrorBoundary = class extends import_react2.default.Component {
|
|
|
7877
7881
|
// src/react/Image.tsx
|
|
7878
7882
|
var import_react3 = __toESM(require("react"), 1);
|
|
7879
7883
|
var Image = /* @__PURE__ */ __name(({ src, ...props }) => {
|
|
7880
|
-
const publicUrl = typeof window !== "undefined"
|
|
7884
|
+
const publicUrl = typeof window !== "undefined" ? window.__mcpPublicAssetsUrl || window.__mcpPublicUrl || "" : "";
|
|
7881
7885
|
const getFinalSrc = /* @__PURE__ */ __name((source) => {
|
|
7882
7886
|
if (!source) return source;
|
|
7883
7887
|
if (source.startsWith("http://") || source.startsWith("https://") || source.startsWith("data:")) {
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/react/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAC1B,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/react/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAC1B,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAwCrD,CAAC"}
|
package/dist/src/react/index.cjs
CHANGED
|
@@ -2187,7 +2187,7 @@ function useMcp(options) {
|
|
|
2187
2187
|
sseReadTimeout
|
|
2188
2188
|
]);
|
|
2189
2189
|
const callTool = (0, import_react.useCallback)(
|
|
2190
|
-
async (name, args) => {
|
|
2190
|
+
async (name, args, options2) => {
|
|
2191
2191
|
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
2192
2192
|
throw new Error(
|
|
2193
2193
|
`MCP client is not ready (current state: ${state}). Cannot call tool "${name}".`
|
|
@@ -2200,7 +2200,11 @@ function useMcp(options) {
|
|
|
2200
2200
|
if (!session) {
|
|
2201
2201
|
throw new Error("No active session found");
|
|
2202
2202
|
}
|
|
2203
|
-
const result = await session.connector.callTool(
|
|
2203
|
+
const result = await session.connector.callTool(
|
|
2204
|
+
name,
|
|
2205
|
+
args || {},
|
|
2206
|
+
options2
|
|
2207
|
+
);
|
|
2204
2208
|
addLog("info", `Tool "${name}" call successful:`, result);
|
|
2205
2209
|
return result;
|
|
2206
2210
|
} catch (err) {
|
|
@@ -2663,7 +2667,7 @@ var ErrorBoundary = class extends import_react2.default.Component {
|
|
|
2663
2667
|
// src/react/Image.tsx
|
|
2664
2668
|
var import_react3 = __toESM(require("react"), 1);
|
|
2665
2669
|
var Image = /* @__PURE__ */ __name(({ src, ...props }) => {
|
|
2666
|
-
const publicUrl = typeof window !== "undefined"
|
|
2670
|
+
const publicUrl = typeof window !== "undefined" ? window.__mcpPublicAssetsUrl || window.__mcpPublicUrl || "" : "";
|
|
2667
2671
|
const getFinalSrc = /* @__PURE__ */ __name((source) => {
|
|
2668
2672
|
if (!source) return source;
|
|
2669
2673
|
if (source.startsWith("http://") || source.startsWith("https://") || source.startsWith("data:")) {
|
package/dist/src/react/index.js
CHANGED
|
@@ -97,10 +97,32 @@ export type UseMcpResult = {
|
|
|
97
97
|
* Function to call a tool on the MCP server.
|
|
98
98
|
* @param name The name of the tool to call.
|
|
99
99
|
* @param args Optional arguments for the tool.
|
|
100
|
+
* @param options Optional request options including timeout configuration.
|
|
100
101
|
* @returns A promise that resolves with the tool's result.
|
|
101
102
|
* @throws If the client is not in the 'ready' state or the call fails.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* // Simple tool call
|
|
107
|
+
* const result = await mcp.callTool('my-tool', { arg: 'value' })
|
|
108
|
+
*
|
|
109
|
+
* // Tool call with extended timeout (e.g., for tools that trigger sampling)
|
|
110
|
+
* const result = await mcp.callTool('analyze-sentiment', { text: 'Hello' }, {
|
|
111
|
+
* timeout: 300000, // 5 minutes
|
|
112
|
+
* resetTimeoutOnProgress: true // Reset timeout when progress notifications are received
|
|
113
|
+
* })
|
|
114
|
+
* ```
|
|
102
115
|
*/
|
|
103
|
-
callTool: (name: string, args?: Record<string, unknown
|
|
116
|
+
callTool: (name: string, args?: Record<string, unknown>, options?: {
|
|
117
|
+
/** Timeout in milliseconds for this tool call (default: 60000 / 60 seconds) */
|
|
118
|
+
timeout?: number;
|
|
119
|
+
/** Maximum total timeout in milliseconds, even with progress resets */
|
|
120
|
+
maxTotalTimeout?: number;
|
|
121
|
+
/** Reset the timeout when progress notifications are received (default: false) */
|
|
122
|
+
resetTimeoutOnProgress?: boolean;
|
|
123
|
+
/** AbortSignal to cancel the request */
|
|
124
|
+
signal?: AbortSignal;
|
|
125
|
+
}) => Promise<any>;
|
|
104
126
|
/**
|
|
105
127
|
* Function to list resources from the MCP server.
|
|
106
128
|
* @returns A promise that resolves when resources are refreshed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/react/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/react/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMcp.d.ts","sourceRoot":"","sources":["../../../src/react/useMcp.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"useMcp.d.ts","sourceRoot":"","sources":["../../../src/react/useMcp.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAg4B3D"}
|
|
@@ -81,6 +81,7 @@ declare global {
|
|
|
81
81
|
openai?: API<any> & OpenAiGlobals<any, any, any, any>;
|
|
82
82
|
__getFile?: (filename: string) => string;
|
|
83
83
|
__mcpPublicUrl?: string;
|
|
84
|
+
__mcpPublicAssetsUrl?: string;
|
|
84
85
|
}
|
|
85
86
|
interface WindowEventMap {
|
|
86
87
|
[SET_GLOBALS_EVENT_TYPE]: SetGlobalsEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -630,6 +630,22 @@ var McpServer = class {
|
|
|
630
630
|
}
|
|
631
631
|
return `http://${this.serverHost}:${this.serverPort}`;
|
|
632
632
|
}
|
|
633
|
+
/**
|
|
634
|
+
* Gets additional CSP URLs from environment variable
|
|
635
|
+
* Supports comma-separated list or single URL
|
|
636
|
+
* @returns Array of URLs to add to CSP resource_domains
|
|
637
|
+
*/
|
|
638
|
+
getCSPUrls() {
|
|
639
|
+
const cspUrlsEnv = getEnv2("CSP_URLS");
|
|
640
|
+
if (!cspUrlsEnv) {
|
|
641
|
+
console.log("[CSP] No CSP_URLS environment variable found");
|
|
642
|
+
return [];
|
|
643
|
+
}
|
|
644
|
+
console.log("[CSP] Found CSP_URLS environment variable:", cspUrlsEnv);
|
|
645
|
+
const urls = cspUrlsEnv.split(",").map((url) => url.trim()).filter((url) => url.length > 0);
|
|
646
|
+
console.log("[CSP] Parsed CSP URLs:", urls);
|
|
647
|
+
return urls;
|
|
648
|
+
}
|
|
633
649
|
/**
|
|
634
650
|
* Define a static resource that can be accessed by clients
|
|
635
651
|
*
|
|
@@ -801,11 +817,6 @@ var McpServer = class {
|
|
|
801
817
|
*/
|
|
802
818
|
tool(toolDefinition) {
|
|
803
819
|
const inputSchema = this.createParamsSchema(toolDefinition.inputs || []);
|
|
804
|
-
const context = {
|
|
805
|
-
sample: /* @__PURE__ */ __name(async (params, options) => {
|
|
806
|
-
return await this.createMessage(params, options);
|
|
807
|
-
}, "sample")
|
|
808
|
-
};
|
|
809
820
|
this.server.registerTool(
|
|
810
821
|
toolDefinition.name,
|
|
811
822
|
{
|
|
@@ -815,7 +826,98 @@ var McpServer = class {
|
|
|
815
826
|
annotations: toolDefinition.annotations,
|
|
816
827
|
_meta: toolDefinition._meta
|
|
817
828
|
},
|
|
818
|
-
async (params) => {
|
|
829
|
+
async (params, extra) => {
|
|
830
|
+
const progressToken = extra?._meta?.progressToken;
|
|
831
|
+
const context = {
|
|
832
|
+
/**
|
|
833
|
+
* Request sampling from the client's LLM with automatic progress notifications.
|
|
834
|
+
*
|
|
835
|
+
* Progress notifications are sent every 5 seconds (configurable) while waiting
|
|
836
|
+
* for the sampling response. This prevents client-side timeouts when
|
|
837
|
+
* resetTimeoutOnProgress is enabled.
|
|
838
|
+
*
|
|
839
|
+
* @param params - Sampling parameters (messages, model preferences, etc.)
|
|
840
|
+
* @param options - Optional configuration
|
|
841
|
+
* @param options.timeout - Timeout in milliseconds (default: no timeout / Infinity)
|
|
842
|
+
* @param options.progressIntervalMs - Interval between progress notifications (default: 5000ms)
|
|
843
|
+
* @param options.onProgress - Optional callback called each time progress is reported
|
|
844
|
+
* @returns The sampling result from the client's LLM
|
|
845
|
+
*/
|
|
846
|
+
sample: /* @__PURE__ */ __name(async (sampleParams, options) => {
|
|
847
|
+
const {
|
|
848
|
+
timeout,
|
|
849
|
+
progressIntervalMs = 5e3,
|
|
850
|
+
onProgress
|
|
851
|
+
} = options ?? {};
|
|
852
|
+
let progressCount = 0;
|
|
853
|
+
let completed = false;
|
|
854
|
+
let progressInterval = null;
|
|
855
|
+
if (progressToken && extra?.sendNotification) {
|
|
856
|
+
progressInterval = setInterval(async () => {
|
|
857
|
+
if (completed) return;
|
|
858
|
+
progressCount++;
|
|
859
|
+
const progressData = {
|
|
860
|
+
progress: progressCount,
|
|
861
|
+
total: void 0,
|
|
862
|
+
message: `Waiting for LLM response... (${progressCount * Math.round(progressIntervalMs / 1e3)}s elapsed)`
|
|
863
|
+
};
|
|
864
|
+
if (onProgress) {
|
|
865
|
+
try {
|
|
866
|
+
onProgress(progressData);
|
|
867
|
+
} catch {
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
try {
|
|
871
|
+
await extra.sendNotification({
|
|
872
|
+
method: "notifications/progress",
|
|
873
|
+
params: {
|
|
874
|
+
progressToken,
|
|
875
|
+
progress: progressData.progress,
|
|
876
|
+
total: progressData.total,
|
|
877
|
+
message: progressData.message
|
|
878
|
+
}
|
|
879
|
+
});
|
|
880
|
+
} catch {
|
|
881
|
+
}
|
|
882
|
+
}, progressIntervalMs);
|
|
883
|
+
}
|
|
884
|
+
try {
|
|
885
|
+
const samplePromise = this.createMessage(sampleParams);
|
|
886
|
+
if (timeout && timeout !== Infinity) {
|
|
887
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
888
|
+
setTimeout(
|
|
889
|
+
() => reject(
|
|
890
|
+
new Error(`Sampling timed out after ${timeout}ms`)
|
|
891
|
+
),
|
|
892
|
+
timeout
|
|
893
|
+
);
|
|
894
|
+
});
|
|
895
|
+
return await Promise.race([samplePromise, timeoutPromise]);
|
|
896
|
+
}
|
|
897
|
+
return await samplePromise;
|
|
898
|
+
} finally {
|
|
899
|
+
completed = true;
|
|
900
|
+
if (progressInterval) {
|
|
901
|
+
clearInterval(progressInterval);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}, "sample"),
|
|
905
|
+
/**
|
|
906
|
+
* Send a progress notification to the client.
|
|
907
|
+
* Only works if the client requested progress updates for this tool call.
|
|
908
|
+
*/
|
|
909
|
+
reportProgress: progressToken && extra?.sendNotification ? async (progress, total, message) => {
|
|
910
|
+
await extra.sendNotification({
|
|
911
|
+
method: "notifications/progress",
|
|
912
|
+
params: {
|
|
913
|
+
progressToken,
|
|
914
|
+
progress,
|
|
915
|
+
total,
|
|
916
|
+
message
|
|
917
|
+
}
|
|
918
|
+
});
|
|
919
|
+
} : void 0
|
|
920
|
+
};
|
|
819
921
|
if (toolDefinition.cb.length >= 2) {
|
|
820
922
|
return await toolDefinition.cb(params, context);
|
|
821
923
|
}
|
|
@@ -1677,6 +1779,8 @@ if (container && Component) {
|
|
|
1677
1779
|
"https://*.oaiusercontent.com",
|
|
1678
1780
|
// always also add the base url of the server
|
|
1679
1781
|
...this.getServerBaseUrl() ? [this.getServerBaseUrl()] : [],
|
|
1782
|
+
// add additional CSP URLs from environment variable
|
|
1783
|
+
...this.getCSPUrls(),
|
|
1680
1784
|
...metadata.appsSdkMetadata?.["openai/widgetCSP"]?.resource_domains || []
|
|
1681
1785
|
]
|
|
1682
1786
|
}
|
|
@@ -1854,6 +1958,8 @@ if (container && Component) {
|
|
|
1854
1958
|
"https://*.openai.com",
|
|
1855
1959
|
// always also add the base url of the server
|
|
1856
1960
|
...this.getServerBaseUrl() ? [this.getServerBaseUrl()] : [],
|
|
1961
|
+
// add additional CSP URLs from environment variable
|
|
1962
|
+
...this.getCSPUrls(),
|
|
1857
1963
|
...metadata.appsSdkMetadata?.["openai/widgetCSP"]?.resource_domains || []
|
|
1858
1964
|
]
|
|
1859
1965
|
}
|
|
@@ -1906,14 +2012,7 @@ if (container && Component) {
|
|
|
1906
2012
|
if (this.mcpMounted) return;
|
|
1907
2013
|
const { StreamableHTTPServerTransport } = await import("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
1908
2014
|
const idleTimeoutMs = this.config.sessionIdleTimeoutMs ?? 3e5;
|
|
1909
|
-
const
|
|
1910
|
-
if (closeOldSessionId && this.sessions.has(closeOldSessionId)) {
|
|
1911
|
-
try {
|
|
1912
|
-
this.sessions.get(closeOldSessionId).transport.close();
|
|
1913
|
-
} catch (error) {
|
|
1914
|
-
}
|
|
1915
|
-
this.sessions.delete(closeOldSessionId);
|
|
1916
|
-
}
|
|
2015
|
+
const getTransportConfig = /* @__PURE__ */ __name(() => {
|
|
1917
2016
|
const isProduction = this.isProductionMode();
|
|
1918
2017
|
let allowedOrigins = this.config.allowedOrigins;
|
|
1919
2018
|
let enableDnsRebindingProtection = false;
|
|
@@ -1925,6 +2024,17 @@ if (container && Component) {
|
|
|
1925
2024
|
allowedOrigins = void 0;
|
|
1926
2025
|
enableDnsRebindingProtection = false;
|
|
1927
2026
|
}
|
|
2027
|
+
return { allowedOrigins, enableDnsRebindingProtection };
|
|
2028
|
+
}, "getTransportConfig");
|
|
2029
|
+
const createNewTransport = /* @__PURE__ */ __name(async (closeOldSessionId) => {
|
|
2030
|
+
if (closeOldSessionId && this.sessions.has(closeOldSessionId)) {
|
|
2031
|
+
try {
|
|
2032
|
+
this.sessions.get(closeOldSessionId).transport.close();
|
|
2033
|
+
} catch (error) {
|
|
2034
|
+
}
|
|
2035
|
+
this.sessions.delete(closeOldSessionId);
|
|
2036
|
+
}
|
|
2037
|
+
const { allowedOrigins, enableDnsRebindingProtection } = getTransportConfig();
|
|
1928
2038
|
const transport = new StreamableHTTPServerTransport({
|
|
1929
2039
|
sessionIdGenerator: /* @__PURE__ */ __name(() => generateUUID(), "sessionIdGenerator"),
|
|
1930
2040
|
enableJsonResponse: true,
|
|
@@ -1947,6 +2057,81 @@ if (container && Component) {
|
|
|
1947
2057
|
await this.server.connect(transport);
|
|
1948
2058
|
return transport;
|
|
1949
2059
|
}, "createNewTransport");
|
|
2060
|
+
const createAndAutoInitializeTransport = /* @__PURE__ */ __name(async (oldSessionId) => {
|
|
2061
|
+
const { allowedOrigins, enableDnsRebindingProtection } = getTransportConfig();
|
|
2062
|
+
const transport = new StreamableHTTPServerTransport({
|
|
2063
|
+
sessionIdGenerator: /* @__PURE__ */ __name(() => oldSessionId, "sessionIdGenerator"),
|
|
2064
|
+
// Reuse old session ID!
|
|
2065
|
+
enableJsonResponse: true,
|
|
2066
|
+
allowedOrigins,
|
|
2067
|
+
enableDnsRebindingProtection,
|
|
2068
|
+
// We'll manually store the session, so don't rely on onsessioninitialized
|
|
2069
|
+
onsessionclosed: /* @__PURE__ */ __name((id) => {
|
|
2070
|
+
if (id) {
|
|
2071
|
+
this.sessions.delete(id);
|
|
2072
|
+
}
|
|
2073
|
+
}, "onsessionclosed")
|
|
2074
|
+
});
|
|
2075
|
+
await this.server.connect(transport);
|
|
2076
|
+
this.sessions.set(oldSessionId, {
|
|
2077
|
+
transport,
|
|
2078
|
+
lastAccessedAt: Date.now()
|
|
2079
|
+
});
|
|
2080
|
+
const initBody = {
|
|
2081
|
+
jsonrpc: "2.0",
|
|
2082
|
+
method: "initialize",
|
|
2083
|
+
params: {
|
|
2084
|
+
protocolVersion: "2024-11-05",
|
|
2085
|
+
capabilities: {},
|
|
2086
|
+
clientInfo: { name: "mcp-use-auto-reconnect", version: "1.0.0" }
|
|
2087
|
+
},
|
|
2088
|
+
id: "__auto_init__"
|
|
2089
|
+
};
|
|
2090
|
+
const syntheticHeaders = {
|
|
2091
|
+
"content-type": "application/json",
|
|
2092
|
+
accept: "application/json, text/event-stream"
|
|
2093
|
+
// SDK requires both!
|
|
2094
|
+
};
|
|
2095
|
+
const syntheticReq = {
|
|
2096
|
+
method: "POST",
|
|
2097
|
+
headers: syntheticHeaders,
|
|
2098
|
+
header: /* @__PURE__ */ __name((name) => syntheticHeaders[name.toLowerCase()], "header"),
|
|
2099
|
+
body: initBody
|
|
2100
|
+
};
|
|
2101
|
+
const syntheticRes = {
|
|
2102
|
+
statusCode: 200,
|
|
2103
|
+
setHeader: /* @__PURE__ */ __name(() => syntheticRes, "setHeader"),
|
|
2104
|
+
writeHead: /* @__PURE__ */ __name((code) => {
|
|
2105
|
+
syntheticRes.statusCode = code;
|
|
2106
|
+
return syntheticRes;
|
|
2107
|
+
}, "writeHead"),
|
|
2108
|
+
write: /* @__PURE__ */ __name(() => true, "write"),
|
|
2109
|
+
end: /* @__PURE__ */ __name(() => {
|
|
2110
|
+
}, "end"),
|
|
2111
|
+
on: /* @__PURE__ */ __name(() => syntheticRes, "on"),
|
|
2112
|
+
once: /* @__PURE__ */ __name(() => syntheticRes, "once"),
|
|
2113
|
+
removeListener: /* @__PURE__ */ __name(() => syntheticRes, "removeListener")
|
|
2114
|
+
};
|
|
2115
|
+
await new Promise((resolve) => {
|
|
2116
|
+
syntheticRes.end = () => {
|
|
2117
|
+
resolve();
|
|
2118
|
+
};
|
|
2119
|
+
transport.handleRequest(syntheticReq, syntheticRes, initBody);
|
|
2120
|
+
});
|
|
2121
|
+
if (syntheticRes.statusCode !== 200) {
|
|
2122
|
+
console.error(
|
|
2123
|
+
`[MCP] Auto-initialization failed with status ${syntheticRes.statusCode}`
|
|
2124
|
+
);
|
|
2125
|
+
this.sessions.delete(oldSessionId);
|
|
2126
|
+
throw new Error(
|
|
2127
|
+
`Auto-initialization failed: ${syntheticRes.statusCode}`
|
|
2128
|
+
);
|
|
2129
|
+
}
|
|
2130
|
+
console.log(
|
|
2131
|
+
`[MCP] Auto-initialized session ${oldSessionId} for seamless reconnection`
|
|
2132
|
+
);
|
|
2133
|
+
return transport;
|
|
2134
|
+
}, "createAndAutoInitializeTransport");
|
|
1950
2135
|
const getOrCreateTransport = /* @__PURE__ */ __name(async (sessionId, isInit = false) => {
|
|
1951
2136
|
if (isInit) {
|
|
1952
2137
|
return await createNewTransport(sessionId);
|
|
@@ -1960,9 +2145,9 @@ if (container && Component) {
|
|
|
1960
2145
|
const autoCreate = this.config.autoCreateSessionOnInvalidId ?? true;
|
|
1961
2146
|
if (autoCreate) {
|
|
1962
2147
|
console.warn(
|
|
1963
|
-
`[MCP] Session ${sessionId} not found (expired or invalid), auto-creating new session for seamless reconnection`
|
|
2148
|
+
`[MCP] Session ${sessionId} not found (expired or invalid), auto-creating and initializing new session for seamless reconnection`
|
|
1964
2149
|
);
|
|
1965
|
-
return await
|
|
2150
|
+
return await createAndAutoInitializeTransport(sessionId);
|
|
1966
2151
|
} else {
|
|
1967
2152
|
return null;
|
|
1968
2153
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createMCPServer, type McpServerInstance } from "./mcp-server.js";
|
|
1
|
+
export { createMCPServer, type McpServerInstance, type ToolContext, type SampleOptions, } from "./mcp-server.js";
|
|
2
2
|
export * from "./types/index.js";
|
|
3
3
|
export { buildWidgetUrl, createExternalUrlResource, createRawHtmlResource, createRemoteDomResource, createUIResourceFromDefinition, type UrlConfig, } from "./adapters/mcp-ui-adapter.js";
|
|
4
4
|
export { adaptConnectMiddleware, adaptMiddleware, isExpressMiddleware, } from "./connect-adapter.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,SAAS,GACf,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,cAAc,EAEd,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|