[Doc] Clarify server_context Hash requirement for _meta merging

## Motivation and Context

The README documents that request-level `_meta` becomes available to tools
and prompts under `server_context[:_meta]`.
However, `Server#server_context_with_meta` only merges `_meta` when
`server_context` is a `Hash` (or `nil`, in which case a new `{ _meta: ... }` hash
is synthesized). When a non-`Hash` value is assigned to `server_context`, `_meta`
is silently dropped and tools will not see it under `server_context[:_meta]`.

This adds a note clarifying that `server_context` must be kept as a `Hash`
if tools need access to `_meta`.

## How Has This Been Tested?

Documentation-only change, no behavioral modification.

## Breaking Changes

None.
This commit is contained in:
Koichi ITO 2026-06-05 01:24:25 +09:00
commit 8d123fb8f2

View file

@ -260,6 +260,11 @@ See the relevant sections below for the arguments they receive.
The MCP protocol supports a special [`_meta` parameter](https://modelcontextprotocol.io/specification/2025-06-18/basic#general-fields) in requests that allows clients to pass request-specific metadata. The server automatically extracts this parameter and makes it available to tools and prompts as a nested field within the `server_context`.
> [!NOTE]
> `_meta` is only merged when `server_context` is a `Hash` (or `nil`, in which case a new `{ _meta: ... }` hash is synthesized).
> If you assign a non-`Hash` value to `server_context`, `_meta` is not merged and tools will not see it
> under `server_context[:_meta]`. Keep `server_context` as a `Hash` if your tools need access to `_meta`.
**Access Pattern:**
When a client includes `_meta` in the request params, it becomes available as `server_context[:_meta]`: