@mcp-ts/sdk 1.5.2 → 1.6.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.
Files changed (52) hide show
  1. package/README.md +89 -27
  2. package/dist/adapters/agui-adapter.d.mts +1 -1
  3. package/dist/adapters/agui-adapter.d.ts +1 -1
  4. package/dist/adapters/agui-adapter.js +76 -19
  5. package/dist/adapters/agui-adapter.js.map +1 -1
  6. package/dist/adapters/agui-adapter.mjs +76 -19
  7. package/dist/adapters/agui-adapter.mjs.map +1 -1
  8. package/dist/adapters/agui-middleware.d.mts +5 -1
  9. package/dist/adapters/agui-middleware.d.ts +5 -1
  10. package/dist/adapters/agui-middleware.js +116 -49
  11. package/dist/adapters/agui-middleware.js.map +1 -1
  12. package/dist/adapters/agui-middleware.mjs +117 -50
  13. package/dist/adapters/agui-middleware.mjs.map +1 -1
  14. package/dist/adapters/ai-adapter.d.mts +1 -1
  15. package/dist/adapters/ai-adapter.d.ts +1 -1
  16. package/dist/adapters/ai-adapter.js +76 -19
  17. package/dist/adapters/ai-adapter.js.map +1 -1
  18. package/dist/adapters/ai-adapter.mjs +76 -19
  19. package/dist/adapters/ai-adapter.mjs.map +1 -1
  20. package/dist/adapters/langchain-adapter.d.mts +1 -1
  21. package/dist/adapters/langchain-adapter.d.ts +1 -1
  22. package/dist/adapters/langchain-adapter.js +76 -19
  23. package/dist/adapters/langchain-adapter.js.map +1 -1
  24. package/dist/adapters/langchain-adapter.mjs +76 -19
  25. package/dist/adapters/langchain-adapter.mjs.map +1 -1
  26. package/dist/client/react.js.map +1 -1
  27. package/dist/client/react.mjs.map +1 -1
  28. package/dist/index.d.mts +2 -2
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +207 -43
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +207 -44
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/server/index.js +1 -3
  35. package/dist/server/index.js.map +1 -1
  36. package/dist/server/index.mjs +1 -3
  37. package/dist/server/index.mjs.map +1 -1
  38. package/dist/shared/index.d.mts +15 -8
  39. package/dist/shared/index.d.ts +15 -8
  40. package/dist/shared/index.js +206 -40
  41. package/dist/shared/index.js.map +1 -1
  42. package/dist/shared/index.mjs +206 -41
  43. package/dist/shared/index.mjs.map +1 -1
  44. package/dist/{tool-router-DsKhRmJm.d.ts → tool-router-Bn9R0KWr.d.ts} +56 -7
  45. package/dist/{tool-router-DK0RJblO.d.mts → tool-router-_O2tIwf7.d.mts} +56 -7
  46. package/package.json +5 -3
  47. package/src/adapters/agui-middleware.ts +163 -59
  48. package/src/server/mcp/oauth-client.ts +4 -4
  49. package/src/shared/index.ts +4 -0
  50. package/src/shared/meta-tools.ts +172 -37
  51. package/src/shared/tool-index.ts +123 -7
  52. package/src/shared/tool-router.ts +40 -7
@@ -28,10 +28,20 @@
28
28
 
29
29
  import type { Tool } from '@modelcontextprotocol/sdk/types.js';
30
30
  import type { ToolClient, ToolClientProvider } from './types.js';
31
- import { ToolIndex, type IndexedTool, type ToolSummary, type EmbedFn } from './tool-index.js';
31
+ import {
32
+ ToolIndex,
33
+ type IndexedTool,
34
+ type ToolLookupOptions,
35
+ type ToolListResult,
36
+ type ToolSearchOptions,
37
+ type ToolServerSummary,
38
+ type ToolSummary,
39
+ type EmbedFn,
40
+ } from './tool-index.js';
32
41
  import { SchemaCompressor, type CompactTool } from './schema-compressor.js';
33
42
  import {
34
43
  createSearchToolDefinition,
44
+ createListServersToolDefinition,
35
45
  createRegexSearchToolDefinition,
36
46
  createGetSchemaToolDefinition,
37
47
  createExecuteToolDefinition,
@@ -159,7 +169,7 @@ export class ToolRouter {
159
169
  * This is the main method adapters should call.
160
170
  *
161
171
  * - `all` → returns all tools (unchanged behavior)
162
- * - `search` → returns only meta-tools (mcp_search_tool_bm25, mcp_get_tool_schema, mcp_execute_tool)
172
+ * - `search` → returns only meta-tools (mcp_search_tools, mcp_get_tool_schema, mcp_execute_tool)
163
173
  * - `groups` → returns tools from active groups only
164
174
  */
165
175
  async getFilteredTools(): Promise<Tool[]> {
@@ -195,9 +205,14 @@ export class ToolRouter {
195
205
  * Search tools by natural-language query.
196
206
  * Works regardless of strategy.
197
207
  */
198
- async searchTools(query: string, topK?: number): Promise<ToolSummary[]> {
208
+ async searchTools(
209
+ query: string,
210
+ topK?: number,
211
+ options: ToolSearchOptions = {}
212
+ ): Promise<ToolSummary[]> {
199
213
  await this.ensureInitialized();
200
- return this.index.search(query, topK ?? this.maxTools);
214
+ const limit = topK ?? this.maxTools;
215
+ return this.index.search(query, limit, options);
201
216
  }
202
217
 
203
218
  /**
@@ -209,12 +224,28 @@ export class ToolRouter {
209
224
  return this.index.searchRegex(pattern, topK ?? this.maxTools);
210
225
  }
211
226
 
227
+ /** List connected MCP servers with indexed tool counts. */
228
+ async listServers(options: ToolSearchOptions = {}): Promise<ToolServerSummary[]> {
229
+ await this.ensureInitialized();
230
+ return this.index.listServers(options);
231
+ }
232
+
233
+ /** List tools deterministically, optionally scoped to a server. */
234
+ async listTools(options: ToolSearchOptions & { limit?: number; cursor?: string } = {}): Promise<ToolListResult> {
235
+ await this.ensureInitialized();
236
+ return this.index.listTools(options);
237
+ }
238
+
212
239
  /**
213
240
  * Get the full tool definition by name.
214
241
  * If tool name is ambiguous, use namespace to specify the server.
215
242
  */
216
- getToolSchema(toolName: string, namespace?: string): IndexedTool | undefined {
217
- const matches = this.index.getTool(toolName, namespace);
243
+ getToolSchema(
244
+ toolName: string,
245
+ namespace?: string,
246
+ options: ToolLookupOptions = {}
247
+ ): IndexedTool | undefined {
248
+ const matches = this.index.getTool(toolName, namespace, options);
218
249
 
219
250
  if (matches.length === 0) return undefined;
220
251
 
@@ -318,7 +349,7 @@ export class ToolRouter {
318
349
  throw new Error(
319
350
  `Tool "${toolName}" not found${
320
351
  namespace ? ` on server "${namespace}"` : ''
321
- }. Use mcp_search_tool_bm25 or mcp_search_tool_regex to discover available tools.`
352
+ }. Use mcp_search_tools or mcp_search_tool_regex to discover available tools.`
322
353
  );
323
354
  }
324
355
 
@@ -462,9 +493,11 @@ export class ToolRouter {
462
493
  private getMetaToolDefinitions(): Tool[] {
463
494
  return [
464
495
  createSearchToolDefinition(),
496
+ createListServersToolDefinition(),
465
497
  createRegexSearchToolDefinition(),
466
498
  createGetSchemaToolDefinition(),
467
499
  createExecuteToolDefinition(),
468
500
  ];
469
501
  }
502
+
470
503
  }