From 0697d9090686e312332001c79d2bb26e5ad378c7 Mon Sep 17 00:00:00 2001 From: zhanglei Date: Sat, 12 Jul 2025 18:42:56 +0800 Subject: [PATCH] Allow arbitrary types in model creation by updating config in create_model --- src/mcp/server/fastmcp/utilities/func_metadata.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mcp/server/fastmcp/utilities/func_metadata.py b/src/mcp/server/fastmcp/utilities/func_metadata.py index 70be8796d..e670e7bec 100644 --- a/src/mcp/server/fastmcp/utilities/func_metadata.py +++ b/src/mcp/server/fastmcp/utilities/func_metadata.py @@ -59,6 +59,14 @@ def model_dump_one_level(self) -> dict[str, Any]: ) +class OutputModelBase(BaseModel): + """A model representing the output of a function.""" + + model_config = ConfigDict( + arbitrary_types_allowed=True, + ) + + class FuncMetadata(BaseModel): arg_model: Annotated[type[ArgModelBase], WithJsonSchema(None)] output_schema: dict[str, Any] | None = None @@ -433,7 +441,7 @@ def _create_wrapped_model(func_name: str, annotation: Any, field_info: FieldInfo if annotation is None: annotation = type(None) - return create_model(model_name, result=(annotation, field_info), __base__=BaseModel) + return create_model(model_name, result=(annotation, field_info), __base__=OutputModelBase) def _create_dict_model(func_name: str, dict_annotation: Any) -> type[BaseModel]: