@mcp-ts/sdk 1.4.0 → 1.5.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.
- package/README.md +20 -27
- package/dist/adapters/agui-adapter.d.mts +16 -0
- package/dist/adapters/agui-adapter.d.ts +16 -0
- package/dist/adapters/agui-adapter.js +185 -0
- package/dist/adapters/agui-adapter.js.map +1 -1
- package/dist/adapters/agui-adapter.mjs +185 -0
- package/dist/adapters/agui-adapter.mjs.map +1 -1
- package/dist/adapters/agui-middleware.d.mts +2 -0
- package/dist/adapters/agui-middleware.d.ts +2 -0
- package/dist/adapters/agui-middleware.js.map +1 -1
- package/dist/adapters/agui-middleware.mjs.map +1 -1
- package/dist/adapters/ai-adapter.d.mts +21 -0
- package/dist/adapters/ai-adapter.d.ts +21 -0
- package/dist/adapters/ai-adapter.js +175 -0
- package/dist/adapters/ai-adapter.js.map +1 -1
- package/dist/adapters/ai-adapter.mjs +175 -0
- package/dist/adapters/ai-adapter.mjs.map +1 -1
- package/dist/adapters/langchain-adapter.d.mts +16 -0
- package/dist/adapters/langchain-adapter.d.ts +16 -0
- package/dist/adapters/langchain-adapter.js +179 -0
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/langchain-adapter.mjs +179 -0
- package/dist/adapters/langchain-adapter.mjs.map +1 -1
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/react.d.mts +94 -8
- package/dist/client/react.d.ts +94 -8
- package/dist/client/react.js +364 -26
- package/dist/client/react.js.map +1 -1
- package/dist/client/react.mjs +358 -27
- package/dist/client/react.mjs.map +1 -1
- package/dist/client/vue.d.mts +4 -4
- package/dist/client/vue.d.ts +4 -4
- package/dist/client/vue.js +11 -2
- package/dist/client/vue.js.map +1 -1
- package/dist/client/vue.mjs +11 -2
- package/dist/client/vue.mjs.map +1 -1
- package/dist/{index-CQr9q0bF.d.mts → index-DcYfpY3H.d.mts} +1 -1
- package/dist/{index-nE_7Io0I.d.ts → index-GfC_eNEv.d.ts} +1 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +938 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +923 -13
- package/dist/index.mjs.map +1 -1
- package/dist/server/index.d.mts +2 -2
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +58 -12
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +58 -12
- package/dist/server/index.mjs.map +1 -1
- package/dist/shared/index.d.mts +86 -4
- package/dist/shared/index.d.ts +86 -4
- package/dist/shared/index.js +874 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +865 -1
- package/dist/shared/index.mjs.map +1 -1
- package/dist/tool-router-Bo8qZbsD.d.ts +325 -0
- package/dist/tool-router-XnWVxPzv.d.mts +325 -0
- package/dist/{types-CW6lghof.d.mts → types-CfCoIsWI.d.mts} +27 -1
- package/dist/{types-CW6lghof.d.ts → types-CfCoIsWI.d.ts} +27 -1
- package/package.json +3 -2
- package/src/adapters/agui-adapter.ts +79 -0
- package/src/adapters/ai-adapter.ts +75 -0
- package/src/adapters/langchain-adapter.ts +74 -0
- package/src/client/react/index.ts +16 -0
- package/src/client/react/oauth-popup.tsx +446 -0
- package/src/client/react/use-mcp-apps.tsx +50 -32
- package/src/client/react/use-mcp.ts +36 -3
- package/src/client/vue/use-mcp.ts +38 -3
- package/src/server/handlers/sse-handler.ts +39 -0
- package/src/server/index.ts +2 -0
- package/src/server/mcp/oauth-client.ts +35 -15
- package/src/shared/index.ts +36 -0
- package/src/shared/meta-tools.ts +387 -0
- package/src/shared/schema-compressor.ts +124 -0
- package/src/shared/tool-index.ts +499 -0
- package/src/shared/tool-router.ts +469 -0
- package/src/shared/types.ts +30 -0
- package/supabase/migrations/20260421010000_add_session_cleanup_cron.sql +32 -0
package/dist/server/index.d.mts
CHANGED
|
@@ -4,8 +4,8 @@ import { OAuthClientInformationMixed, OAuthTokens } from '@modelcontextprotocol/
|
|
|
4
4
|
export { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
5
5
|
import { M as McpConnectionEvent, d as McpObservabilityEvent } from '../events-CK3N--3g.mjs';
|
|
6
6
|
export { D as Disposable, E as Emitter, b as Event, c as McpConnectionState } from '../events-CK3N--3g.mjs';
|
|
7
|
-
import { q as McpRpcResponse, p as McpRpcRequest } from '../types-
|
|
8
|
-
export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, m as ListToolsResponse, T as ToolInfo } from '../types-
|
|
7
|
+
import { q as McpRpcResponse, p as McpRpcRequest } from '../types-CfCoIsWI.mjs';
|
|
8
|
+
export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, m as ListToolsResponse, T as ToolClient, u as ToolClientProvider, v as ToolInfo } from '../types-CfCoIsWI.mjs';
|
|
9
9
|
export { CallToolResult, ListToolsResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
10
10
|
import '@modelcontextprotocol/sdk/client/auth.js';
|
|
11
11
|
|
package/dist/server/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ import { OAuthClientInformationMixed, OAuthTokens } from '@modelcontextprotocol/
|
|
|
4
4
|
export { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
5
5
|
import { M as McpConnectionEvent, d as McpObservabilityEvent } from '../events-CK3N--3g.js';
|
|
6
6
|
export { D as Disposable, E as Emitter, b as Event, c as McpConnectionState } from '../events-CK3N--3g.js';
|
|
7
|
-
import { q as McpRpcResponse, p as McpRpcRequest } from '../types-
|
|
8
|
-
export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, m as ListToolsResponse, T as ToolInfo } from '../types-
|
|
7
|
+
import { q as McpRpcResponse, p as McpRpcRequest } from '../types-CfCoIsWI.js';
|
|
8
|
+
export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, m as ListToolsResponse, T as ToolClient, u as ToolClientProvider, v as ToolInfo } from '../types-CfCoIsWI.js';
|
|
9
9
|
export { CallToolResult, ListToolsResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
10
10
|
import '@modelcontextprotocol/sdk/client/auth.js';
|
|
11
11
|
|
package/dist/server/index.js
CHANGED
|
@@ -1711,13 +1711,8 @@ var MCPClient = class _MCPClient {
|
|
|
1711
1711
|
this.transportType = transportType;
|
|
1712
1712
|
this.emitStateChange("CONNECTED");
|
|
1713
1713
|
this.emitProgress("Connected successfully");
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
const needsTtlPromotion = !existingSession || existingSession.active !== true;
|
|
1717
|
-
if (needsTransportUpdate || needsTtlPromotion) {
|
|
1718
|
-
console.log(`[MCPClient] Saving session ${this.sessionId} with 12hr TTL (connect success)`);
|
|
1719
|
-
await this.saveSession(SESSION_TTL_SECONDS, true);
|
|
1720
|
-
}
|
|
1714
|
+
console.log(`[MCPClient] Saving session ${this.sessionId} with 12hr TTL (connect success)`);
|
|
1715
|
+
await this.saveSession(SESSION_TTL_SECONDS, true);
|
|
1721
1716
|
} catch (error) {
|
|
1722
1717
|
if (error instanceof auth_js.UnauthorizedError || error instanceof Error && error.message.toLowerCase().includes("unauthorized")) {
|
|
1723
1718
|
let authUrl = "";
|
|
@@ -1755,6 +1750,13 @@ var MCPClient = class _MCPClient {
|
|
|
1755
1750
|
const errorMessage = error instanceof Error ? error.message : "Connection failed";
|
|
1756
1751
|
this.emitError(errorMessage, "connection");
|
|
1757
1752
|
this.emitStateChange("FAILED");
|
|
1753
|
+
try {
|
|
1754
|
+
const existingSession = await storage.getSession(this.identity, this.sessionId);
|
|
1755
|
+
if (!existingSession || existingSession.active !== true) {
|
|
1756
|
+
await storage.removeSession(this.identity, this.sessionId);
|
|
1757
|
+
}
|
|
1758
|
+
} catch {
|
|
1759
|
+
}
|
|
1758
1760
|
throw error;
|
|
1759
1761
|
}
|
|
1760
1762
|
}
|
|
@@ -1778,6 +1780,7 @@ var MCPClient = class _MCPClient {
|
|
|
1778
1780
|
const transportsToTry = this.transportType ? [this.transportType] : ["streamable_http", "sse"];
|
|
1779
1781
|
let lastError;
|
|
1780
1782
|
let tokensExchanged = false;
|
|
1783
|
+
let authenticatedStateEmitted = false;
|
|
1781
1784
|
for (const currentType of transportsToTry) {
|
|
1782
1785
|
const isLastAttempt = currentType === transportsToTry[transportsToTry.length - 1];
|
|
1783
1786
|
try {
|
|
@@ -1789,8 +1792,10 @@ var MCPClient = class _MCPClient {
|
|
|
1789
1792
|
} else {
|
|
1790
1793
|
this.emitProgress(`Tokens already exchanged, skipping auth step for ${currentType}...`);
|
|
1791
1794
|
}
|
|
1792
|
-
|
|
1793
|
-
|
|
1795
|
+
if (!authenticatedStateEmitted) {
|
|
1796
|
+
this.emitStateChange("AUTHENTICATED");
|
|
1797
|
+
authenticatedStateEmitted = true;
|
|
1798
|
+
}
|
|
1794
1799
|
this.emitProgress("Creating authenticated client...");
|
|
1795
1800
|
this.client = new index_js.Client(
|
|
1796
1801
|
{
|
|
@@ -1809,6 +1814,7 @@ var MCPClient = class _MCPClient {
|
|
|
1809
1814
|
);
|
|
1810
1815
|
this.emitStateChange("CONNECTING");
|
|
1811
1816
|
await this.client.connect(this.transport);
|
|
1817
|
+
this.transportType = currentType;
|
|
1812
1818
|
this.emitStateChange("CONNECTED");
|
|
1813
1819
|
console.log(`[MCPClient] Updating session ${this.sessionId} to 12hr TTL (OAuth complete)`);
|
|
1814
1820
|
await this.saveSession(SESSION_TTL_SECONDS, true);
|
|
@@ -2190,7 +2196,9 @@ var MCPClient = class _MCPClient {
|
|
|
2190
2196
|
* @returns Server name or undefined
|
|
2191
2197
|
*/
|
|
2192
2198
|
getServerName() {
|
|
2193
|
-
|
|
2199
|
+
const info = this.client?.getServerVersion();
|
|
2200
|
+
console.log("server info ->", info);
|
|
2201
|
+
return info?.title ?? info?.name ?? this.serverName;
|
|
2194
2202
|
}
|
|
2195
2203
|
/**
|
|
2196
2204
|
* Gets the server ID
|
|
@@ -2678,9 +2686,23 @@ var SSEConnectionManager = class {
|
|
|
2678
2686
|
if (existing) {
|
|
2679
2687
|
return existing;
|
|
2680
2688
|
}
|
|
2689
|
+
const session = await storage.getSession(this.identity, sessionId);
|
|
2690
|
+
if (!session) {
|
|
2691
|
+
throw new Error("Session not found");
|
|
2692
|
+
}
|
|
2681
2693
|
const client = new MCPClient({
|
|
2682
2694
|
identity: this.identity,
|
|
2683
|
-
sessionId
|
|
2695
|
+
sessionId,
|
|
2696
|
+
// These fields are optional in MCPClient, but when rehydrating a known
|
|
2697
|
+
// stored session on the server we pass them explicitly to preserve the
|
|
2698
|
+
// original transport/connection metadata instead of relying on lazy
|
|
2699
|
+
// reloading during initialize().
|
|
2700
|
+
serverId: session.serverId,
|
|
2701
|
+
serverName: session.serverName,
|
|
2702
|
+
serverUrl: session.serverUrl,
|
|
2703
|
+
callbackUrl: session.callbackUrl,
|
|
2704
|
+
transportType: session.transportType,
|
|
2705
|
+
headers: session.headers
|
|
2684
2706
|
});
|
|
2685
2707
|
client.onConnectionEvent((event) => this.emitConnectionEvent(event));
|
|
2686
2708
|
client.onObservabilityEvent((event) => this.sendEvent(event));
|
|
@@ -2737,6 +2759,16 @@ var SSEConnectionManager = class {
|
|
|
2737
2759
|
const client = new MCPClient({
|
|
2738
2760
|
identity: this.identity,
|
|
2739
2761
|
sessionId,
|
|
2762
|
+
// These fields are optional in MCPClient, but when rehydrating a known
|
|
2763
|
+
// stored session on the server we pass them explicitly to preserve the
|
|
2764
|
+
// original transport/connection metadata instead of relying on lazy
|
|
2765
|
+
// reloading during initialize().
|
|
2766
|
+
serverId: session.serverId,
|
|
2767
|
+
serverName: session.serverName,
|
|
2768
|
+
serverUrl: session.serverUrl,
|
|
2769
|
+
callbackUrl: session.callbackUrl,
|
|
2770
|
+
transportType: session.transportType,
|
|
2771
|
+
headers: session.headers,
|
|
2740
2772
|
...clientMetadata
|
|
2741
2773
|
});
|
|
2742
2774
|
client.onConnectionEvent((event) => this.emitConnectionEvent(event));
|
|
@@ -2769,7 +2801,21 @@ var SSEConnectionManager = class {
|
|
|
2769
2801
|
try {
|
|
2770
2802
|
const client = new MCPClient({
|
|
2771
2803
|
identity: this.identity,
|
|
2772
|
-
sessionId
|
|
2804
|
+
sessionId,
|
|
2805
|
+
// These fields are optional in MCPClient, but when rehydrating a known
|
|
2806
|
+
// stored session on the server we pass them explicitly to preserve the
|
|
2807
|
+
// original connection metadata instead of relying on lazy
|
|
2808
|
+
// reloading during initialize().
|
|
2809
|
+
serverId: session.serverId,
|
|
2810
|
+
serverName: session.serverName,
|
|
2811
|
+
serverUrl: session.serverUrl,
|
|
2812
|
+
callbackUrl: session.callbackUrl,
|
|
2813
|
+
// NOTE: transportType is intentionally omitted here.
|
|
2814
|
+
// The session's stored transportType is a placeholder ('streamable_http')
|
|
2815
|
+
// set before transport negotiation. Omitting it lets MCPClient auto-negotiate
|
|
2816
|
+
// (try streamable_http → SSE fallback), which is critical for servers like
|
|
2817
|
+
// Neon that only support SSE transport.
|
|
2818
|
+
headers: session.headers
|
|
2773
2819
|
});
|
|
2774
2820
|
client.onConnectionEvent((event) => this.emitConnectionEvent(event));
|
|
2775
2821
|
await client.finishAuth(code);
|