server.d.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. /**
  2. * Experimental server task features for MCP SDK.
  3. * WARNING: These APIs are experimental and may change without notice.
  4. *
  5. * @experimental
  6. */
  7. import type { Server } from '../../server/index.js';
  8. import type { RequestOptions } from '../../shared/protocol.js';
  9. import type { ResponseMessage } from '../../shared/responseMessage.js';
  10. import type { AnySchema, SchemaOutput } from '../../server/zod-compat.js';
  11. import type { ServerRequest, Notification, Request, Result, GetTaskResult, ListTasksResult, CancelTaskResult, CreateMessageRequestParams, CreateMessageResult, ElicitRequestFormParams, ElicitRequestURLParams, ElicitResult } from '../../types.js';
  12. /**
  13. * Experimental task features for low-level MCP servers.
  14. *
  15. * Access via `server.experimental.tasks`:
  16. * ```typescript
  17. * const stream = server.experimental.tasks.requestStream(request, schema, options);
  18. * ```
  19. *
  20. * For high-level server usage with task-based tools, use `McpServer.experimental.tasks` instead.
  21. *
  22. * @experimental
  23. */
  24. export declare class ExperimentalServerTasks<RequestT extends Request = Request, NotificationT extends Notification = Notification, ResultT extends Result = Result> {
  25. private readonly _server;
  26. constructor(_server: Server<RequestT, NotificationT, ResultT>);
  27. /**
  28. * Sends a request and returns an AsyncGenerator that yields response messages.
  29. * The generator is guaranteed to end with either a 'result' or 'error' message.
  30. *
  31. * This method provides streaming access to request processing, allowing you to
  32. * observe intermediate task status updates for task-augmented requests.
  33. *
  34. * @param request - The request to send
  35. * @param resultSchema - Zod schema for validating the result
  36. * @param options - Optional request options (timeout, signal, task creation params, etc.)
  37. * @returns AsyncGenerator that yields ResponseMessage objects
  38. *
  39. * @experimental
  40. */
  41. requestStream<T extends AnySchema>(request: ServerRequest | RequestT, resultSchema: T, options?: RequestOptions): AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>;
  42. /**
  43. * Sends a sampling request and returns an AsyncGenerator that yields response messages.
  44. * The generator is guaranteed to end with either a 'result' or 'error' message.
  45. *
  46. * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages
  47. * before the final result.
  48. *
  49. * @example
  50. * ```typescript
  51. * const stream = server.experimental.tasks.createMessageStream({
  52. * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],
  53. * maxTokens: 100
  54. * }, {
  55. * onprogress: (progress) => {
  56. * // Handle streaming tokens via progress notifications
  57. * console.log('Progress:', progress.message);
  58. * }
  59. * });
  60. *
  61. * for await (const message of stream) {
  62. * switch (message.type) {
  63. * case 'taskCreated':
  64. * console.log('Task created:', message.task.taskId);
  65. * break;
  66. * case 'taskStatus':
  67. * console.log('Task status:', message.task.status);
  68. * break;
  69. * case 'result':
  70. * console.log('Final result:', message.result);
  71. * break;
  72. * case 'error':
  73. * console.error('Error:', message.error);
  74. * break;
  75. * }
  76. * }
  77. * ```
  78. *
  79. * @param params - The sampling request parameters
  80. * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.)
  81. * @returns AsyncGenerator that yields ResponseMessage objects
  82. *
  83. * @experimental
  84. */
  85. createMessageStream(params: CreateMessageRequestParams, options?: RequestOptions): AsyncGenerator<ResponseMessage<CreateMessageResult>, void, void>;
  86. /**
  87. * Sends an elicitation request and returns an AsyncGenerator that yields response messages.
  88. * The generator is guaranteed to end with either a 'result' or 'error' message.
  89. *
  90. * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated'
  91. * and 'taskStatus' messages before the final result.
  92. *
  93. * @example
  94. * ```typescript
  95. * const stream = server.experimental.tasks.elicitInputStream({
  96. * mode: 'url',
  97. * message: 'Please authenticate',
  98. * elicitationId: 'auth-123',
  99. * url: 'https://example.com/auth'
  100. * }, {
  101. * task: { ttl: 300000 } // Task-augmented for long-running auth flow
  102. * });
  103. *
  104. * for await (const message of stream) {
  105. * switch (message.type) {
  106. * case 'taskCreated':
  107. * console.log('Task created:', message.task.taskId);
  108. * break;
  109. * case 'taskStatus':
  110. * console.log('Task status:', message.task.status);
  111. * break;
  112. * case 'result':
  113. * console.log('User action:', message.result.action);
  114. * break;
  115. * case 'error':
  116. * console.error('Error:', message.error);
  117. * break;
  118. * }
  119. * }
  120. * ```
  121. *
  122. * @param params - The elicitation request parameters
  123. * @param options - Optional request options (timeout, signal, task creation params, etc.)
  124. * @returns AsyncGenerator that yields ResponseMessage objects
  125. *
  126. * @experimental
  127. */
  128. elicitInputStream(params: ElicitRequestFormParams | ElicitRequestURLParams, options?: RequestOptions): AsyncGenerator<ResponseMessage<ElicitResult>, void, void>;
  129. /**
  130. * Gets the current status of a task.
  131. *
  132. * @param taskId - The task identifier
  133. * @param options - Optional request options
  134. * @returns The task status
  135. *
  136. * @experimental
  137. */
  138. getTask(taskId: string, options?: RequestOptions): Promise<GetTaskResult>;
  139. /**
  140. * Retrieves the result of a completed task.
  141. *
  142. * @param taskId - The task identifier
  143. * @param resultSchema - Zod schema for validating the result
  144. * @param options - Optional request options
  145. * @returns The task result
  146. *
  147. * @experimental
  148. */
  149. getTaskResult<T extends AnySchema>(taskId: string, resultSchema?: T, options?: RequestOptions): Promise<SchemaOutput<T>>;
  150. /**
  151. * Lists tasks with optional pagination.
  152. *
  153. * @param cursor - Optional pagination cursor
  154. * @param options - Optional request options
  155. * @returns List of tasks with optional next cursor
  156. *
  157. * @experimental
  158. */
  159. listTasks(cursor?: string, options?: RequestOptions): Promise<ListTasksResult>;
  160. /**
  161. * Cancels a running task.
  162. *
  163. * @param taskId - The task identifier
  164. * @param options - Optional request options
  165. *
  166. * @experimental
  167. */
  168. cancelTask(taskId: string, options?: RequestOptions): Promise<CancelTaskResult>;
  169. }
  170. //# sourceMappingURL=server.d.ts.map