Repository navigation
Description
Version: Insiders
Feature :issue_write form in VS Code
Feedback:
Summary
When issue_write opens its MCP App form in VS Code agent mode, the form shows this error at the top:
-32020: header mismatch: missing Mcp-Param-owner header
The error clears on its own, and submitting the issue still works. It happens on almost every form we open.
Environment
VS Code 1.146.0 (commit 69047191fc427f2f92828279aae1d90d8eeda7ab, x64), Windows
Chat running through the Copilot agent host ("copilotcli" harness)
MCP server: GitHub remote MCP server (HTTP), hosted on a GHE.com tenant
Steps to reproduce
- In agent mode, ask the agent to file an issue so that it calls
issue_writewithmethod: "create",owner,repo,titleandbody. - The form renders fine.
- Fill in the form and submit. An error is raised;
-32020: header mismatch: missing Mcp-Param-owner header - Click submit again - the error goes away and issue is submitted.
Analysis
When the form loads, it calls back to the server through the MCP Apps bridge (app.callServerTool) to fetch labels, assignees, milestones, issue types and custom issue fields (ui_get). The submit call (issue_write) works, so the failure is in one or more of those ui_get lookups. Those calls start inside the form rather than from the model, and they appear to reach the server without the Mcp-Param-owner and Mcp-Param-repo headers that the server now requires on repo-scoped calls.
One detail worth checking: ui_get with method: "issue_types" sends only owner, while the other lookups send both owner and repo.
[Impact: the Labels, Assignees, Milestone or Type dropdown was empty, or nothing visibly broke.]
Expected
The form's own lookups succeed, or a failed lookup degrades quietly (for example, an empty dropdown) instead of showing a raw JSON-RPC error and stack trace to the user.
Related
- [github/github-mcp-server#3311](Mcp-Param-* projection is enforced regardless of negotiated protocol version, breaking 2025-11-25 clients since v1.12.0 #3311), about the server enforcing the headers regardless of negotiated protocol version. It was closed after the maintainers couldn't reproduce it.
- [chatboxai/chatbox#4007]([BUG] GitHub MCP (api.githubcopilot.com): every repo-scoped tool fails with "header mismatch: missing Mcp-Param-owner header" under Protocol Mode Auto; Legacy mode works chatboxai/chatbox#4007), the same error in another client.
- [modelcontextprotocol/typescript-sdk#2639]([v2] No supported way to emit Mcp-Param-* headers on a legacy-era connection, but GitHub's hosted server requires them there modelcontextprotocol/typescript-sdk#2639), which says there's no supported way to send these headers on an older-protocol connection.
Agent Host Log
[info] MCP server '<github-server>' pending (starting)
[error] [ProtocolServer] mcp:// request 'tools/call' on mcp://copilotcli/<chat>/<github-server> failed
Request session.mcp.apps.callTool failed with message: MCP tools/call failed for <github-server>/ui_get:
MCP request failed: MCP transport closed before the tool responded (x3)
[info] MCP server '<github-server>' connected (ready)
[error] [ProtocolServer] mcp:// request 'tools/call' on mcp://copilotcli/<chat>/<github-server> failed
Request session.mcp.apps.callTool failed with message: MCP tools/call failed for <github-server>/ui_get:
McpError: MCP error -32020: header mismatch: missing Mcp-Param-owner header for parameter "owner"
[info] MCP server '<github-server>' requires authentication
[info] MCP server '<github-server>' not_configured (stopped)
[error] [ProtocolServer] ... MCP tools/call failed for <github-server>/issue_write:
McpError: MCP error -32020: header mismatch: missing Mcp-Param-owner header for parameter "owner"
Renderer Log
[warning] [RemoteAgentHostProtocol] Request failed: {"code":-32603,"message":"Error: Request session.mcp.apps.callTool failed ...
MCP tools/call failed for <github-server>/ui_get: McpError: MCP error -32020: header mismatch:
missing Mcp-Param-owner header for parameter \"owner\""}
[error] [MCP App] Error handling tools/call: ... <github-server>/ui_get ... -32020 ... missing Mcp-Param-owner header
Activity
fix(inventory): keep app-only typed tools off Mcp-Param headers