fix: use pydantic Field with alias for _meta fields

Pydantic treats fields starting with underscore as private/hidden. To fix this,
we need to use Field with alias='_meta' to properly handle these fields while
keeping the external API unchanged. This fixes #103 where meta fields were not
being properly assigned in request contexts.
This commit is contained in:
David Soria Parra
2024-12-21 00:26:59 +00:00
parent dd1a069508
commit 37f6a3229c
2 changed files with 5 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
from typing import Any, Generic, Literal, TypeVar
from pydantic import BaseModel, ConfigDict, FileUrl, RootModel
from pydantic import BaseModel, ConfigDict, Field, FileUrl, RootModel
from pydantic.networks import AnyUrl
"""
@@ -39,14 +39,14 @@ class RequestParams(BaseModel):
model_config = ConfigDict(extra="allow")
_meta: Meta | None = None
meta: Meta | None = Field(alias="_meta", default=None)
class NotificationParams(BaseModel):
class Meta(BaseModel):
model_config = ConfigDict(extra="allow")
_meta: Meta | None = None
meta: Meta | None = Field(alias="_meta", default=None)
"""
This parameter name is reserved by MCP to allow clients and servers to attach
additional metadata to their notifications.
@@ -86,7 +86,7 @@ class Result(BaseModel):
model_config = ConfigDict(extra="allow")
_meta: dict[str, Any] | None = None
meta: dict[str, Any] | None = Field(alias="_meta", default=None)
"""
This result property is reserved by the protocol to allow clients and servers to
attach additional metadata to their responses.