mcp-use 1.9.1-canary.1 → 1.10.0-canary.11
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/README.md +9 -6
- package/dist/.tsbuildinfo +1 -1
- package/dist/{chunk-QREDNTLS.js → chunk-5S5DWSKI.js} +1 -1
- package/dist/{chunk-MUZ5WYE3.js → chunk-5UB2K5L6.js} +72 -14
- package/dist/{chunk-33U4IA4N.js → chunk-B5N3LQQU.js} +99 -5
- package/dist/{chunk-3R5PDYIN.js → chunk-J75I2C26.js} +39 -11
- package/dist/{chunk-U5BX3ISQ.js → chunk-KMTBWOVS.js} +22 -408
- package/dist/{chunk-D22NUQTL.js → chunk-LXYUQEEE.js} +235 -12
- package/dist/{chunk-ZQUCGISK.js → chunk-NNQUSDFU.js} +21 -5
- package/dist/chunk-PESKSVLQ.js +1129 -0
- package/dist/index.cjs +1190 -200
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -23
- package/dist/src/adapters/langchain_adapter.d.ts +1 -1
- package/dist/src/adapters/langchain_adapter.d.ts.map +1 -1
- package/dist/src/agents/index.cjs +2263 -1626
- package/dist/src/agents/index.js +4 -4
- package/dist/src/agents/mcp_agent.d.ts +5 -0
- package/dist/src/agents/mcp_agent.d.ts.map +1 -1
- package/dist/src/auth/browser-provider.d.ts +2 -2
- package/dist/src/auth/browser-provider.d.ts.map +1 -1
- package/dist/src/auth/callback.d.ts.map +1 -1
- package/dist/src/auth/index.cjs +39 -11
- package/dist/src/auth/index.js +1 -1
- package/dist/src/auth/types.d.ts +1 -1
- package/dist/src/auth/types.d.ts.map +1 -1
- package/dist/src/browser.cjs +2672 -1754
- package/dist/src/browser.d.ts +5 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +18 -5
- package/dist/src/client/base.d.ts.map +1 -1
- package/dist/src/client/browser.d.ts +6 -0
- package/dist/src/client/browser.d.ts.map +1 -1
- package/dist/src/client/connectors/codeMode.d.ts +1 -1
- package/dist/src/client/connectors/codeMode.d.ts.map +1 -1
- package/dist/src/client/executors/base.d.ts +1 -1
- package/dist/src/client/executors/base.d.ts.map +1 -1
- package/dist/src/client/prompts.cjs +4 -1
- package/dist/src/client/prompts.js +3 -2
- package/dist/src/client.d.ts +7 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/connectors/base.d.ts +56 -6
- package/dist/src/connectors/base.d.ts.map +1 -1
- package/dist/src/connectors/http.d.ts.map +1 -1
- package/dist/src/connectors/stdio.d.ts.map +1 -1
- package/dist/src/connectors/websocket.d.ts +1 -1
- package/dist/src/connectors/websocket.d.ts.map +1 -1
- package/dist/src/oauth-helper.d.ts.map +1 -1
- package/dist/src/react/WidgetControls.d.ts.map +1 -1
- package/dist/src/react/index.cjs +1357 -43
- package/dist/src/react/index.d.ts +4 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/index.js +14 -5
- package/dist/src/react/types.d.ts +1 -1
- package/dist/src/react/types.d.ts.map +1 -1
- package/dist/src/react/useMcp.d.ts.map +1 -1
- package/dist/src/server/endpoints/mount-mcp.d.ts +4 -1
- package/dist/src/server/endpoints/mount-mcp.d.ts.map +1 -1
- package/dist/src/server/index.cjs +1923 -287
- package/dist/src/server/index.d.ts +3 -2
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +488 -245
- package/dist/src/server/mcp-server.d.ts +77 -27
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/oauth/middleware.d.ts.map +1 -1
- package/dist/src/server/oauth/providers/auth0.d.ts +1 -1
- package/dist/src/server/oauth/providers/auth0.d.ts.map +1 -1
- package/dist/src/server/oauth/providers/custom.d.ts +4 -2
- package/dist/src/server/oauth/providers/custom.d.ts.map +1 -1
- package/dist/src/server/oauth/providers/keycloak.d.ts +1 -1
- package/dist/src/server/oauth/providers/keycloak.d.ts.map +1 -1
- package/dist/src/server/oauth/providers/supabase.d.ts +1 -1
- package/dist/src/server/oauth/providers/supabase.d.ts.map +1 -1
- package/dist/src/server/oauth/providers/types.d.ts +9 -5
- package/dist/src/server/oauth/providers/types.d.ts.map +1 -1
- package/dist/src/server/oauth/providers.d.ts +27 -9
- package/dist/src/server/oauth/providers.d.ts.map +1 -1
- package/dist/src/server/oauth/setup.d.ts +5 -4
- package/dist/src/server/oauth/setup.d.ts.map +1 -1
- package/dist/src/server/oauth/utils.d.ts +3 -2
- package/dist/src/server/oauth/utils.d.ts.map +1 -1
- package/dist/src/server/prompts/conversion.d.ts +1 -1
- package/dist/src/server/prompts/conversion.d.ts.map +1 -1
- package/dist/src/server/prompts/index.d.ts +6 -5
- package/dist/src/server/prompts/index.d.ts.map +1 -1
- package/dist/src/server/resources/conversion.d.ts +1 -1
- package/dist/src/server/resources/conversion.d.ts.map +1 -1
- package/dist/src/server/resources/index.d.ts +44 -25
- package/dist/src/server/resources/index.d.ts.map +1 -1
- package/dist/src/server/resources/subscriptions.d.ts +1 -1
- package/dist/src/server/resources/subscriptions.d.ts.map +1 -1
- package/dist/src/server/sessions/session-manager.d.ts +11 -5
- package/dist/src/server/sessions/session-manager.d.ts.map +1 -1
- package/dist/src/server/tools/tool-execution-helpers.d.ts +31 -8
- package/dist/src/server/tools/tool-execution-helpers.d.ts.map +1 -1
- package/dist/src/server/tools/tool-registration.d.ts +21 -7
- package/dist/src/server/tools/tool-registration.d.ts.map +1 -1
- package/dist/src/server/types/common.d.ts +25 -9
- package/dist/src/server/types/common.d.ts.map +1 -1
- package/dist/src/server/types/index.d.ts +3 -3
- package/dist/src/server/types/index.d.ts.map +1 -1
- package/dist/src/server/types/prompt.d.ts +3 -2
- package/dist/src/server/types/prompt.d.ts.map +1 -1
- package/dist/src/server/types/resource.d.ts +60 -10
- package/dist/src/server/types/resource.d.ts.map +1 -1
- package/dist/src/server/types/tool-context.d.ts +116 -1
- package/dist/src/server/types/tool-context.d.ts.map +1 -1
- package/dist/src/server/types/tool.d.ts +43 -2
- package/dist/src/server/types/tool.d.ts.map +1 -1
- package/dist/src/server/types/widget.d.ts +11 -1
- package/dist/src/server/types/widget.d.ts.map +1 -1
- package/dist/src/server/utils/response-helpers.d.ts +17 -29
- package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/index.d.ts +3 -3
- package/dist/src/server/widgets/index.d.ts.map +1 -1
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -1
- package/dist/src/server/widgets/ui-resource-registration.d.ts +13 -25
- package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-helpers.d.ts +11 -6
- package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-types.d.ts +3 -3
- package/dist/src/server/widgets/widget-types.d.ts.map +1 -1
- package/dist/src/session.d.ts +372 -2
- package/dist/src/session.d.ts.map +1 -1
- package/dist/src/task_managers/sse.d.ts +2 -2
- package/dist/src/task_managers/sse.d.ts.map +1 -1
- package/dist/src/task_managers/stdio.d.ts +2 -2
- package/dist/src/task_managers/stdio.d.ts.map +1 -1
- package/dist/src/task_managers/streamable_http.d.ts +2 -2
- package/dist/src/task_managers/streamable_http.d.ts.map +1 -1
- package/dist/src/telemetry/events.d.ts +247 -0
- package/dist/src/telemetry/events.d.ts.map +1 -1
- package/dist/src/telemetry/index.d.ts +4 -4
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/telemetry.d.ts +122 -4
- package/dist/src/telemetry/telemetry.d.ts.map +1 -1
- package/dist/src/telemetry/utils.d.ts +1 -1
- package/dist/src/telemetry/utils.d.ts.map +1 -1
- package/dist/src/version.d.ts +8 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/{tool-execution-helpers-BQJTPWPN.js → tool-execution-helpers-OOVLOJYH.js} +3 -2
- package/dist/tsup.config.d.ts.map +1 -1
- package/package.json +7 -5
- package/dist/chunk-MTHLLDCX.js +0 -97
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BrowserMCPClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LXYUQEEE.js";
|
|
4
4
|
import {
|
|
5
5
|
BrowserOAuthClientProvider,
|
|
6
6
|
sanitizeUrl
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-J75I2C26.js";
|
|
8
|
+
import {
|
|
9
|
+
Tel
|
|
10
|
+
} from "./chunk-PESKSVLQ.js";
|
|
8
11
|
import {
|
|
9
12
|
__name
|
|
10
13
|
} from "./chunk-3GQAWCBQ.js";
|
|
@@ -133,8 +136,20 @@ function useMcp(options) {
|
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
138
|
connectingRef.current = false;
|
|
139
|
+
if (url) {
|
|
140
|
+
Tel.getInstance().trackUseMcpConnection({
|
|
141
|
+
url,
|
|
142
|
+
transportType,
|
|
143
|
+
success: false,
|
|
144
|
+
errorType: connectionError?.name || "UnknownError",
|
|
145
|
+
hasOAuth: !!authProviderRef.current,
|
|
146
|
+
hasSampling: !!samplingCallback,
|
|
147
|
+
hasElicitation: !!onElicitation
|
|
148
|
+
}).catch(() => {
|
|
149
|
+
});
|
|
150
|
+
}
|
|
136
151
|
},
|
|
137
|
-
[addLog]
|
|
152
|
+
[addLog, url, transportType, samplingCallback, onElicitation]
|
|
138
153
|
);
|
|
139
154
|
const connect = useCallback(async () => {
|
|
140
155
|
if (!enabled || !url) {
|
|
@@ -243,6 +258,15 @@ function useMcp(options) {
|
|
|
243
258
|
);
|
|
244
259
|
setState("ready");
|
|
245
260
|
successfulTransportRef.current = transportTypeParam;
|
|
261
|
+
Tel.getInstance().trackUseMcpConnection({
|
|
262
|
+
url,
|
|
263
|
+
transportType: transportTypeParam,
|
|
264
|
+
success: true,
|
|
265
|
+
hasOAuth: !!authProviderRef.current,
|
|
266
|
+
hasSampling: !!samplingCallback,
|
|
267
|
+
hasElicitation: !!onElicitation
|
|
268
|
+
}).catch(() => {
|
|
269
|
+
});
|
|
246
270
|
setTools(session.connector.tools || []);
|
|
247
271
|
const resourcesResult = await session.connector.listAllResources();
|
|
248
272
|
setResources(resourcesResult.resources || []);
|
|
@@ -260,15 +284,16 @@ function useMcp(options) {
|
|
|
260
284
|
}
|
|
261
285
|
return "success";
|
|
262
286
|
} catch (err) {
|
|
263
|
-
const
|
|
264
|
-
|
|
287
|
+
const error2 = err;
|
|
288
|
+
const errorMessage = error2?.message || String(err);
|
|
289
|
+
if (error2.code === 401 || errorMessage.includes("401") || errorMessage.includes("Unauthorized")) {
|
|
265
290
|
if (authProviderRef.current) {
|
|
266
291
|
addLog(
|
|
267
292
|
"info",
|
|
268
293
|
"Authentication required. OAuth provider available."
|
|
269
294
|
);
|
|
270
295
|
try {
|
|
271
|
-
const { auth } = await import("@modelcontextprotocol
|
|
296
|
+
const { auth } = await import("@mcp-use/modelcontextprotocol-sdk/client/auth.js");
|
|
272
297
|
const baseUrl = new URL(url).origin;
|
|
273
298
|
auth(authProviderRef.current, { serverUrl: baseUrl }).catch(
|
|
274
299
|
() => {
|
|
@@ -309,7 +334,10 @@ function useMcp(options) {
|
|
|
309
334
|
);
|
|
310
335
|
return "failed";
|
|
311
336
|
}
|
|
312
|
-
failConnection(
|
|
337
|
+
failConnection(
|
|
338
|
+
errorMessage,
|
|
339
|
+
error2 instanceof Error ? error2 : new Error(String(error2))
|
|
340
|
+
);
|
|
313
341
|
return "failed";
|
|
314
342
|
}
|
|
315
343
|
}, "tryConnectWithTransport");
|
|
@@ -363,6 +391,7 @@ function useMcp(options) {
|
|
|
363
391
|
);
|
|
364
392
|
}
|
|
365
393
|
addLog("info", `Calling tool: ${name}`, args);
|
|
394
|
+
const startTime = Date.now();
|
|
366
395
|
try {
|
|
367
396
|
const serverName = "inspector-server";
|
|
368
397
|
const session = clientRef.current.getSession(serverName);
|
|
@@ -375,9 +404,22 @@ function useMcp(options) {
|
|
|
375
404
|
options2
|
|
376
405
|
);
|
|
377
406
|
addLog("info", `Tool "${name}" call successful:`, result);
|
|
407
|
+
Tel.getInstance().trackUseMcpToolCall({
|
|
408
|
+
toolName: name,
|
|
409
|
+
success: true,
|
|
410
|
+
executionTimeMs: Date.now() - startTime
|
|
411
|
+
}).catch(() => {
|
|
412
|
+
});
|
|
378
413
|
return result;
|
|
379
414
|
} catch (err) {
|
|
380
415
|
addLog("error", `Tool "${name}" call failed:`, err);
|
|
416
|
+
Tel.getInstance().trackUseMcpToolCall({
|
|
417
|
+
toolName: name,
|
|
418
|
+
success: false,
|
|
419
|
+
errorType: err instanceof Error ? err.name : "UnknownError",
|
|
420
|
+
executionTimeMs: Date.now() - startTime
|
|
421
|
+
}).catch(() => {
|
|
422
|
+
});
|
|
381
423
|
throw err;
|
|
382
424
|
}
|
|
383
425
|
},
|
|
@@ -433,7 +475,7 @@ function useMcp(options) {
|
|
|
433
475
|
});
|
|
434
476
|
authProviderRef.current = freshAuthProvider;
|
|
435
477
|
addLog("info", "Triggering fresh OAuth authorization...");
|
|
436
|
-
const { auth } = await import("@modelcontextprotocol
|
|
478
|
+
const { auth } = await import("@mcp-use/modelcontextprotocol-sdk/client/auth.js");
|
|
437
479
|
const baseUrl = new URL(url).origin;
|
|
438
480
|
auth(freshAuthProvider, {
|
|
439
481
|
serverUrl: baseUrl
|
|
@@ -441,7 +483,7 @@ function useMcp(options) {
|
|
|
441
483
|
addLog(
|
|
442
484
|
"info",
|
|
443
485
|
"OAuth flow initiated:",
|
|
444
|
-
err
|
|
486
|
+
err instanceof Error ? err.message : "Redirecting..."
|
|
445
487
|
);
|
|
446
488
|
});
|
|
447
489
|
} catch (authError) {
|
|
@@ -527,9 +569,20 @@ function useMcp(options) {
|
|
|
527
569
|
}
|
|
528
570
|
const result = await session.connector.readResource(uri);
|
|
529
571
|
addLog("info", "Resource read successful:", result);
|
|
572
|
+
Tel.getInstance().trackUseMcpResourceRead({
|
|
573
|
+
resourceUri: uri,
|
|
574
|
+
success: true
|
|
575
|
+
}).catch(() => {
|
|
576
|
+
});
|
|
530
577
|
return result;
|
|
531
578
|
} catch (err) {
|
|
532
579
|
addLog("error", "Resource read failed:", err);
|
|
580
|
+
Tel.getInstance().trackUseMcpResourceRead({
|
|
581
|
+
resourceUri: uri,
|
|
582
|
+
success: false,
|
|
583
|
+
errorType: err instanceof Error ? err.name : "UnknownError"
|
|
584
|
+
}).catch(() => {
|
|
585
|
+
});
|
|
533
586
|
throw err;
|
|
534
587
|
}
|
|
535
588
|
},
|
|
@@ -1183,7 +1236,8 @@ function WidgetControls({
|
|
|
1183
1236
|
const result = await callTool(toolName, args);
|
|
1184
1237
|
setActionResult(`Success: ${JSON.stringify(result, null, 2)}`);
|
|
1185
1238
|
} catch (error) {
|
|
1186
|
-
|
|
1239
|
+
const err = error;
|
|
1240
|
+
setActionResult(`Error: ${err.message}`);
|
|
1187
1241
|
}
|
|
1188
1242
|
}, "handleCallTool");
|
|
1189
1243
|
const handleSendFollowUpMessage = /* @__PURE__ */ __name(async () => {
|
|
@@ -1192,7 +1246,8 @@ function WidgetControls({
|
|
|
1192
1246
|
await sendFollowUpMessage(followUpMessage);
|
|
1193
1247
|
setActionResult("Follow-up message sent successfully");
|
|
1194
1248
|
} catch (error) {
|
|
1195
|
-
|
|
1249
|
+
const err = error;
|
|
1250
|
+
setActionResult(`Error: ${err.message}`);
|
|
1196
1251
|
}
|
|
1197
1252
|
}, "handleSendFollowUpMessage");
|
|
1198
1253
|
const handleOpenExternal = /* @__PURE__ */ __name(() => {
|
|
@@ -1200,7 +1255,8 @@ function WidgetControls({
|
|
|
1200
1255
|
openExternal(externalUrl);
|
|
1201
1256
|
setActionResult(`Opened external link: ${externalUrl}`);
|
|
1202
1257
|
} catch (error) {
|
|
1203
|
-
|
|
1258
|
+
const err = error;
|
|
1259
|
+
setActionResult(`Error: ${err.message}`);
|
|
1204
1260
|
}
|
|
1205
1261
|
}, "handleOpenExternal");
|
|
1206
1262
|
const handleRequestDisplayMode = /* @__PURE__ */ __name(async (mode) => {
|
|
@@ -1209,7 +1265,8 @@ function WidgetControls({
|
|
|
1209
1265
|
const result = await requestDisplayMode(mode);
|
|
1210
1266
|
setActionResult(`Display mode granted: ${result.mode}`);
|
|
1211
1267
|
} catch (error) {
|
|
1212
|
-
|
|
1268
|
+
const err = error;
|
|
1269
|
+
setActionResult(`Error: ${err.message}`);
|
|
1213
1270
|
}
|
|
1214
1271
|
}, "handleRequestDisplayMode");
|
|
1215
1272
|
const handleSetState = /* @__PURE__ */ __name(async () => {
|
|
@@ -1219,7 +1276,8 @@ function WidgetControls({
|
|
|
1219
1276
|
await setState(newState);
|
|
1220
1277
|
setActionResult(`State updated: ${JSON.stringify(newState, null, 2)}`);
|
|
1221
1278
|
} catch (error) {
|
|
1222
|
-
|
|
1279
|
+
const err = error;
|
|
1280
|
+
setActionResult(`Error: ${err.message}`);
|
|
1223
1281
|
}
|
|
1224
1282
|
}, "handleSetState");
|
|
1225
1283
|
const handleFullscreen = /* @__PURE__ */ __name(async () => {
|
|
@@ -2,14 +2,15 @@ import {
|
|
|
2
2
|
ElicitationValidationError
|
|
3
3
|
} from "./chunk-KUEVOU4M.js";
|
|
4
4
|
import {
|
|
5
|
+
Telemetry,
|
|
5
6
|
generateUUID
|
|
6
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PESKSVLQ.js";
|
|
7
8
|
import {
|
|
8
9
|
__name
|
|
9
10
|
} from "./chunk-3GQAWCBQ.js";
|
|
10
11
|
|
|
11
12
|
// src/server/tools/tool-execution-helpers.ts
|
|
12
|
-
import { toJsonSchemaCompat } from "@modelcontextprotocol
|
|
13
|
+
import { toJsonSchemaCompat } from "@mcp-use/modelcontextprotocol-sdk/server/zod-json-schema-compat.js";
|
|
13
14
|
function findSessionContext(sessions, initialRequestContext, extraProgressToken, extraSendNotification) {
|
|
14
15
|
let requestContext = initialRequestContext;
|
|
15
16
|
let session;
|
|
@@ -196,6 +197,9 @@ function createSampleMethod(createMessage, progressToken, sendNotification) {
|
|
|
196
197
|
`Sampling timed out after ${timeout}ms`
|
|
197
198
|
);
|
|
198
199
|
console.log("[SAMPLING DEBUG] Got result:", result);
|
|
200
|
+
Telemetry.getInstance().trackServerContext({
|
|
201
|
+
contextType: "sample"
|
|
202
|
+
}).catch((e) => console.debug(`Failed to track sample context: ${e}`));
|
|
199
203
|
return result;
|
|
200
204
|
} catch (error) {
|
|
201
205
|
console.error("[SAMPLING DEBUG] Error during sampling:", error);
|
|
@@ -219,6 +223,9 @@ function createElicitMethod(elicitInput) {
|
|
|
219
223
|
const { timeout } = options ?? {};
|
|
220
224
|
const sdkTimeout = timeout && timeout !== Infinity ? timeout : 2147483647;
|
|
221
225
|
const result = await elicitInput(sdkParams, { timeout: sdkTimeout });
|
|
226
|
+
Telemetry.getInstance().trackServerContext({
|
|
227
|
+
contextType: "elicit"
|
|
228
|
+
}).catch((e) => console.debug(`Failed to track elicit context: ${e}`));
|
|
222
229
|
if (zodSchema && result.action === "accept" && result.data) {
|
|
223
230
|
try {
|
|
224
231
|
const validatedData = zodSchema.parse(result.data);
|
|
@@ -227,9 +234,10 @@ function createElicitMethod(elicitInput) {
|
|
|
227
234
|
data: validatedData
|
|
228
235
|
};
|
|
229
236
|
} catch (error) {
|
|
237
|
+
const err = error;
|
|
230
238
|
throw new ElicitationValidationError(
|
|
231
|
-
`Elicitation data validation failed: ${
|
|
232
|
-
|
|
239
|
+
`Elicitation data validation failed: ${err.message}`,
|
|
240
|
+
err
|
|
233
241
|
);
|
|
234
242
|
}
|
|
235
243
|
}
|
|
@@ -302,10 +310,79 @@ function createLogMethod(sendNotification, minLogLevel) {
|
|
|
302
310
|
logger: logger || "tool"
|
|
303
311
|
}
|
|
304
312
|
});
|
|
313
|
+
Telemetry.getInstance().trackServerContext({
|
|
314
|
+
contextType: "notification",
|
|
315
|
+
notificationType: "message"
|
|
316
|
+
}).catch(
|
|
317
|
+
(e) => console.debug(`Failed to track notification context: ${e}`)
|
|
318
|
+
);
|
|
305
319
|
};
|
|
306
320
|
}
|
|
307
321
|
__name(createLogMethod, "createLogMethod");
|
|
308
|
-
function
|
|
322
|
+
function createClientCapabilityChecker(clientCapabilities) {
|
|
323
|
+
const caps = clientCapabilities || {};
|
|
324
|
+
return {
|
|
325
|
+
can(capability) {
|
|
326
|
+
return capability in caps;
|
|
327
|
+
},
|
|
328
|
+
capabilities() {
|
|
329
|
+
return { ...caps };
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
__name(createClientCapabilityChecker, "createClientCapabilityChecker");
|
|
334
|
+
function createSendNotificationMethod(sessionId, sessions) {
|
|
335
|
+
if (!sessionId || !sessions) {
|
|
336
|
+
return void 0;
|
|
337
|
+
}
|
|
338
|
+
return async (method, params) => {
|
|
339
|
+
const session = sessions.get(sessionId);
|
|
340
|
+
if (!session?.sendNotification) {
|
|
341
|
+
console.warn(
|
|
342
|
+
`[MCP] Cannot send notification to session ${sessionId} - no sendNotification function`
|
|
343
|
+
);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
await session.sendNotification({
|
|
348
|
+
method,
|
|
349
|
+
params: params || {}
|
|
350
|
+
});
|
|
351
|
+
} catch (error) {
|
|
352
|
+
console.error(
|
|
353
|
+
`[MCP] Error sending notification to session ${sessionId}:`,
|
|
354
|
+
error
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
__name(createSendNotificationMethod, "createSendNotificationMethod");
|
|
360
|
+
function createSendNotificationToSessionMethod(sessions) {
|
|
361
|
+
if (!sessions) {
|
|
362
|
+
return void 0;
|
|
363
|
+
}
|
|
364
|
+
return async (sessionId, method, params) => {
|
|
365
|
+
const session = sessions.get(sessionId);
|
|
366
|
+
if (!session?.sendNotification) {
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
try {
|
|
370
|
+
await session.sendNotification({
|
|
371
|
+
method,
|
|
372
|
+
params: params || {}
|
|
373
|
+
});
|
|
374
|
+
return true;
|
|
375
|
+
} catch (error) {
|
|
376
|
+
console.error(
|
|
377
|
+
`[MCP] Error sending notification to session ${sessionId}:`,
|
|
378
|
+
error
|
|
379
|
+
);
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
__name(createSendNotificationToSessionMethod, "createSendNotificationToSessionMethod");
|
|
385
|
+
function createEnhancedContext(baseContext, createMessage, elicitInput, progressToken, sendNotification, minLogLevel, clientCapabilities, sessionId, sessions) {
|
|
309
386
|
const enhancedContext = baseContext ? Object.create(baseContext) : {};
|
|
310
387
|
enhancedContext.sample = createSampleMethod(
|
|
311
388
|
createMessage,
|
|
@@ -318,6 +395,23 @@ function createEnhancedContext(baseContext, createMessage, elicitInput, progress
|
|
|
318
395
|
sendNotification
|
|
319
396
|
);
|
|
320
397
|
enhancedContext.log = createLogMethod(sendNotification, minLogLevel);
|
|
398
|
+
enhancedContext.client = createClientCapabilityChecker(clientCapabilities);
|
|
399
|
+
if (sessionId) {
|
|
400
|
+
enhancedContext.session = {
|
|
401
|
+
sessionId
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
const sendNotificationMethod = createSendNotificationMethod(
|
|
405
|
+
sessionId,
|
|
406
|
+
sessions
|
|
407
|
+
);
|
|
408
|
+
if (sendNotificationMethod) {
|
|
409
|
+
enhancedContext.sendNotification = sendNotificationMethod;
|
|
410
|
+
}
|
|
411
|
+
const sendNotificationToSessionMethod = createSendNotificationToSessionMethod(sessions);
|
|
412
|
+
if (sendNotificationToSessionMethod) {
|
|
413
|
+
enhancedContext.sendNotificationToSession = sendNotificationToSessionMethod;
|
|
414
|
+
}
|
|
321
415
|
return enhancedContext;
|
|
322
416
|
}
|
|
323
417
|
__name(createEnhancedContext, "createEnhancedContext");
|
|
@@ -261,7 +261,7 @@ var BrowserOAuthClientProvider = class {
|
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
// src/auth/callback.ts
|
|
264
|
-
import { auth } from "@modelcontextprotocol
|
|
264
|
+
import { auth } from "@mcp-use/modelcontextprotocol-sdk/client/auth.js";
|
|
265
265
|
async function onMcpAuthorization() {
|
|
266
266
|
const queryParams = new URLSearchParams(window.location.search);
|
|
267
267
|
const code = queryParams.get("code");
|
|
@@ -369,16 +369,44 @@ async function onMcpAuthorization() {
|
|
|
369
369
|
);
|
|
370
370
|
}
|
|
371
371
|
try {
|
|
372
|
-
document.body.innerHTML =
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
372
|
+
document.body.innerHTML = "";
|
|
373
|
+
const container = document.createElement("div");
|
|
374
|
+
container.style.fontFamily = "sans-serif";
|
|
375
|
+
container.style.padding = "20px";
|
|
376
|
+
const heading = document.createElement("h1");
|
|
377
|
+
heading.textContent = "Authentication Error";
|
|
378
|
+
container.appendChild(heading);
|
|
379
|
+
const errorPara = document.createElement("p");
|
|
380
|
+
errorPara.style.color = "red";
|
|
381
|
+
errorPara.style.backgroundColor = "#ffebeb";
|
|
382
|
+
errorPara.style.border = "1px solid red";
|
|
383
|
+
errorPara.style.padding = "10px";
|
|
384
|
+
errorPara.style.borderRadius = "4px";
|
|
385
|
+
errorPara.textContent = errorMessage;
|
|
386
|
+
container.appendChild(errorPara);
|
|
387
|
+
const closePara = document.createElement("p");
|
|
388
|
+
closePara.textContent = "You can close this window or ";
|
|
389
|
+
const closeLink = document.createElement("a");
|
|
390
|
+
closeLink.href = "#";
|
|
391
|
+
closeLink.textContent = "click here to close";
|
|
392
|
+
closeLink.onclick = (e) => {
|
|
393
|
+
e.preventDefault();
|
|
394
|
+
window.close();
|
|
395
|
+
return false;
|
|
396
|
+
};
|
|
397
|
+
closePara.appendChild(closeLink);
|
|
398
|
+
closePara.appendChild(document.createTextNode("."));
|
|
399
|
+
container.appendChild(closePara);
|
|
400
|
+
if (err instanceof Error && err.stack) {
|
|
401
|
+
const stackPre = document.createElement("pre");
|
|
402
|
+
stackPre.style.fontSize = "0.8em";
|
|
403
|
+
stackPre.style.color = "#555";
|
|
404
|
+
stackPre.style.marginTop = "20px";
|
|
405
|
+
stackPre.style.whiteSpace = "pre-wrap";
|
|
406
|
+
stackPre.textContent = err.stack;
|
|
407
|
+
container.appendChild(stackPre);
|
|
408
|
+
}
|
|
409
|
+
document.body.appendChild(container);
|
|
382
410
|
} catch (displayError) {
|
|
383
411
|
console.error(
|
|
384
412
|
`${logPrefix} Could not display error in callback window:`,
|