Skip to content

feat: Add 2026-07-28 Tasks extension support #1120

Open

Description

@jirispilka

Problem

The server supports two protocol paths:

  • the 2025-11-25 legacy adapter supports the experimental Tasks API through @modelcontextprotocol/sdk 1.29.0
  • the 2026-07-28 stateless adapter uses @modelcontextprotocol/server 2.0.0 and does not support Tasks

The stateless adapter currently returns method-not-found for task methods. This is valid core-protocol behavior, but 2026 clients cannot use Apify's long-running task execution.

The 2026 Tasks extension is not compatible with the legacy experimental API:

  • task creation is server-directed
  • clients opt in through the io.modelcontextprotocol/tasks extension
  • clients poll with tasks/get
  • clients provide requested input through tasks/update
  • clients cancel with tasks/cancel
  • tasks/list does not exist

References:

Decision required

Confirm that the server should preserve long-running task support for 2026 clients.

If Tasks support is not required, close this issue. The stateless core implementation is already complete.

Before implementation, verify whether the TypeScript SDK provides an official Tasks-extension package or server integration. The currently installed v2 server package does not expose the required implementation. Do not implement the extension protocol manually without an explicit decision.

Scope

If Tasks support is required:

  • Add io.modelcontextprotocol/tasks extension negotiation to the stateless adapter.
  • Return task handles only when the client advertises the extension.
  • Define when the server chooses asynchronous execution for tools that currently support legacy tasks.
  • Implement tasks/get, tasks/update, and tasks/cancel.
  • Store terminal results or errors in the new extension shape.
  • Bind task access to the request's authenticated identity.
  • Preserve task durability across stateless requests.
  • Coordinate the task-store interface and Redis implementation with apify-mcp-server-internal.
  • Add the new protocol path without changing legacy task behavior.

Design questions

  • Which tools may be converted to Tasks when the client supports the extension?
  • When should an optional task-capable tool return a task instead of completing synchronously?
  • Does the official TypeScript implementation provide the required store and lifecycle hooks?
  • How are task IDs bound to authenticated users and payment context?
  • Do any current tools need the input_required state and tasks/update immediately?
  • Which clients currently support the extension?

Non-goals

  • Do not remove or change legacy tasks/list.
  • Do not make synchronous calls write to a task store.
  • Do not collapse the synchronous and task execution paths.
  • Do not modify the 2026 core adapter when the client has not advertised Tasks support.

Activity

  1. changed the title [-][spec] Migrate the task path to the 2026-07-28 tasks extension (stateless core, drop tasks/list)[/-] [+]feat: Add 2026-07-28 Tasks extension support[/+] on Aug 3, 2026
  2. vystrcild commented on Oct 26, 2026

    @vystrcild
    Collaborator

    Product decision: yes, we want Tasks on the 2026-07-28 path.

    What changed since July: Claude Code CLI supports the Tasks extension since 2.1.304, in beta (docs), and more Claude surfaces are announced. On the SDK side, 2.3.0 serves tasks/get and tasks/cancel, and full server support is in review (typescript-sdk#2782, typescript-sdk#2820).

    Proposal: start when typescript-sdk#2782 is released, not by hand. Scope as discussed internally on 24 Oct: long Actor runs first (apify-mcp-server#1119), durable results, cancel, no duplicate paid runs on retry. The store and idempotency part does not depend on the SDK and could start earlier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request.t-aiIssues owned by the AI team.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions