MCP TypeScript SDK
    Preparing search index...

    Class ExperimentalMcpServerTasksExperimental

    Experimental task features for McpServer.

    Access via server.experimental.tasks:

    server.experimental.tasks.registerToolTask('long-running', config, handler);
    
    Index

    Constructors

    Methods

    Constructors

    Methods

    • Experimental

      Registers a task-based tool with a config object and handler.

      Task-based tools support long-running operations that can be polled for status and results. The handler must implement createTask, getTask, and getTaskResult methods.

      Type Parameters

      • OutputArgs extends AnySchema | ZodRawShapeCompat | undefined

      Parameters

      • name: string

        The tool name

      • config: {
            _meta?: Record<string, unknown>;
            annotations?: {
                destructiveHint?: boolean;
                idempotentHint?: boolean;
                openWorldHint?: boolean;
                readOnlyHint?: boolean;
                title?: string;
            };
            description?: string;
            execution?: TaskToolExecution;
            outputSchema?: OutputArgs;
            title?: string;
        }

        Tool configuration (description, schemas, etc.)

      • handler: ToolTaskHandler<undefined>

        Task handler with createTask, getTask, getTaskResult methods

      Returns RegisteredTool

      RegisteredTool for managing the tool's lifecycle

      server.experimental.tasks.registerToolTask('long-computation', {
      description: 'Performs a long computation',
      inputSchema: { input: z.string() },
      execution: { taskSupport: 'required' }
      }, {
      createTask: async (args, extra) => {
      const task = await extra.taskStore.createTask({ ttl: 300000 });
      startBackgroundWork(task.taskId, args);
      return { task };
      },
      getTask: async (args, extra) => {
      return extra.taskStore.getTask(extra.taskId);
      },
      getTaskResult: async (args, extra) => {
      return extra.taskStore.getTaskResult(extra.taskId);
      }
      });
    • Experimental

      Registers a task-based tool with a config object and handler.

      Task-based tools support long-running operations that can be polled for status and results. The handler must implement createTask, getTask, and getTaskResult methods.

      Type Parameters

      • InputArgs extends AnySchema | ZodRawShapeCompat
      • OutputArgs extends AnySchema | ZodRawShapeCompat | undefined

      Parameters

      • name: string

        The tool name

      • config: {
            _meta?: Record<string, unknown>;
            annotations?: {
                destructiveHint?: boolean;
                idempotentHint?: boolean;
                openWorldHint?: boolean;
                readOnlyHint?: boolean;
                title?: string;
            };
            description?: string;
            execution?: TaskToolExecution;
            inputSchema: InputArgs;
            outputSchema?: OutputArgs;
            title?: string;
        }

        Tool configuration (description, schemas, etc.)

      • handler: ToolTaskHandler<InputArgs>

        Task handler with createTask, getTask, getTaskResult methods

      Returns RegisteredTool

      RegisteredTool for managing the tool's lifecycle

      server.experimental.tasks.registerToolTask('long-computation', {
      description: 'Performs a long computation',
      inputSchema: { input: z.string() },
      execution: { taskSupport: 'required' }
      }, {
      createTask: async (args, extra) => {
      const task = await extra.taskStore.createTask({ ttl: 300000 });
      startBackgroundWork(task.taskId, args);
      return { task };
      },
      getTask: async (args, extra) => {
      return extra.taskStore.getTask(extra.taskId);
      },
      getTaskResult: async (args, extra) => {
      return extra.taskStore.getTaskResult(extra.taskId);
      }
      });