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.
hi — field report from gemini-research-mcp, a production mcp server using
fastmcp[tasks]withTaskConfig(mode="required").what we observe
copilot cli (v1.0.18) does not declare
capabilities.tasksduring mcp client initialization. when an mcp server exposes a tool withTaskConfig(mode="required"), the call is rejected:the same server and tools work correctly in vs code copilot chat, which negotiates task capabilities via
task: shouldUseTask ? {} : undefinedinmcpServer.ts.impact
TaskConfig(mode="optional")as a workaround, losing progress reporting and timeout resilienceevidence
copilot cli:
capabilities.tasksin client init → server rejectstools/callwith-32600vs code refs (working):
mcpServer.ts#L1057-L1088— progressToken + shouldUseTask logicmcpServerRequestHandler.ts#L365-L384— notifications/progress forwardedserver refs (gemini-research-mcp):
server.py#L570-L572—task=TaskConfig(mode="required")server.py#L685-L688—ctx.report_progress()for status updatesmcp spec:
2025-11-25spec update (experimental)fastmcp[tasks]>=3.0.2with docket-based task routingrequest
add
capabilities.tasksnegotiation to copilot cli's mcp client, and useclient.experimental.tasks.callToolStream()for tools that require task-based execution. this brings parity with vs code copilot chat and unblocks long-running mcp tools.