@mcp-ts/sdk 1.3.1 → 1.3.2

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.
Files changed (56) hide show
  1. package/README.md +132 -50
  2. package/dist/adapters/agui-adapter.d.mts +3 -3
  3. package/dist/adapters/agui-adapter.d.ts +3 -3
  4. package/dist/adapters/agui-middleware.d.mts +3 -3
  5. package/dist/adapters/agui-middleware.d.ts +3 -3
  6. package/dist/adapters/ai-adapter.d.mts +3 -3
  7. package/dist/adapters/ai-adapter.d.ts +3 -3
  8. package/dist/adapters/langchain-adapter.d.mts +3 -3
  9. package/dist/adapters/langchain-adapter.d.ts +3 -3
  10. package/dist/adapters/mastra-adapter.d.mts +3 -3
  11. package/dist/adapters/mastra-adapter.d.ts +3 -3
  12. package/dist/client/index.d.mts +4 -4
  13. package/dist/client/index.d.ts +4 -4
  14. package/dist/client/react.d.mts +5 -5
  15. package/dist/client/react.d.ts +5 -5
  16. package/dist/client/react.js +12 -1
  17. package/dist/client/react.js.map +1 -1
  18. package/dist/client/react.mjs +12 -1
  19. package/dist/client/react.mjs.map +1 -1
  20. package/dist/client/vue.d.mts +5 -5
  21. package/dist/client/vue.d.ts +5 -5
  22. package/dist/client/vue.js +11 -1
  23. package/dist/client/vue.js.map +1 -1
  24. package/dist/client/vue.mjs +11 -1
  25. package/dist/client/vue.mjs.map +1 -1
  26. package/dist/{events-BgeztGYZ.d.mts → events-CK3N--3g.d.mts} +2 -0
  27. package/dist/{events-BgeztGYZ.d.ts → events-CK3N--3g.d.ts} +2 -0
  28. package/dist/index.d.mts +3 -3
  29. package/dist/index.d.ts +3 -3
  30. package/dist/index.js +12 -11
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +12 -11
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/{multi-session-client-CxogNckF.d.mts → multi-session-client-B1DBx5yR.d.mts} +3 -10
  35. package/dist/{multi-session-client-cox_WXUj.d.ts → multi-session-client-DyFzyJUx.d.ts} +3 -10
  36. package/dist/server/index.d.mts +5 -5
  37. package/dist/server/index.d.ts +5 -5
  38. package/dist/server/index.js +12 -11
  39. package/dist/server/index.js.map +1 -1
  40. package/dist/server/index.mjs +12 -11
  41. package/dist/server/index.mjs.map +1 -1
  42. package/dist/shared/index.d.mts +3 -3
  43. package/dist/shared/index.d.ts +3 -3
  44. package/dist/shared/index.js.map +1 -1
  45. package/dist/shared/index.mjs.map +1 -1
  46. package/dist/{types-CLccx9wW.d.mts → types-PjM1W07s.d.mts} +1 -0
  47. package/dist/{types-CLccx9wW.d.ts → types-PjM1W07s.d.ts} +1 -0
  48. package/package.json +1 -1
  49. package/src/client/react/index.ts +16 -16
  50. package/src/client/react/use-mcp-apps.tsx +214 -214
  51. package/src/client/react/use-mcp.ts +15 -2
  52. package/src/client/vue/use-mcp.ts +14 -2
  53. package/src/server/handlers/sse-handler.ts +4 -0
  54. package/src/server/mcp/oauth-client.ts +10 -17
  55. package/src/shared/events.ts +2 -0
  56. package/src/shared/types.ts +1 -0
package/README.md CHANGED
@@ -106,12 +106,53 @@ export const { GET, POST } = createNextMcpHandler({
106
106
  // your logic here
107
107
  }
108
108
  });
109
- });
110
109
  ```
111
110
 
112
- ### Using with Vercel AI SDK
111
+ ### Client-Side (React)
112
+
113
+ ```typescript
114
+ 'use client';
115
+
116
+ import { useMcp } from '@mcp-ts/sdk/client/react';
117
+
118
+ function App() {
119
+ const { connections, connect } = useMcp({
120
+ url: '/api/mcp',
121
+ identity: 'user-123',
122
+ });
123
+
124
+ return (
125
+ <div className="flex flex-col items-center gap-4">
126
+ <button
127
+ onClick={() =>
128
+ connect({
129
+ serverId: 'my-server',
130
+ serverName: 'My MCP Server',
131
+ serverUrl: 'https://mcp.example.com',
132
+ callbackUrl: `${window.location.origin}/callback`,
133
+ })
134
+ }
135
+ >
136
+ Connect
137
+ </button>
138
+ {connections.map((conn) => (
139
+ <div key={conn.sessionId}>
140
+ <h3>{conn.serverName}</h3>
141
+ <p>State: {conn.state}</p>
142
+ <p>Tools: {conn.tools.length}</p>
143
+ </div>
144
+ ))}
145
+ </div>
146
+ );
147
+ }
148
+ ```
149
+
150
+ ### Adapters
113
151
 
114
- For advanced usage with `ai` SDK (e.g., `streamText`), use `MultiSessionClient` to aggregate tools from multiple servers.
152
+ Integrating with agent frameworks is simple using built-in adapters.
153
+
154
+ <details>
155
+ <summary>Vercel AI SDK</summary>
115
156
 
116
157
  ```typescript
117
158
  // app/api/chat/route.ts
@@ -132,63 +173,57 @@ export async function POST(req: Request) {
132
173
  messages,
133
174
  tools,
134
175
  onFinish: async () => {
135
- await mcp.disconnect();
176
+ await client.disconnect();
136
177
  }
137
178
  });
138
179
  return result.toDataStreamResponse();
139
180
  } catch (error) {
140
- await mcp.disconnect();
181
+ await client.disconnect();
141
182
  throw error;
142
183
  }
143
184
  }
144
185
  ```
145
186
 
146
- ### Client-Side (React)
147
-
148
- ```typescript
149
- 'use client';
150
-
151
- import { useMcp } from '@mcp-ts/sdk/client/react';
152
-
153
- function App() {
154
- const { connections, connect, status } = useMcp({
155
- url: '/api/mcp',
156
- identity: 'user-123',
157
- });
158
-
159
- return (
160
- <>
161
- <p>Status: {status}</p>
162
-
163
- <button
164
- onClick={() =>
165
- connect({
166
- serverId: 'my-server',
167
- serverName: 'My MCP Server',
168
- serverUrl: 'https://mcp.example.com',
169
- callbackUrl: `${window.location.origin}/callback`,
170
- })
171
- }
172
- >
173
- Connect
174
- </button>
175
-
176
- {connections.map((conn) => (
177
- <div key={conn.sessionId}>
178
- <h3>{conn.serverName}</h3>
179
- <p>State: {conn.state}</p>
180
- <p>Tools: {conn.tools.length}</p>
181
- </div>
182
- ))}
183
- </>
184
- );
185
- }
186
- ```
187
-
188
- ### <img src="docs/static/img/agent-framework/agui.webp" width="20" height="20" align="center" /> AG-UI Middleware
187
+ </details>
188
+
189
+ <details>
190
+ <summary>Agui Adapter</summary>
191
+
192
+ ```typescript
193
+ import { MultiSessionClient } from '@mcp-ts/sdk/server';
194
+ import { AguiAdapter } from '@mcp-ts/sdk/adapters/agui-adapter';
195
+
196
+ const client = new MultiSessionClient("user_123");
197
+ await client.connect();
198
+
199
+ const adapter = new AguiAdapter(client);
200
+ const tools = await adapter.getTools();
201
+ ```
202
+
203
+ </details>
204
+
205
+ <details>
206
+ <summary>Mastra Adapter</summary>
207
+
208
+ ```typescript
209
+ import { MultiSessionClient } from '@mcp-ts/sdk/server';
210
+ import { MastraAdapter } from '@mcp-ts/sdk/adapters/mastra-adapter';
211
+
212
+ const client = new MultiSessionClient("user_123");
213
+ await client.connect();
214
+
215
+ const tools = await MastraAdapter.getTools(client);
216
+ ```
217
+
218
+ </details>
219
+
220
+ ### AG-UI Middleware
189
221
 
190
222
  Execute MCP tools server-side when using remote agents (LangGraph, AutoGen, etc.):
191
223
 
224
+ <details>
225
+ <summary>View AG-UI (Agent Middleware)</summary>
226
+
192
227
  ```typescript
193
228
  import { HttpAgent } from "@ag-ui/client";
194
229
  import { AguiAdapter } from "@mcp-ts/sdk/adapters/agui-adapter";
@@ -211,8 +246,51 @@ agent.use(createMcpMiddleware({
211
246
  }));
212
247
  ```
213
248
 
249
+ </details>
250
+
214
251
  The middleware intercepts tool calls from remote agents, executes MCP tools server-side, and returns results back to the agent.
215
252
 
253
+ ### MCP Apps (SEP-1865)
254
+
255
+ Render interactive UIs for your tools using the `useMcpApps` hook.
256
+
257
+ <details>
258
+ <summary>View MCP Apps</summary>
259
+
260
+ ```typescript
261
+ import { useRenderToolCall } from "@copilotkit/react-core";
262
+ import { useMcpApps } from "@mcp-ts/sdk/client/react";
263
+ import { useMcpContext } from "./mcp";
264
+
265
+ export function ToolRenderer() {
266
+ const { mcpClient } = useMcpContext();
267
+ const { getAppMetadata, McpAppRenderer } = useMcpApps(mcpClient);
268
+
269
+ useRenderToolCall({
270
+ name: "*",
271
+ render: ({ name, args, result, status }) => {
272
+ const metadata = getAppMetadata(name);
273
+
274
+ if (!metadata) return null;
275
+
276
+ return (
277
+ <McpAppRenderer
278
+ metadata={metadata}
279
+ input={args}
280
+ result={result}
281
+ status={status}
282
+ sseClient={mcpClient.sseClient}
283
+ />
284
+ );
285
+ },
286
+ });
287
+
288
+ return null;
289
+ }
290
+ ```
291
+
292
+ </details>
293
+
216
294
  ## Documentation
217
295
 
218
296
  Full documentation is available at: **[Docs](https://zonlabs.github.io/mcp-ts/)**
@@ -316,9 +394,13 @@ For more details, refer to the documentation and follow the **installation guide
316
394
 
317
395
  Contributions are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on how to contribute.
318
396
 
319
- ## License
320
397
 
321
- MIT © MCP Assistant
398
+ <br />
399
+
400
+ <p align="center">
401
+ <em> Thanks for visiting ✨ @mcp-ts!</em><br><br>
402
+ <img src="https://visitor-badge.laobi.icu/badge?page_id=zonlabs.mcp-ts&style=for-the-badge&color=00d4ff" alt="Views">
403
+ </p>
322
404
 
323
405
 
324
406
 
@@ -1,8 +1,8 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CxogNckF.mjs';
2
- import '../events-BgeztGYZ.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B1DBx5yR.mjs';
2
+ import '../events-CK3N--3g.mjs';
3
3
  import '@modelcontextprotocol/sdk/types.js';
4
- import '@modelcontextprotocol/sdk/shared/auth.js';
5
4
  import '@modelcontextprotocol/sdk/client/auth.js';
5
+ import '@modelcontextprotocol/sdk/shared/auth.js';
6
6
 
7
7
  /**
8
8
  * MCP Adapter for AG-UI Integration
@@ -1,8 +1,8 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-cox_WXUj.js';
2
- import '../events-BgeztGYZ.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DyFzyJUx.js';
2
+ import '../events-CK3N--3g.js';
3
3
  import '@modelcontextprotocol/sdk/types.js';
4
- import '@modelcontextprotocol/sdk/shared/auth.js';
5
4
  import '@modelcontextprotocol/sdk/client/auth.js';
5
+ import '@modelcontextprotocol/sdk/shared/auth.js';
6
6
 
7
7
  /**
8
8
  * MCP Adapter for AG-UI Integration
@@ -2,11 +2,11 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.mjs';
5
- import '../multi-session-client-CxogNckF.mjs';
6
- import '../events-BgeztGYZ.mjs';
5
+ import '../multi-session-client-B1DBx5yR.mjs';
6
+ import '../events-CK3N--3g.mjs';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
- import '@modelcontextprotocol/sdk/shared/auth.js';
9
8
  import '@modelcontextprotocol/sdk/client/auth.js';
9
+ import '@modelcontextprotocol/sdk/shared/auth.js';
10
10
 
11
11
  /**
12
12
  * AG-UI Middleware for MCP Tool Execution
@@ -2,11 +2,11 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.js';
5
- import '../multi-session-client-cox_WXUj.js';
6
- import '../events-BgeztGYZ.js';
5
+ import '../multi-session-client-DyFzyJUx.js';
6
+ import '../events-CK3N--3g.js';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
- import '@modelcontextprotocol/sdk/shared/auth.js';
9
8
  import '@modelcontextprotocol/sdk/client/auth.js';
9
+ import '@modelcontextprotocol/sdk/shared/auth.js';
10
10
 
11
11
  /**
12
12
  * AG-UI Middleware for MCP Tool Execution
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CxogNckF.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B1DBx5yR.mjs';
2
2
  import { ToolSet } from 'ai';
3
- import '../events-BgeztGYZ.mjs';
3
+ import '../events-CK3N--3g.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface AIAdapterOptions {
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-cox_WXUj.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DyFzyJUx.js';
2
2
  import { ToolSet } from 'ai';
3
- import '../events-BgeztGYZ.js';
3
+ import '../events-CK3N--3g.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface AIAdapterOptions {
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CxogNckF.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B1DBx5yR.mjs';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
- import '../events-BgeztGYZ.mjs';
3
+ import '../events-CK3N--3g.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface LangChainAdapterOptions {
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-cox_WXUj.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DyFzyJUx.js';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
- import '../events-BgeztGYZ.js';
3
+ import '../events-CK3N--3g.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface LangChainAdapterOptions {
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CxogNckF.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B1DBx5yR.mjs';
2
2
  import { z } from 'zod';
3
- import '../events-BgeztGYZ.mjs';
3
+ import '../events-CK3N--3g.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface MastraAdapterOptions {
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-cox_WXUj.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DyFzyJUx.js';
2
2
  import { z } from 'zod';
3
- import '../events-BgeztGYZ.js';
3
+ import '../events-CK3N--3g.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
5
- import '@modelcontextprotocol/sdk/shared/auth.js';
6
5
  import '@modelcontextprotocol/sdk/client/auth.js';
6
+ import '@modelcontextprotocol/sdk/shared/auth.js';
7
7
 
8
8
  interface MastraAdapterOptions {
9
9
  /**
@@ -1,7 +1,7 @@
1
- import { M as McpConnectionEvent, d as McpObservabilityEvent, e as McpAppsUIEvent } from '../events-BgeztGYZ.mjs';
2
- export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, c as McpConnectionState } from '../events-BgeztGYZ.mjs';
3
- import { s as SessionListResult, e as ConnectParams, h as ConnectResult, j as DisconnectResult, n as ListToolsRpcResult, r as RestoreSessionResult, k as FinishAuthResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-CLccx9wW.mjs';
4
- export { p as McpRpcRequest, q as McpRpcResponse, T as ToolInfo } from '../types-CLccx9wW.mjs';
1
+ import { M as McpConnectionEvent, d as McpObservabilityEvent, e as McpAppsUIEvent } from '../events-CK3N--3g.mjs';
2
+ export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, c as McpConnectionState } from '../events-CK3N--3g.mjs';
3
+ import { s as SessionListResult, e as ConnectParams, h as ConnectResult, j as DisconnectResult, n as ListToolsRpcResult, r as RestoreSessionResult, k as FinishAuthResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-PjM1W07s.mjs';
4
+ export { p as McpRpcRequest, q as McpRpcResponse, T as ToolInfo } from '../types-PjM1W07s.mjs';
5
5
  import '@modelcontextprotocol/sdk/types.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { M as McpConnectionEvent, d as McpObservabilityEvent, e as McpAppsUIEvent } from '../events-BgeztGYZ.js';
2
- export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, c as McpConnectionState } from '../events-BgeztGYZ.js';
3
- import { s as SessionListResult, e as ConnectParams, h as ConnectResult, j as DisconnectResult, n as ListToolsRpcResult, r as RestoreSessionResult, k as FinishAuthResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-CLccx9wW.js';
4
- export { p as McpRpcRequest, q as McpRpcResponse, T as ToolInfo } from '../types-CLccx9wW.js';
1
+ import { M as McpConnectionEvent, d as McpObservabilityEvent, e as McpAppsUIEvent } from '../events-CK3N--3g.js';
2
+ export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, c as McpConnectionState } from '../events-CK3N--3g.js';
3
+ import { s as SessionListResult, e as ConnectParams, h as ConnectResult, j as DisconnectResult, n as ListToolsRpcResult, r as RestoreSessionResult, k as FinishAuthResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-PjM1W07s.js';
4
+ export { p as McpRpcRequest, q as McpRpcResponse, T as ToolInfo } from '../types-PjM1W07s.js';
5
5
  import '@modelcontextprotocol/sdk/types.js';
6
6
 
7
7
  /**
@@ -1,9 +1,9 @@
1
1
  import { SSEClient, AppHost } from './index.mjs';
2
2
  export { SSEClientOptions } from './index.mjs';
3
- import { c as McpConnectionState, M as McpConnectionEvent } from '../events-BgeztGYZ.mjs';
4
- export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, d as McpObservabilityEvent } from '../events-BgeztGYZ.mjs';
5
- import { T as ToolInfo, k as FinishAuthResult, n as ListToolsRpcResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-CLccx9wW.mjs';
6
- export { p as McpRpcRequest, q as McpRpcResponse } from '../types-CLccx9wW.mjs';
3
+ import { c as McpConnectionState, M as McpConnectionEvent } from '../events-CK3N--3g.mjs';
4
+ export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, d as McpObservabilityEvent } from '../events-CK3N--3g.mjs';
5
+ import { T as ToolInfo, k as FinishAuthResult, n as ListToolsRpcResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-PjM1W07s.mjs';
6
+ export { p as McpRpcRequest, q as McpRpcResponse } from '../types-PjM1W07s.mjs';
7
7
  import React$1 from 'react';
8
8
  import '@modelcontextprotocol/sdk/types.js';
9
9
 
@@ -64,7 +64,7 @@ interface McpConnection {
64
64
  state: McpConnectionState;
65
65
  tools: ToolInfo[];
66
66
  error?: string;
67
- connectedAt?: Date;
67
+ createdAt?: Date;
68
68
  }
69
69
  interface McpClient$1 {
70
70
  /**
@@ -1,9 +1,9 @@
1
1
  import { SSEClient, AppHost } from './index.js';
2
2
  export { SSEClientOptions } from './index.js';
3
- import { c as McpConnectionState, M as McpConnectionEvent } from '../events-BgeztGYZ.js';
4
- export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, d as McpObservabilityEvent } from '../events-BgeztGYZ.js';
5
- import { T as ToolInfo, k as FinishAuthResult, n as ListToolsRpcResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-CLccx9wW.js';
6
- export { p as McpRpcRequest, q as McpRpcResponse } from '../types-CLccx9wW.js';
3
+ import { c as McpConnectionState, M as McpConnectionEvent } from '../events-CK3N--3g.js';
4
+ export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, d as McpObservabilityEvent } from '../events-CK3N--3g.js';
5
+ import { T as ToolInfo, k as FinishAuthResult, n as ListToolsRpcResult, L as ListPromptsResult, l as ListResourcesResult } from '../types-PjM1W07s.js';
6
+ export { p as McpRpcRequest, q as McpRpcResponse } from '../types-PjM1W07s.js';
7
7
  import React$1 from 'react';
8
8
  import '@modelcontextprotocol/sdk/types.js';
9
9
 
@@ -64,7 +64,7 @@ interface McpConnection {
64
64
  state: McpConnectionState;
65
65
  tools: ToolInfo[];
66
66
  error?: string;
67
- connectedAt?: Date;
67
+ createdAt?: Date;
68
68
  }
69
69
  interface McpClient$1 {
70
70
  /**
@@ -390,16 +390,26 @@ function useMcp(options) {
390
390
  const existing = prev.find((c) => c.sessionId === event.sessionId);
391
391
  if (existing) {
392
392
  return prev.map(
393
- (c) => c.sessionId === event.sessionId ? { ...c, state: event.state } : c
393
+ (c) => c.sessionId === event.sessionId ? {
394
+ ...c,
395
+ state: event.state,
396
+ // update createdAt if present in event, otherwise keep existing
397
+ createdAt: event.createdAt ? new Date(event.createdAt) : c.createdAt
398
+ } : c
394
399
  );
395
400
  } else {
401
+ if (event.state === "DISCONNECTED") {
402
+ return prev;
403
+ }
396
404
  return [
397
405
  ...prev,
398
406
  {
399
407
  sessionId: event.sessionId,
400
408
  serverId: event.serverId,
401
409
  serverName: event.serverName,
410
+ serverUrl: event.serverUrl,
402
411
  state: event.state,
412
+ createdAt: event.createdAt ? new Date(event.createdAt) : void 0,
403
413
  tools: []
404
414
  }
405
415
  ];
@@ -454,6 +464,7 @@ function useMcp(options) {
454
464
  serverUrl: s.serverUrl,
455
465
  transport: s.transport,
456
466
  state: "VALIDATING",
467
+ createdAt: new Date(s.createdAt),
457
468
  tools: []
458
469
  }))
459
470
  );