Skip to content

Commit 54f8787

Browse files
committed
Address review feedback on type annotations and _meta injection
1 parent 0e0b746 commit 54f8787

File tree

3 files changed

+7
-10
lines changed

3 files changed

+7
-10
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ async def main():
4242
from collections.abc import AsyncIterator, Awaitable, Callable
4343
from contextlib import AbstractAsyncContextManager, AsyncExitStack, asynccontextmanager
4444
from importlib.metadata import version as importlib_version
45-
from typing import Any, Generic
45+
from typing import Any, Generic, cast
4646

4747
import anyio
4848
from starlette.applications import Starlette
@@ -451,8 +451,8 @@ async def _handle_request(
451451
span_name = f"MCP handle {req.method} {target}" if target else f"MCP handle {req.method}"
452452

453453
# Extract W3C trace context from _meta (SEP-414).
454-
meta = getattr(req.params, "meta", None) if req.params else None
455-
parent_context = extract_trace_context(meta) if isinstance(meta, dict) else None
454+
meta = cast(dict[str, Any] | None, getattr(req.params, "meta", None)) if req.params else None
455+
parent_context = extract_trace_context(meta) if meta is not None else None
456456

457457
with otel_span(
458458
span_name,

src/mcp/shared/_otel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ def otel_span(
2727
yield span
2828

2929

30-
def inject_trace_context(meta: Any) -> None:
30+
def inject_trace_context(meta: dict[str, Any]) -> None:
3131
"""Inject W3C trace context (traceparent/tracestate) into a ``_meta`` dict."""
3232
inject(meta)
3333

3434

35-
def extract_trace_context(meta: Any) -> Context:
35+
def extract_trace_context(meta: dict[str, Any]) -> Context:
3636
"""Extract W3C trace context from a ``_meta`` dict."""
3737
return extract(meta)

src/mcp/shared/session.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,11 +278,8 @@ async def send_request(
278278
attributes={"mcp.method.name": request.method, "jsonrpc.request.id": request_id},
279279
):
280280
# Inject W3C trace context into _meta (SEP-414).
281-
if "params" not in request_data:
282-
request_data["params"] = {}
283-
if "_meta" not in request_data["params"]:
284-
request_data["params"]["_meta"] = {}
285-
inject_trace_context(request_data["params"]["_meta"])
281+
meta: dict[str, Any] = request_data.setdefault("params", {}).setdefault("_meta", {})
282+
inject_trace_context(meta)
286283

287284
jsonrpc_request = JSONRPCRequest(jsonrpc="2.0", id=request_id, **request_data)
288285
await self._write_stream.send(SessionMessage(message=jsonrpc_request, metadata=metadata))

0 commit comments

Comments
 (0)