github / github/copilot-cli

Support MCP 2026-07-28 Multi Round-Trip Requests (input_required)

未关闭
#4,834 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

triage
主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

描述

Describe the feature or problem you'd like to solve

Copilot does not support the protocol version 2026-07-28 and thus MRTR for URL elicitation fail for server not supporting legacy (2025-era) fallback

Proposed solution

Copilot CLI should support the MCP 2026-07-28 Multi Round-Trip Request (MRTR) mechanism, including input_required, requestState, and URL-mode elicitation.

Problem

I am running Copilot CLI 1.0.83 against an MCP server that implements only MCP 2026-07-28 (1.0.83 is the latest version of Copilot at the time of writing). The server has legacy MCP compatibility disabled and therefore does not support the 2025-era server --> client elicitation mechanism.

Expected behavior

For a 2026-07-28 MCP connection, Copilot CLI should:

  • send protocol version 2026-07-28 on initialize
  • Receive resultType: "input_required" from tools/call.
  • Handle the embedded URL elicitation and present/launch the URL for the user.
  • Collect the result of the elicitation.
  • Retry the original tools/call as a new JSON-RPC request.

Actual behavior

With Copilot CLI 1.0.83, the client sends protocol version 2025-11-25 on initialize.

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
        "protocolVersion": "2025-11-25",
        "capabilities": {
            "sampling": {},
            "elicitation": {
                "form": {},
                "url": {}
            }
        },
        "clientInfo": {
            "name": "copilot-cli",
            "version": "0.0.0"
        }
    }
}

(interesting: clientInfo states 0.0.0 instead of 1.0.83)

Subsequently, Copilot sends notifications/initialized and tools/list:

{
    "jsonrpc": "2.0",
    "method": "notifications/initialized"
}
{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": {
        "_meta": {
            "progressToken": 0
        }
    }
}

Then, I ask for a tool called url_elicitation. Copilot sends the payload:

{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools/call",
    "params": {
        "_meta": {
            "progressToken": 0
        },
        "arguments": {},
        "name": "url_elicitation"
    }
}

MCP server responds with the error as the tool handler returns input-required result which is not supported by protocol 2025-11-25:

{
    "jsonrpc": "2.0",
    "id": 4,
    "error": {
        "code": -32603,
        "message": "Handler for tools/call returned an input-required result, but this request is served on protocol revision 2025-11-25, which has no input_required vocabulary"
    }
}

Note that the request headers set by Copilot include:
"mcp-protocol-version": "2025-11-25".

Note that the MCP server intentionally has the legacy compatibility/shim disabled.

Requested support

Please add native Copilot CLI support for:

  • MCP protocol 2026-07-28
  • Multi Round-Trip Requests (MRTR)
  • requestState round-tripping
  • URL-mode elicitation
  • Retrying tools/call after elicitation

Please provide info about the roadmap.

Example prompts or workflows

No response

Additional context

No response

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先跟踪 issue 中描述的 MCP initialize 和 tools/call 入口点,包括协议版本协商和 URL 模式的 elicitation。验证 input_required 和 requestState 的表示方式,然后确认在收集 elicitation 结果后,原始 tools/call 会作为新的 JSON-RPC 请求重试。

由索引模型根据 Issue 内容生成。

评估

领域
api
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
活跃
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。