indusagi 0.12.13 → 0.12.15

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 (142) hide show
  1. package/dist/agent/tools/registry.d.ts +1 -1
  2. package/dist/agent/tools/registry.d.ts.map +1 -1
  3. package/dist/agent/types.d.ts +1 -0
  4. package/dist/agent/types.d.ts.map +1 -1
  5. package/dist/agent/types.js.map +1 -1
  6. package/dist/ai/models.generated.d.ts +621 -53
  7. package/dist/ai/models.generated.d.ts.map +1 -1
  8. package/dist/ai/models.generated.js +548 -0
  9. package/dist/ai/models.generated.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/mcp/client-pool.d.ts +106 -0
  15. package/dist/mcp/client-pool.d.ts.map +1 -0
  16. package/dist/mcp/client-pool.js +233 -0
  17. package/dist/mcp/client-pool.js.map +1 -0
  18. package/dist/mcp/client.d.ts +158 -0
  19. package/dist/mcp/client.d.ts.map +1 -0
  20. package/dist/mcp/client.js +586 -0
  21. package/dist/mcp/client.js.map +1 -0
  22. package/dist/mcp/config.d.ts +61 -0
  23. package/dist/mcp/config.d.ts.map +1 -0
  24. package/dist/mcp/config.js +250 -0
  25. package/dist/mcp/config.js.map +1 -0
  26. package/dist/mcp/errors.d.ts +104 -0
  27. package/dist/mcp/errors.d.ts.map +1 -0
  28. package/dist/mcp/errors.js +138 -0
  29. package/dist/mcp/errors.js.map +1 -0
  30. package/dist/mcp/index.d.ts +56 -0
  31. package/dist/mcp/index.d.ts.map +1 -0
  32. package/dist/mcp/index.js +83 -0
  33. package/dist/mcp/index.js.map +1 -0
  34. package/dist/mcp/schema-converter.d.ts +68 -0
  35. package/dist/mcp/schema-converter.d.ts.map +1 -0
  36. package/dist/mcp/schema-converter.js +230 -0
  37. package/dist/mcp/schema-converter.js.map +1 -0
  38. package/dist/mcp/server.d.ts +111 -0
  39. package/dist/mcp/server.d.ts.map +1 -0
  40. package/dist/mcp/server.js +300 -0
  41. package/dist/mcp/server.js.map +1 -0
  42. package/dist/mcp/tool-factory.d.ts +63 -0
  43. package/dist/mcp/tool-factory.d.ts.map +1 -0
  44. package/dist/mcp/tool-factory.js +228 -0
  45. package/dist/mcp/tool-factory.js.map +1 -0
  46. package/dist/mcp/types.d.ts +289 -0
  47. package/dist/mcp/types.d.ts.map +1 -0
  48. package/dist/mcp/types.js +8 -0
  49. package/dist/mcp/types.js.map +1 -0
  50. package/dist/mcp.d.ts +6 -0
  51. package/dist/mcp.d.ts.map +1 -0
  52. package/dist/mcp.js +6 -0
  53. package/dist/mcp.js.map +1 -0
  54. package/dist/memory/embedder/base.d.ts +41 -0
  55. package/dist/memory/embedder/base.d.ts.map +1 -0
  56. package/dist/memory/embedder/base.js +10 -0
  57. package/dist/memory/embedder/base.js.map +1 -0
  58. package/dist/memory/embedder/index.d.ts +8 -0
  59. package/dist/memory/embedder/index.d.ts.map +1 -0
  60. package/dist/memory/embedder/index.js +6 -0
  61. package/dist/memory/embedder/index.js.map +1 -0
  62. package/dist/memory/embedder/openai.d.ts +35 -0
  63. package/dist/memory/embedder/openai.d.ts.map +1 -0
  64. package/dist/memory/embedder/openai.js +103 -0
  65. package/dist/memory/embedder/openai.js.map +1 -0
  66. package/dist/memory/index.d.ts +33 -0
  67. package/dist/memory/index.d.ts.map +1 -0
  68. package/dist/memory/index.js +31 -0
  69. package/dist/memory/index.js.map +1 -0
  70. package/dist/memory/memory.d.ts +126 -0
  71. package/dist/memory/memory.d.ts.map +1 -0
  72. package/dist/memory/memory.js +280 -0
  73. package/dist/memory/memory.js.map +1 -0
  74. package/dist/memory/processors/base.d.ts +42 -0
  75. package/dist/memory/processors/base.d.ts.map +1 -0
  76. package/dist/memory/processors/base.js +6 -0
  77. package/dist/memory/processors/base.js.map +1 -0
  78. package/dist/memory/processors/index.d.ts +16 -0
  79. package/dist/memory/processors/index.d.ts.map +1 -0
  80. package/dist/memory/processors/index.js +18 -0
  81. package/dist/memory/processors/index.js.map +1 -0
  82. package/dist/memory/processors/message-history.d.ts +35 -0
  83. package/dist/memory/processors/message-history.d.ts.map +1 -0
  84. package/dist/memory/processors/message-history.js +51 -0
  85. package/dist/memory/processors/message-history.js.map +1 -0
  86. package/dist/memory/processors/observational-memory/index.d.ts +82 -0
  87. package/dist/memory/processors/observational-memory/index.d.ts.map +1 -0
  88. package/dist/memory/processors/observational-memory/index.js +234 -0
  89. package/dist/memory/processors/observational-memory/index.js.map +1 -0
  90. package/dist/memory/processors/observational-memory/observer-agent.d.ts +64 -0
  91. package/dist/memory/processors/observational-memory/observer-agent.d.ts.map +1 -0
  92. package/dist/memory/processors/observational-memory/observer-agent.js +362 -0
  93. package/dist/memory/processors/observational-memory/observer-agent.js.map +1 -0
  94. package/dist/memory/processors/observational-memory/reflector-agent.d.ts +38 -0
  95. package/dist/memory/processors/observational-memory/reflector-agent.d.ts.map +1 -0
  96. package/dist/memory/processors/observational-memory/reflector-agent.js +213 -0
  97. package/dist/memory/processors/observational-memory/reflector-agent.js.map +1 -0
  98. package/dist/memory/processors/observational-memory/token-counter.d.ts +35 -0
  99. package/dist/memory/processors/observational-memory/token-counter.d.ts.map +1 -0
  100. package/dist/memory/processors/observational-memory/token-counter.js +90 -0
  101. package/dist/memory/processors/observational-memory/token-counter.js.map +1 -0
  102. package/dist/memory/processors/semantic-recall.d.ts +55 -0
  103. package/dist/memory/processors/semantic-recall.d.ts.map +1 -0
  104. package/dist/memory/processors/semantic-recall.js +143 -0
  105. package/dist/memory/processors/semantic-recall.js.map +1 -0
  106. package/dist/memory/processors/working-memory.d.ts +41 -0
  107. package/dist/memory/processors/working-memory.d.ts.map +1 -0
  108. package/dist/memory/processors/working-memory.js +82 -0
  109. package/dist/memory/processors/working-memory.js.map +1 -0
  110. package/dist/memory/storage/base.d.ts +288 -0
  111. package/dist/memory/storage/base.d.ts.map +1 -0
  112. package/dist/memory/storage/base.js +211 -0
  113. package/dist/memory/storage/base.js.map +1 -0
  114. package/dist/memory/storage/index.d.ts +9 -0
  115. package/dist/memory/storage/index.d.ts.map +1 -0
  116. package/dist/memory/storage/index.js +7 -0
  117. package/dist/memory/storage/index.js.map +1 -0
  118. package/dist/memory/storage/inmemory.d.ts +93 -0
  119. package/dist/memory/storage/inmemory.d.ts.map +1 -0
  120. package/dist/memory/storage/inmemory.js +646 -0
  121. package/dist/memory/storage/inmemory.js.map +1 -0
  122. package/dist/memory/tools/working-memory.d.ts +100 -0
  123. package/dist/memory/tools/working-memory.d.ts.map +1 -0
  124. package/dist/memory/tools/working-memory.js +237 -0
  125. package/dist/memory/tools/working-memory.js.map +1 -0
  126. package/dist/memory/types.d.ts +386 -0
  127. package/dist/memory/types.d.ts.map +1 -0
  128. package/dist/memory/types.js +58 -0
  129. package/dist/memory/types.js.map +1 -0
  130. package/dist/memory/vector/base.d.ts +145 -0
  131. package/dist/memory/vector/base.d.ts.map +1 -0
  132. package/dist/memory/vector/base.js +83 -0
  133. package/dist/memory/vector/base.js.map +1 -0
  134. package/dist/memory/vector/index.d.ts +8 -0
  135. package/dist/memory/vector/index.d.ts.map +1 -0
  136. package/dist/memory/vector/index.js +7 -0
  137. package/dist/memory/vector/index.js.map +1 -0
  138. package/dist/memory/vector/inmemory.d.ts +47 -0
  139. package/dist/memory/vector/inmemory.d.ts.map +1 -0
  140. package/dist/memory/vector/inmemory.js +234 -0
  141. package/dist/memory/vector/inmemory.js.map +1 -0
  142. package/package.json +32 -2
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * as ai from "./ai.js";
2
2
  export * as agent from "./agent.js";
3
3
  export * as tui from "./tui.js";
4
+ export * as mcp from "./mcp.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * as ai from "./ai.js";
2
2
  export * as agent from "./agent.js";
3
3
  export * as tui from "./tui.js";
4
+ export * as mcp from "./mcp.js";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * MCP Client Pool
3
+ *
4
+ * Manages multiple MCP client connections.
5
+ * Provides centralized lifecycle management.
6
+ *
7
+ * Reference: @mastra/mcp packages/mcp/src/client/configuration.ts MCPClient class
8
+ */
9
+ import { MCPClient } from "./client.js";
10
+ import type { MCPConnectionOptions, MCPToolDefinition, MCPResource, MCPPrompt } from "./types.js";
11
+ /**
12
+ * Options for creating an MCP client pool.
13
+ */
14
+ export interface MCPClientPoolOptions {
15
+ /** List of server configurations */
16
+ servers: MCPConnectionOptions[];
17
+ }
18
+ /**
19
+ * Status of a connected server.
20
+ */
21
+ export interface MCPServerStatus {
22
+ /** Server name */
23
+ name: string;
24
+ /** Whether connected */
25
+ connected: boolean;
26
+ /** Number of tools available */
27
+ toolCount?: number;
28
+ /** Number of resources available */
29
+ resourceCount?: number;
30
+ /** Number of prompts available */
31
+ promptCount?: number;
32
+ }
33
+ /**
34
+ * MCP Client Pool - manages multiple MCP server connections.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const pool = new MCPClientPool({
39
+ * servers: [
40
+ * { name: "filesystem", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "."] } },
41
+ * { name: "github", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-github"] } },
42
+ * ],
43
+ * });
44
+ *
45
+ * await pool.connectAll();
46
+ * const status = pool.getStatus();
47
+ * await pool.disconnectAll();
48
+ * ```
49
+ */
50
+ export declare class MCPClientPool {
51
+ private options;
52
+ private clients;
53
+ private isConnecting;
54
+ constructor(options: MCPClientPoolOptions);
55
+ /**
56
+ * Connect to all configured servers.
57
+ *
58
+ * Errors for individual servers are logged but don't fail the entire operation.
59
+ */
60
+ connectAll(): Promise<void>;
61
+ /**
62
+ * Disconnect from all servers.
63
+ */
64
+ disconnectAll(): Promise<void>;
65
+ /**
66
+ * Get a specific client by name.
67
+ */
68
+ getClient(name: string): MCPClient | undefined;
69
+ /**
70
+ * Get all connected clients.
71
+ */
72
+ getAllClients(): MCPClient[];
73
+ /**
74
+ * Check if a client is connected.
75
+ */
76
+ isConnected(name: string): boolean;
77
+ /**
78
+ * Get status of all servers.
79
+ */
80
+ getStatus(): Promise<MCPServerStatus[]>;
81
+ /**
82
+ * Get all tools from all connected servers.
83
+ */
84
+ listAllTools(): Promise<Record<string, MCPToolDefinition[]>>;
85
+ /**
86
+ * Get all resources from all connected servers.
87
+ */
88
+ listAllResources(): Promise<Record<string, MCPResource[]>>;
89
+ /**
90
+ * Get all prompts from all connected servers.
91
+ */
92
+ listAllPrompts(): Promise<Record<string, MCPPrompt[]>>;
93
+ /**
94
+ * Reload all connections.
95
+ */
96
+ reload(): Promise<void>;
97
+ /**
98
+ * Add a new server connection.
99
+ */
100
+ addServer(config: MCPConnectionOptions): Promise<boolean>;
101
+ /**
102
+ * Remove a server connection.
103
+ */
104
+ removeServer(name: string): Promise<boolean>;
105
+ }
106
+ //# sourceMappingURL=client-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-pool.d.ts","sourceRoot":"","sources":["../../src/mcp/client-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGlG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IAIZ,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAAS;gBAET,OAAO,EAAE,oBAAoB;IAEjD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE;IAI5B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAsC7C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAiBlE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAiBhE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAiB5D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/D;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAgBnD"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * MCP Client Pool
3
+ *
4
+ * Manages multiple MCP client connections.
5
+ * Provides centralized lifecycle management.
6
+ *
7
+ * Reference: @mastra/mcp packages/mcp/src/client/configuration.ts MCPClient class
8
+ */
9
+ import { MCPClient } from "./client.js";
10
+ import { MCPError, MCPErrorCode } from "./errors.js";
11
+ /**
12
+ * MCP Client Pool - manages multiple MCP server connections.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const pool = new MCPClientPool({
17
+ * servers: [
18
+ * { name: "filesystem", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "."] } },
19
+ * { name: "github", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-github"] } },
20
+ * ],
21
+ * });
22
+ *
23
+ * await pool.connectAll();
24
+ * const status = pool.getStatus();
25
+ * await pool.disconnectAll();
26
+ * ```
27
+ */
28
+ export class MCPClientPool {
29
+ constructor(options) {
30
+ this.options = options;
31
+ this.clients = new Map();
32
+ this.isConnecting = false;
33
+ }
34
+ /**
35
+ * Connect to all configured servers.
36
+ *
37
+ * Errors for individual servers are logged but don't fail the entire operation.
38
+ */
39
+ async connectAll() {
40
+ if (this.isConnecting) {
41
+ throw new MCPError("Already connecting to servers", MCPErrorCode.CONNECTION_FAILED);
42
+ }
43
+ this.isConnecting = true;
44
+ try {
45
+ for (const serverConfig of this.options.servers) {
46
+ try {
47
+ const client = new MCPClient(serverConfig);
48
+ await client.connect();
49
+ this.clients.set(serverConfig.name, client);
50
+ console.log(`[MCP] Connected to ${serverConfig.name}`);
51
+ }
52
+ catch (error) {
53
+ console.error(`[MCP] Failed to connect to ${serverConfig.name}:`, error instanceof Error ? error.message : String(error));
54
+ // Continue with other servers - don't fail entirely
55
+ }
56
+ }
57
+ }
58
+ finally {
59
+ this.isConnecting = false;
60
+ }
61
+ }
62
+ /**
63
+ * Disconnect from all servers.
64
+ */
65
+ async disconnectAll() {
66
+ for (const [name, client] of this.clients) {
67
+ try {
68
+ await client.disconnect();
69
+ console.log(`[MCP] Disconnected from ${name}`);
70
+ }
71
+ catch (error) {
72
+ console.error(`[MCP] Error disconnecting from ${name}:`, error);
73
+ }
74
+ }
75
+ this.clients.clear();
76
+ }
77
+ /**
78
+ * Get a specific client by name.
79
+ */
80
+ getClient(name) {
81
+ return this.clients.get(name);
82
+ }
83
+ /**
84
+ * Get all connected clients.
85
+ */
86
+ getAllClients() {
87
+ return Array.from(this.clients.values());
88
+ }
89
+ /**
90
+ * Check if a client is connected.
91
+ */
92
+ isConnected(name) {
93
+ return this.clients.get(name)?.connected ?? false;
94
+ }
95
+ /**
96
+ * Get status of all servers.
97
+ */
98
+ async getStatus() {
99
+ const statuses = [];
100
+ for (const [name, client] of this.clients) {
101
+ const status = {
102
+ name,
103
+ connected: client.connected,
104
+ };
105
+ if (client.connected) {
106
+ try {
107
+ const tools = await client.listTools();
108
+ status.toolCount = tools.length;
109
+ }
110
+ catch {
111
+ // Ignore errors
112
+ }
113
+ try {
114
+ const resources = await client.listResources();
115
+ status.resourceCount = resources.length;
116
+ }
117
+ catch {
118
+ // Ignore errors
119
+ }
120
+ try {
121
+ const prompts = await client.listPrompts();
122
+ status.promptCount = prompts.length;
123
+ }
124
+ catch {
125
+ // Ignore errors
126
+ }
127
+ }
128
+ statuses.push(status);
129
+ }
130
+ return statuses;
131
+ }
132
+ /**
133
+ * Get all tools from all connected servers.
134
+ */
135
+ async listAllTools() {
136
+ const allTools = {};
137
+ for (const [name, client] of this.clients) {
138
+ if (client.connected) {
139
+ try {
140
+ allTools[name] = await client.listTools();
141
+ }
142
+ catch (error) {
143
+ console.error(`[MCP] Failed to list tools from ${name}:`, error);
144
+ allTools[name] = [];
145
+ }
146
+ }
147
+ }
148
+ return allTools;
149
+ }
150
+ /**
151
+ * Get all resources from all connected servers.
152
+ */
153
+ async listAllResources() {
154
+ const allResources = {};
155
+ for (const [name, client] of this.clients) {
156
+ if (client.connected) {
157
+ try {
158
+ allResources[name] = await client.listResources();
159
+ }
160
+ catch (error) {
161
+ console.error(`[MCP] Failed to list resources from ${name}:`, error);
162
+ allResources[name] = [];
163
+ }
164
+ }
165
+ }
166
+ return allResources;
167
+ }
168
+ /**
169
+ * Get all prompts from all connected servers.
170
+ */
171
+ async listAllPrompts() {
172
+ const allPrompts = {};
173
+ for (const [name, client] of this.clients) {
174
+ if (client.connected) {
175
+ try {
176
+ allPrompts[name] = await client.listPrompts();
177
+ }
178
+ catch (error) {
179
+ console.error(`[MCP] Failed to list prompts from ${name}:`, error);
180
+ allPrompts[name] = [];
181
+ }
182
+ }
183
+ }
184
+ return allPrompts;
185
+ }
186
+ /**
187
+ * Reload all connections.
188
+ */
189
+ async reload() {
190
+ await this.disconnectAll();
191
+ await this.connectAll();
192
+ }
193
+ /**
194
+ * Add a new server connection.
195
+ */
196
+ async addServer(config) {
197
+ if (this.clients.has(config.name)) {
198
+ console.warn(`[MCP] Server ${config.name} already exists`);
199
+ return false;
200
+ }
201
+ try {
202
+ const client = new MCPClient(config);
203
+ await client.connect();
204
+ this.clients.set(config.name, client);
205
+ console.log(`[MCP] Connected to ${config.name}`);
206
+ return true;
207
+ }
208
+ catch (error) {
209
+ console.error(`[MCP] Failed to connect to ${config.name}:`, error);
210
+ return false;
211
+ }
212
+ }
213
+ /**
214
+ * Remove a server connection.
215
+ */
216
+ async removeServer(name) {
217
+ const client = this.clients.get(name);
218
+ if (!client) {
219
+ return false;
220
+ }
221
+ try {
222
+ await client.disconnect();
223
+ this.clients.delete(name);
224
+ console.log(`[MCP] Disconnected from ${name}`);
225
+ return true;
226
+ }
227
+ catch (error) {
228
+ console.error(`[MCP] Error disconnecting from ${name}:`, error);
229
+ return false;
230
+ }
231
+ }
232
+ }
233
+ //# sourceMappingURL=client-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-pool.js","sourceRoot":"","sources":["../../src/mcp/client-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * MCP Client - Single Server Connection
3
+ *
4
+ * Manages connection to one MCP server and provides
5
+ * methods to list/call tools, read resources, etc.
6
+ *
7
+ * Reference: @mastra/mcp packages/mcp/src/client/client.ts InternalMastraMCPClient
8
+ */
9
+ import type { MCPServerConfig, MCPToolDefinition, MCPResource, MCPPrompt, MCPToolCallResult, MCPLogHandler, MCPProgressHandler, MCPElicitationHandler, MCPRoot } from "./types.js";
10
+ /**
11
+ * Options for creating an MCP client.
12
+ */
13
+ export interface MCPClientOptions {
14
+ /** Unique name for this client */
15
+ name: string;
16
+ /** Server connection configuration */
17
+ config: MCPServerConfig;
18
+ /** Optional timeout in milliseconds */
19
+ timeout?: number;
20
+ /** Optional log handler */
21
+ logger?: MCPLogHandler;
22
+ /** Whether to enable server logs (default: true) */
23
+ enableServerLogs?: boolean;
24
+ /** Whether to enable progress tracking (default: false) */
25
+ enableProgressTracking?: boolean;
26
+ /** Filesystem roots to expose to the server */
27
+ roots?: MCPRoot[];
28
+ }
29
+ /**
30
+ * MCP Client - manages connection to a single MCP server.
31
+ *
32
+ * Supports stdio transport (subprocess communication).
33
+ * Provides methods to list tools, call tools, read resources, etc.
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const client = new MCPClient({
38
+ * name: "filesystem",
39
+ * config: {
40
+ * command: "npx",
41
+ * args: ["-y", "@modelcontextprotocol/server-filesystem", "."],
42
+ * },
43
+ * });
44
+ *
45
+ * await client.connect();
46
+ * const tools = await client.listTools();
47
+ * const result = await client.callTool("read_file", { path: "./test.txt" });
48
+ * await client.disconnect();
49
+ * ```
50
+ */
51
+ export declare class MCPClient {
52
+ private options;
53
+ private process?;
54
+ private buffer;
55
+ private messageId;
56
+ private pendingRequests;
57
+ private isConnected;
58
+ private connectionPromise;
59
+ private serverCapabilities?;
60
+ private logHandler?;
61
+ private enableServerLogs;
62
+ private enableProgressTracking;
63
+ private _roots;
64
+ /** Server name */
65
+ readonly serverName: string;
66
+ /** Server config */
67
+ readonly config: MCPServerConfig;
68
+ /** Request timeout */
69
+ readonly timeout: number;
70
+ constructor(options: MCPClientOptions);
71
+ /**
72
+ * Connect to the MCP server.
73
+ * Safe to call multiple times - returns existing connection if already connected.
74
+ */
75
+ connect(): Promise<void>;
76
+ private doConnect;
77
+ private connectHttp;
78
+ private connectStdio;
79
+ /**
80
+ * Disconnect from the MCP server.
81
+ */
82
+ disconnect(): Promise<void>;
83
+ /**
84
+ * Whether the client is connected.
85
+ */
86
+ get connected(): boolean;
87
+ /**
88
+ * List all tools available from the server.
89
+ */
90
+ listTools(): Promise<MCPToolDefinition[]>;
91
+ /**
92
+ * Call a tool on the server.
93
+ */
94
+ callTool(name: string, args: Record<string, unknown>): Promise<MCPToolCallResult>;
95
+ /**
96
+ * List all resources available from the server.
97
+ */
98
+ listResources(): Promise<MCPResource[]>;
99
+ /**
100
+ * Read a resource from the server.
101
+ */
102
+ readResource(uri: string): Promise<unknown>;
103
+ /**
104
+ * Subscribe to resource updates.
105
+ */
106
+ subscribeResource(uri: string): Promise<void>;
107
+ /**
108
+ * Unsubscribe from resource updates.
109
+ */
110
+ unsubscribeResource(uri: string): Promise<void>;
111
+ /**
112
+ * List all prompts available from the server.
113
+ */
114
+ listPrompts(): Promise<MCPPrompt[]>;
115
+ /**
116
+ * Get a prompt from the server.
117
+ */
118
+ getPrompt(name: string, args?: Record<string, unknown>): Promise<unknown>;
119
+ /**
120
+ * Get the configured roots.
121
+ */
122
+ get roots(): MCPRoot[];
123
+ /**
124
+ * Update the roots and notify the server.
125
+ */
126
+ setRoots(roots: MCPRoot[]): Promise<void>;
127
+ /**
128
+ * Set a handler for resource updated notifications.
129
+ */
130
+ setResourceUpdatedHandler(handler: (params: {
131
+ uri: string;
132
+ }) => void): void;
133
+ /**
134
+ * Set a handler for resource list changed notifications.
135
+ */
136
+ setResourceListChangedHandler(handler: () => void): void;
137
+ /**
138
+ * Set a handler for prompt list changed notifications.
139
+ */
140
+ setPromptListChangedHandler(handler: () => void): void;
141
+ /**
142
+ * Set a handler for elicitation requests.
143
+ */
144
+ setElicitationHandler(handler: MCPElicitationHandler): void;
145
+ /**
146
+ * Set a handler for progress notifications.
147
+ */
148
+ setProgressHandler(handler: MCPProgressHandler): void;
149
+ private ensureConnected;
150
+ private sendRequest;
151
+ private sendHttpRequest;
152
+ private sendNotification;
153
+ private processBuffer;
154
+ private handleMessage;
155
+ private handleNotification;
156
+ private log;
157
+ }
158
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}