Skip to content

mcp tasks: add capabilities.tasks negotiation for task-mode tools #2538

@gfortaine

Description

@gfortaine

hi — field report from gemini-research-mcp, a production mcp server using fastmcp[tasks] with TaskConfig(mode="required").

what we observe

copilot cli (v1.0.18) does not declare capabilities.tasks during mcp client initialization. when an mcp server exposes a tool with TaskConfig(mode="required"), the call is rejected:

McpError: MCP error -32600: Tool "research_deep" requires task-based execution.
Use client.experimental.tasks.callToolStream() instead.

the same server and tools work correctly in vs code copilot chat, which negotiates task capabilities via task: shouldUseTask ? {} : undefined in mcpServer.ts.

impact

  • mcp servers using task mode for long-running operations (3-20 min) cannot be invoked from copilot cli
  • server authors must downgrade to TaskConfig(mode="optional") as a workaround, losing progress reporting and timeout resilience
  • parity gap with vs code copilot chat

evidence

copilot cli:

  • no capabilities.tasks in client init → server rejects tools/call with -32600

vs code refs (working):

server refs (gemini-research-mcp):

mcp spec:

  • tasks introduced in 2025-11-25 spec update (experimental)
  • fastmcp implementation: fastmcp[tasks]>=3.0.2 with docket-based task routing

request

add capabilities.tasks negotiation to copilot cli's mcp client, and use client.experimental.tasks.callToolStream() for tools that require task-based execution. this brings parity with vs code copilot chat and unblocks long-running mcp tools.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:mcpMCP server configuration, discovery, connectivity, OAuth, policy, and registry

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions