Forward caller metadata on MCP resource reads (#59509)

## What changed

Accept an optional `_meta` object on `mcpServer/resource/read` and forward it to MCP `resources/read`, including reads bound to an originating tool call. Update the protocol schemas and generated TypeScript and Python types.

Reject caller metadata containing host-owned `threadId`, `x-codex-turn-metadata`, or `codex/connectionLease` keys. For `codex_apps`, also reserve `connector_id`, `link_id`, and `_codex_apps.resource_uri` to preserve app and account routing.

## Testing

Add integration coverage for metadata forwarding through stdio, hosted app reads with and without a thread, and origin-bound widget reads. Cover rejection of reserved keys and non-object metadata.

GitOrigin-RevId: 227ee0fb5fe15fa2ff2ec66d4d5ae16de8935a8c
This commit is contained in:
Joe Savona
2026-11-04 22:55:22 +00:00
committed by copyberry
parent ad5e6e57a1
commit aa1399cbcd
22 changed files with 279 additions and 40 deletions
@@ -9197,6 +9197,13 @@ class McpResourceReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[
dict[str, Any] | None,
Field(
alias="_meta",
description="Additional MCP request metadata. Account and turn routing keys are reserved.",
),
] = None
connector_id: Annotated[str | None, Field(alias="connectorId")] = None
origin_call_id: Annotated[
str | None,