mcp-use 1.2.1 → 1.2.2-canary.0
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-C3SRZK7H.js +1339 -0
- package/dist/{chunk-JV7HAYUT.js → chunk-CPV4QNHD.js} +126 -293
- package/dist/{chunk-ZUEQQ6YK.js → chunk-EYAIJPBH.js} +3 -235
- package/dist/{chunk-MGUO7HXB.js → chunk-UVUM35MV.js} +3 -957
- package/dist/chunk-VPPILX7B.js +239 -0
- package/dist/index.cjs +223 -303
- package/dist/index.js +11 -10
- package/dist/{langfuse-6AJGHMAV.js → langfuse-MO3AMDBE.js} +2 -1
- package/dist/src/agents/prompts/system_prompt_builder.d.ts.map +1 -1
- package/dist/src/browser.cjs +67 -20
- package/dist/src/browser.js +10 -45
- package/dist/src/client/browser.d.ts.map +1 -1
- package/dist/src/connectors/base.d.ts +46 -4
- package/dist/src/connectors/base.d.ts.map +1 -1
- package/dist/src/connectors/http.d.ts.map +1 -1
- package/dist/src/connectors/websocket.d.ts +2 -5
- package/dist/src/connectors/websocket.d.ts.map +1 -1
- package/dist/src/react/index.cjs +1394 -285
- package/dist/src/react/index.js +3 -2
- package/dist/src/react/types.d.ts +22 -0
- package/dist/src/react/types.d.ts.map +1 -1
- package/dist/src/react/useMcp.d.ts +31 -0
- package/dist/src/react/useMcp.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-62GFHYCL.js +0 -300
package/dist/index.js
CHANGED
|
@@ -2,41 +2,42 @@ import {
|
|
|
2
2
|
AcquireActiveMCPServerTool,
|
|
3
3
|
AddMCPServerFromConfigTool,
|
|
4
4
|
BaseAdapter,
|
|
5
|
-
BaseConnector,
|
|
6
|
-
BaseMCPClient,
|
|
7
5
|
ConnectMCPServerTool,
|
|
8
|
-
ConnectionManager,
|
|
9
|
-
HttpConnector,
|
|
10
6
|
LangChainAdapter,
|
|
11
7
|
ListMCPServersTool,
|
|
12
8
|
MCPAgent,
|
|
13
|
-
MCPSession,
|
|
14
9
|
ObservabilityManager,
|
|
15
10
|
ReleaseMCPServerConnectionTool,
|
|
16
11
|
RemoteAgent,
|
|
17
12
|
ServerManager,
|
|
18
13
|
Telemetry,
|
|
19
|
-
WebSocketConnector,
|
|
20
14
|
createReadableStreamFromGenerator,
|
|
21
15
|
setTelemetrySource,
|
|
22
16
|
streamEventsToAISDK,
|
|
23
17
|
streamEventsToAISDKWithTools
|
|
24
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-UVUM35MV.js";
|
|
25
19
|
import {
|
|
26
20
|
useMcp,
|
|
27
21
|
useWidget,
|
|
28
22
|
useWidgetProps,
|
|
29
23
|
useWidgetState,
|
|
30
24
|
useWidgetTheme
|
|
31
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-CPV4QNHD.js";
|
|
32
26
|
import {
|
|
27
|
+
BaseConnector,
|
|
28
|
+
BaseMCPClient,
|
|
33
29
|
BrowserOAuthClientProvider,
|
|
30
|
+
ConnectionManager,
|
|
31
|
+
HttpConnector,
|
|
32
|
+
MCPSession,
|
|
33
|
+
WebSocketConnector,
|
|
34
34
|
onMcpAuthorization
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-C3SRZK7H.js";
|
|
36
|
+
import "./chunk-EYAIJPBH.js";
|
|
36
37
|
import {
|
|
37
38
|
Logger,
|
|
38
39
|
logger
|
|
39
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-VPPILX7B.js";
|
|
40
41
|
import {
|
|
41
42
|
__name
|
|
42
43
|
} from "./chunk-SHUYVCID.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system_prompt_builder.d.ts","sourceRoot":"","sources":["../../../../src/agents/prompts/system_prompt_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"system_prompt_builder.d.ts","sourceRoot":"","sources":["../../../../src/agents/prompts/system_prompt_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAAE,EAChC,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,MAAM,EAAE,CAcV;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,CAiBR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,uBAAuB,EAAE,EAChC,oBAAoB,EAAE,MAAM,EAC5B,qBAAqB,EAAE,MAAM,EAC7B,gBAAgB,EAAE,OAAO,EACzB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,kBAAkB,CAAC,EAAE,MAAM,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,aAAa,CAiBf"}
|
package/dist/src/browser.cjs
CHANGED
|
@@ -738,6 +738,7 @@ var BaseConnector = class {
|
|
|
738
738
|
client = null;
|
|
739
739
|
connectionManager = null;
|
|
740
740
|
toolsCache = null;
|
|
741
|
+
capabilitiesCache = null;
|
|
741
742
|
connected = false;
|
|
742
743
|
opts;
|
|
743
744
|
constructor(opts = {}) {
|
|
@@ -771,9 +772,11 @@ var BaseConnector = class {
|
|
|
771
772
|
}
|
|
772
773
|
logger.debug("Caching server capabilities & tools");
|
|
773
774
|
const capabilities = this.client.getServerCapabilities();
|
|
775
|
+
this.capabilitiesCache = capabilities;
|
|
774
776
|
const listToolsRes = await this.client.listTools(void 0, defaultRequestOptions);
|
|
775
777
|
this.toolsCache = listToolsRes.tools ?? [];
|
|
776
778
|
logger.debug(`Fetched ${this.toolsCache.length} tools from server`);
|
|
779
|
+
logger.debug("Server capabilities:", capabilities);
|
|
777
780
|
return capabilities;
|
|
778
781
|
}
|
|
779
782
|
/** Lazily expose the cached tools list. */
|
|
@@ -795,7 +798,7 @@ var BaseConnector = class {
|
|
|
795
798
|
}
|
|
796
799
|
/**
|
|
797
800
|
* List resources from the server with optional pagination
|
|
798
|
-
*
|
|
801
|
+
*
|
|
799
802
|
* @param cursor - Optional cursor for pagination
|
|
800
803
|
* @param options - Request options
|
|
801
804
|
* @returns Resource list with optional nextCursor for pagination
|
|
@@ -809,7 +812,7 @@ var BaseConnector = class {
|
|
|
809
812
|
}
|
|
810
813
|
/**
|
|
811
814
|
* List all resources from the server, automatically handling pagination
|
|
812
|
-
*
|
|
815
|
+
*
|
|
813
816
|
* @param options - Request options
|
|
814
817
|
* @returns Complete list of all resources
|
|
815
818
|
*/
|
|
@@ -817,19 +820,31 @@ var BaseConnector = class {
|
|
|
817
820
|
if (!this.client) {
|
|
818
821
|
throw new Error("MCP client is not connected");
|
|
819
822
|
}
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
823
|
+
if (!this.capabilitiesCache?.resources) {
|
|
824
|
+
logger.debug("Server does not advertise resources capability, skipping");
|
|
825
|
+
return { resources: [] };
|
|
826
|
+
}
|
|
827
|
+
try {
|
|
828
|
+
logger.debug("Listing all resources (with auto-pagination)");
|
|
829
|
+
const allResources = [];
|
|
830
|
+
let cursor = void 0;
|
|
831
|
+
do {
|
|
832
|
+
const result = await this.client.listResources({ cursor }, options);
|
|
833
|
+
allResources.push(...result.resources || []);
|
|
834
|
+
cursor = result.nextCursor;
|
|
835
|
+
} while (cursor);
|
|
836
|
+
return { resources: allResources };
|
|
837
|
+
} catch (err) {
|
|
838
|
+
if (err.code === -32601) {
|
|
839
|
+
logger.debug("Server advertised resources but method not found");
|
|
840
|
+
return { resources: [] };
|
|
841
|
+
}
|
|
842
|
+
throw err;
|
|
843
|
+
}
|
|
829
844
|
}
|
|
830
845
|
/**
|
|
831
846
|
* List resource templates from the server
|
|
832
|
-
*
|
|
847
|
+
*
|
|
833
848
|
* @param options - Request options
|
|
834
849
|
* @returns List of available resource templates
|
|
835
850
|
*/
|
|
@@ -847,11 +862,11 @@ var BaseConnector = class {
|
|
|
847
862
|
}
|
|
848
863
|
logger.debug(`Reading resource ${uri}`);
|
|
849
864
|
const res = await this.client.readResource({ uri }, options);
|
|
850
|
-
return
|
|
865
|
+
return res;
|
|
851
866
|
}
|
|
852
867
|
/**
|
|
853
868
|
* Subscribe to resource updates
|
|
854
|
-
*
|
|
869
|
+
*
|
|
855
870
|
* @param uri - URI of the resource to subscribe to
|
|
856
871
|
* @param options - Request options
|
|
857
872
|
*/
|
|
@@ -864,7 +879,7 @@ var BaseConnector = class {
|
|
|
864
879
|
}
|
|
865
880
|
/**
|
|
866
881
|
* Unsubscribe from resource updates
|
|
867
|
-
*
|
|
882
|
+
*
|
|
868
883
|
* @param uri - URI of the resource to unsubscribe from
|
|
869
884
|
* @param options - Request options
|
|
870
885
|
*/
|
|
@@ -879,8 +894,20 @@ var BaseConnector = class {
|
|
|
879
894
|
if (!this.client) {
|
|
880
895
|
throw new Error("MCP client is not connected");
|
|
881
896
|
}
|
|
882
|
-
|
|
883
|
-
|
|
897
|
+
if (!this.capabilitiesCache?.prompts) {
|
|
898
|
+
logger.debug("Server does not advertise prompts capability, skipping");
|
|
899
|
+
return { prompts: [] };
|
|
900
|
+
}
|
|
901
|
+
try {
|
|
902
|
+
logger.debug("Listing prompts");
|
|
903
|
+
return await this.client.listPrompts();
|
|
904
|
+
} catch (err) {
|
|
905
|
+
if (err.code === -32601) {
|
|
906
|
+
logger.debug("Server advertised prompts but method not found");
|
|
907
|
+
return { prompts: [] };
|
|
908
|
+
}
|
|
909
|
+
throw err;
|
|
910
|
+
}
|
|
884
911
|
}
|
|
885
912
|
async getPrompt(name, args) {
|
|
886
913
|
if (!this.client) {
|
|
@@ -976,7 +1003,9 @@ var HttpConnector = class extends BaseConnector {
|
|
|
976
1003
|
logger.info("\u2705 Successfully connected via streamable HTTP");
|
|
977
1004
|
} catch (err) {
|
|
978
1005
|
let fallbackReason = "Unknown error";
|
|
1006
|
+
let is401Error = false;
|
|
979
1007
|
if (err instanceof import_streamableHttp2.StreamableHTTPError) {
|
|
1008
|
+
is401Error = err.code === 401;
|
|
980
1009
|
if (err.code === 400 && err.message.includes("Missing session ID")) {
|
|
981
1010
|
fallbackReason = "Server requires session ID (FastMCP compatibility) - using SSE transport";
|
|
982
1011
|
logger.warn(`\u26A0\uFE0F ${fallbackReason}`);
|
|
@@ -990,6 +1019,7 @@ var HttpConnector = class extends BaseConnector {
|
|
|
990
1019
|
} else if (err instanceof Error) {
|
|
991
1020
|
const errorStr = err.toString();
|
|
992
1021
|
const errorMsg = err.message || "";
|
|
1022
|
+
is401Error = errorStr.includes("401") || errorMsg.includes("Unauthorized");
|
|
993
1023
|
if (errorStr.includes("Missing session ID") || errorStr.includes("Bad Request: Missing session ID") || errorMsg.includes("FastMCP session ID error")) {
|
|
994
1024
|
fallbackReason = "Server requires session ID (FastMCP compatibility) - using SSE transport";
|
|
995
1025
|
logger.warn(`\u26A0\uFE0F ${fallbackReason}`);
|
|
@@ -1001,6 +1031,13 @@ var HttpConnector = class extends BaseConnector {
|
|
|
1001
1031
|
logger.debug(fallbackReason);
|
|
1002
1032
|
}
|
|
1003
1033
|
}
|
|
1034
|
+
if (is401Error) {
|
|
1035
|
+
logger.info("Authentication required - skipping SSE fallback");
|
|
1036
|
+
await this.cleanupResources();
|
|
1037
|
+
const authError = new Error("Authentication required");
|
|
1038
|
+
authError.code = 401;
|
|
1039
|
+
throw authError;
|
|
1040
|
+
}
|
|
1004
1041
|
logger.info("\u{1F504} Falling back to SSE transport...");
|
|
1005
1042
|
try {
|
|
1006
1043
|
await this.connectWithSse(baseUrl);
|
|
@@ -1009,6 +1046,12 @@ var HttpConnector = class extends BaseConnector {
|
|
|
1009
1046
|
logger.error(` Streamable HTTP: ${fallbackReason}`);
|
|
1010
1047
|
logger.error(` SSE: ${sseErr}`);
|
|
1011
1048
|
await this.cleanupResources();
|
|
1049
|
+
const sseIs401 = sseErr?.message?.includes("401") || sseErr?.message?.includes("Unauthorized");
|
|
1050
|
+
if (sseIs401) {
|
|
1051
|
+
const authError = new Error("Authentication required");
|
|
1052
|
+
authError.code = 401;
|
|
1053
|
+
throw authError;
|
|
1054
|
+
}
|
|
1012
1055
|
throw new Error("Could not connect to server with any available transport");
|
|
1013
1056
|
}
|
|
1014
1057
|
}
|
|
@@ -1018,6 +1061,8 @@ var HttpConnector = class extends BaseConnector {
|
|
|
1018
1061
|
this.connectionManager = new StreamableHttpConnectionManager(
|
|
1019
1062
|
baseUrl,
|
|
1020
1063
|
{
|
|
1064
|
+
authProvider: this.opts.authProvider,
|
|
1065
|
+
// ← Pass OAuth provider to SDK
|
|
1021
1066
|
requestInit: {
|
|
1022
1067
|
headers: this.headers
|
|
1023
1068
|
},
|
|
@@ -1292,7 +1337,7 @@ var WebSocketConnector = class extends BaseConnector {
|
|
|
1292
1337
|
}
|
|
1293
1338
|
async readResource(uri) {
|
|
1294
1339
|
const res = await this.sendRequest("resources/read", { uri });
|
|
1295
|
-
return
|
|
1340
|
+
return res;
|
|
1296
1341
|
}
|
|
1297
1342
|
async request(method, params = null) {
|
|
1298
1343
|
return await this.sendRequest(method, params);
|
|
@@ -1483,13 +1528,15 @@ var BrowserMCPClient = class _BrowserMCPClient extends BaseMCPClient {
|
|
|
1483
1528
|
* Supports HTTP and WebSocket connectors only
|
|
1484
1529
|
*/
|
|
1485
1530
|
createConnectorFromConfig(serverConfig) {
|
|
1486
|
-
const { url, transport, headers, authToken } = serverConfig;
|
|
1531
|
+
const { url, transport, headers, authToken, authProvider } = serverConfig;
|
|
1487
1532
|
if (!url) {
|
|
1488
1533
|
throw new Error("Server URL is required");
|
|
1489
1534
|
}
|
|
1490
1535
|
const connectorOptions = {
|
|
1491
1536
|
headers,
|
|
1492
|
-
authToken
|
|
1537
|
+
authToken,
|
|
1538
|
+
authProvider
|
|
1539
|
+
// ← Pass OAuth provider to connector
|
|
1493
1540
|
};
|
|
1494
1541
|
if (transport === "websocket" || url.startsWith("ws://") || url.startsWith("wss://")) {
|
|
1495
1542
|
return new WebSocketConnector(url, connectorOptions);
|
package/dist/src/browser.js
CHANGED
|
@@ -1,63 +1,28 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseAdapter,
|
|
3
|
-
BaseConnector,
|
|
4
|
-
BaseMCPClient,
|
|
5
|
-
HttpConnector,
|
|
6
3
|
LangChainAdapter,
|
|
7
4
|
MCPAgent,
|
|
8
|
-
MCPSession,
|
|
9
5
|
ObservabilityManager,
|
|
10
6
|
RemoteAgent,
|
|
11
|
-
WebSocketConnector,
|
|
12
7
|
createReadableStreamFromGenerator,
|
|
13
8
|
streamEventsToAISDK,
|
|
14
9
|
streamEventsToAISDKWithTools
|
|
15
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-UVUM35MV.js";
|
|
16
11
|
import {
|
|
12
|
+
BaseConnector,
|
|
13
|
+
BrowserMCPClient,
|
|
17
14
|
BrowserOAuthClientProvider,
|
|
15
|
+
HttpConnector,
|
|
16
|
+
MCPSession,
|
|
17
|
+
WebSocketConnector,
|
|
18
18
|
onMcpAuthorization
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-C3SRZK7H.js";
|
|
20
|
+
import "../chunk-EYAIJPBH.js";
|
|
20
21
|
import {
|
|
21
22
|
Logger,
|
|
22
23
|
logger
|
|
23
|
-
} from "../chunk-
|
|
24
|
-
import
|
|
25
|
-
__name
|
|
26
|
-
} from "../chunk-SHUYVCID.js";
|
|
27
|
-
|
|
28
|
-
// src/client/browser.ts
|
|
29
|
-
var BrowserMCPClient = class _BrowserMCPClient extends BaseMCPClient {
|
|
30
|
-
static {
|
|
31
|
-
__name(this, "BrowserMCPClient");
|
|
32
|
-
}
|
|
33
|
-
constructor(config) {
|
|
34
|
-
super(config);
|
|
35
|
-
}
|
|
36
|
-
static fromDict(cfg) {
|
|
37
|
-
return new _BrowserMCPClient(cfg);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Create a connector from server configuration (Browser version)
|
|
41
|
-
* Supports HTTP and WebSocket connectors only
|
|
42
|
-
*/
|
|
43
|
-
createConnectorFromConfig(serverConfig) {
|
|
44
|
-
const { url, transport, headers, authToken } = serverConfig;
|
|
45
|
-
if (!url) {
|
|
46
|
-
throw new Error("Server URL is required");
|
|
47
|
-
}
|
|
48
|
-
const connectorOptions = {
|
|
49
|
-
headers,
|
|
50
|
-
authToken
|
|
51
|
-
};
|
|
52
|
-
if (transport === "websocket" || url.startsWith("ws://") || url.startsWith("wss://")) {
|
|
53
|
-
return new WebSocketConnector(url, connectorOptions);
|
|
54
|
-
} else if (transport === "http" || url.startsWith("http://") || url.startsWith("https://")) {
|
|
55
|
-
return new HttpConnector(url, connectorOptions);
|
|
56
|
-
} else {
|
|
57
|
-
return new HttpConnector(url, connectorOptions);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
};
|
|
24
|
+
} from "../chunk-VPPILX7B.js";
|
|
25
|
+
import "../chunk-SHUYVCID.js";
|
|
61
26
|
|
|
62
27
|
// src/browser.ts
|
|
63
28
|
import { AIMessage, BaseMessage, HumanMessage, SystemMessage, ToolMessage } from "@langchain/core/messages";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/client/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;gBACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAI1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB;IAIlE;;;OAGG;IACH,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/client/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;gBACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAI1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB;IAIlE;;;OAGG;IACH,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa;CA0BtF"}
|
|
@@ -12,6 +12,10 @@ export interface ConnectorInitOptions {
|
|
|
12
12
|
* methods when they issue SDK requests. Can be overridden per‑call.
|
|
13
13
|
*/
|
|
14
14
|
defaultRequestOptions?: RequestOptions;
|
|
15
|
+
/**
|
|
16
|
+
* OAuth client provider for automatic authentication
|
|
17
|
+
*/
|
|
18
|
+
authProvider?: any;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
21
|
* Base class for MCP connectors.
|
|
@@ -20,6 +24,7 @@ export declare abstract class BaseConnector {
|
|
|
20
24
|
protected client: Client | null;
|
|
21
25
|
protected connectionManager: ConnectionManager<any> | null;
|
|
22
26
|
protected toolsCache: Tool[] | null;
|
|
27
|
+
protected capabilitiesCache: any;
|
|
23
28
|
protected connected: boolean;
|
|
24
29
|
protected readonly opts: ConnectorInitOptions;
|
|
25
30
|
constructor(opts?: ConnectorInitOptions);
|
|
@@ -212,10 +217,47 @@ export declare abstract class BaseConnector {
|
|
|
212
217
|
}>, import("zod").ZodTypeAny, "passthrough">>, "many">;
|
|
213
218
|
}, import("zod").ZodTypeAny, "passthrough">>;
|
|
214
219
|
/** Read a resource by URI. */
|
|
215
|
-
readResource(uri: string, options?: RequestOptions): Promise<{
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
220
|
+
readResource(uri: string, options?: RequestOptions): Promise<import("zod").objectOutputType<{
|
|
221
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
222
|
+
} & {
|
|
223
|
+
contents: import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodObject<import("zod").objectUtil.extendShape<{
|
|
224
|
+
uri: import("zod").ZodString;
|
|
225
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
226
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
227
|
+
}, {
|
|
228
|
+
text: import("zod").ZodString;
|
|
229
|
+
}>, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<import("zod").objectUtil.extendShape<{
|
|
230
|
+
uri: import("zod").ZodString;
|
|
231
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
232
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
233
|
+
}, {
|
|
234
|
+
text: import("zod").ZodString;
|
|
235
|
+
}>, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<import("zod").objectUtil.extendShape<{
|
|
236
|
+
uri: import("zod").ZodString;
|
|
237
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
238
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
239
|
+
}, {
|
|
240
|
+
text: import("zod").ZodString;
|
|
241
|
+
}>, import("zod").ZodTypeAny, "passthrough">>, import("zod").ZodObject<import("zod").objectUtil.extendShape<{
|
|
242
|
+
uri: import("zod").ZodString;
|
|
243
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
244
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
245
|
+
}, {
|
|
246
|
+
blob: import("zod").ZodEffects<import("zod").ZodString, string, string>;
|
|
247
|
+
}>, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<import("zod").objectUtil.extendShape<{
|
|
248
|
+
uri: import("zod").ZodString;
|
|
249
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
250
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
251
|
+
}, {
|
|
252
|
+
blob: import("zod").ZodEffects<import("zod").ZodString, string, string>;
|
|
253
|
+
}>, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<import("zod").objectUtil.extendShape<{
|
|
254
|
+
uri: import("zod").ZodString;
|
|
255
|
+
mimeType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
256
|
+
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
257
|
+
}, {
|
|
258
|
+
blob: import("zod").ZodEffects<import("zod").ZodString, string, string>;
|
|
259
|
+
}>, import("zod").ZodTypeAny, "passthrough">>]>, "many">;
|
|
260
|
+
}, import("zod").ZodTypeAny, "passthrough">>;
|
|
219
261
|
/**
|
|
220
262
|
* Subscribe to resource updates
|
|
221
263
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/connectors/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/connectors/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/connectors/http.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,aAAa,CAAyC;gBAElD,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB;IAe5D,mFAAmF;IAC7E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/connectors/http.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,aAAa,CAAyC;gBAElD,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB;IAe5D,mFAAmF;IAC7E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAwGhB,yBAAyB;YAqDzB,cAAc;IA8B5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7C;IAED;;OAEG;IACH,gBAAgB,IAAI,iBAAiB,GAAG,KAAK,GAAG,IAAI;CAGrD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
1
|
+
import type { CallToolResult, ReadResourceResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { WebSocketConnectionManager } from '../task_managers/websocket.js';
|
|
3
3
|
import { BaseConnector } from './base.js';
|
|
4
4
|
export interface WebSocketConnectorOptions {
|
|
@@ -23,10 +23,7 @@ export declare class WebSocketConnector extends BaseConnector {
|
|
|
23
23
|
listTools(): Promise<Tool[]>;
|
|
24
24
|
callTool(name: string, args: Record<string, any>): Promise<CallToolResult>;
|
|
25
25
|
listResources(): Promise<any>;
|
|
26
|
-
readResource(uri: string): Promise<
|
|
27
|
-
content: ArrayBuffer;
|
|
28
|
-
mimeType: string;
|
|
29
|
-
}>;
|
|
26
|
+
readResource(uri: string): Promise<ReadResourceResult>;
|
|
30
27
|
request(method: string, params?: Record<string, any> | null): Promise<any>;
|
|
31
28
|
get tools(): Tool[];
|
|
32
29
|
protected cleanupResources(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/connectors/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACL,MAAM,oCAAoC,CAAA;AAG3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,SAAS,CAAC,iBAAiB,EAAE,0BAA0B,GAAG,IAAI,CAAO;IACrE,OAAO,CAAC,EAAE,CAAkD;IAC5D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,OAAO,CACF;IAEb,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAO;gBAE9B,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,yBAA8B;IAQvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,OAAO,CAAC,WAAW;YAiBL,WAAW;IAqDzB,OAAO,CAAC,SAAS;IAKX,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAS1C,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAK5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAK7B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/connectors/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,IAAI,EACL,MAAM,oCAAoC,CAAA;AAG3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,SAAS,CAAC,iBAAiB,EAAE,0BAA0B,GAAG,IAAI,CAAO;IACrE,OAAO,CAAC,EAAE,CAAkD;IAC5D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,OAAO,CACF;IAEb,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAO;gBAE9B,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,yBAA8B;IAQvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,OAAO,CAAC,WAAW;YAiBL,WAAW;IAqDzB,OAAO,CAAC,SAAS;IAKX,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAS1C,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAK5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAK7B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKtD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAItF,IAAI,KAAK,IAAI,IAAI,EAAE,CAIlB;cAEe,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjD,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK7C;CACF"}
|