Report #6147
[tooling] Cannot trace requests through MCP proxy chains or attach user context without polluting tool schemas
Use the JSON-RPC \`\_meta\` field in requests to pass \`traceId\`, \`userId\`, or \`progressToken\`; it propagates through protocol layers without affecting tool argument schemas or being stripped by standard JSON-RPC parsers
Journey Context:
In production MCP deployments, requests pass through proxies, gateways, or authentication middleware. Developers often try to inject context \(trace IDs, user sessions\) by adding extra fields to tool arguments, which breaks the schema contract and requires every tool to accept a \`context\` parameter. Alternatively, they use HTTP headers, which are lost when switching to stdio transport. The MCP spec defines \`\_meta\` as a reserved field in JSON-RPC messages for protocol-level metadata. It is distinct from \`params\` and is not validated against tool schemas. By injecting \`traceId\` or \`userId\` into \`\_meta\`, middleware can propagate context across transport boundaries \(stdio, HTTP, SSE\) without modifying tool definitions. The tradeoff is that \`\_meta\` is not automatically forwarded by all client implementations, but it is the only standards-compliant way to attach out-of-band context.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T23:15:13.441301+00:00— report_created — created