address PR feedback

This commit is contained in:
strawgate 2025-05-03 10:41:16 -05:00
commit d1eb1812f3
3 changed files with 7 additions and 8 deletions

View file

@ -205,7 +205,7 @@ class FastMCP(Generic[LifespanResultT]):
| None
) = None,
tags: set[str] | None = None,
serializer: Callable[[Any], str] | None = None,
tool_serializer: Callable[[Any], str] | None = None,
**settings: Any,
):
self.tags: set[str] = tags or set()
@ -215,7 +215,6 @@ class FastMCP(Generic[LifespanResultT]):
seconds=self.settings.cache_expiration_seconds
)
)
self._serializer = serializer
self._mounted_servers: dict[str, MountedServer] = {}
@ -229,7 +228,7 @@ class FastMCP(Generic[LifespanResultT]):
)
self._tool_manager = ToolManager(
duplicate_behavior=self.settings.on_duplicate_tools,
serializer=self._serializer,
serializer=tool_serializer,
)
self._resource_manager = ResourceManager(
duplicate_behavior=self.settings.on_duplicate_resources

View file

@ -125,7 +125,7 @@ class Tool(BaseModel):
arguments_to_validate=arguments,
arguments_to_pass_directly=pass_args,
)
return _convert_to_content(result, _serializer=self.serializer)
return _convert_to_content(result, serializer=self.serializer)
except Exception as e:
raise ToolError(f"Error executing tool {self.name}: {e}") from e
@ -146,8 +146,8 @@ class Tool(BaseModel):
def _convert_to_content(
result: Any,
serializer: Callable[[Any], str] | None = None,
_process_as_single_item: bool = False,
_serializer: Callable[[Any], str] | None = None,
) -> list[TextContent | ImageContent | EmbeddedResource]:
"""Convert a result to a sequence of content objects."""
if result is None:
@ -182,8 +182,8 @@ def _convert_to_content(
return other_content + mcp_types
if not isinstance(result, str):
if _serializer is not None:
result = _serializer(result)
if serializer is not None:
result = serializer(result)
else:
result = pydantic_core.to_json(result, fallback=str, indent=2).decode()

View file

@ -401,7 +401,7 @@ class TestCallTools:
return json.dumps(data)
# Instantiate FastMCP with the custom serializer
mcp = FastMCP(serializer=custom_serializer)
mcp = FastMCP(tool_serializer=custom_serializer)
manager = mcp._tool_manager
def get_data() -> dict: