chore: create union for working with message content (#939)

This commit is contained in:
Luca Chang 2025-06-12 00:01:33 -07:00 • committed by GitHub
commit d69b290b65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -52,10 +52,8 @@ from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from mcp.shared.context import LifespanContextT, RequestContext, RequestT
from mcp.types import (
AnyFunction,
AudioContent,
EmbeddedResource,
Content,
GetPromptResult,
ImageContent,
TextContent,
ToolAnnotations,
)
@ -256,9 +254,7 @@ class FastMCP:
request_context = None
return Context(request_context=request_context, fastmcp=self)
async def call_tool(
self, name: str, arguments: dict[str, Any]
) -> Sequence[TextContent | ImageContent | AudioContent | EmbeddedResource]:
async def call_tool(self, name: str, arguments: dict[str, Any]) -> Sequence[Content]:
"""Call a tool by name with arguments."""
context = self.get_context()
result = await self._tool_manager.call_tool(name, arguments, context=context)
@ -842,12 +838,12 @@ class FastMCP:
def _convert_to_content(
result: Any,
) -> Sequence[TextContent | ImageContent | AudioContent | EmbeddedResource]:
) -> Sequence[Content]:
"""Convert a result to a sequence of content objects."""
if result is None:
return []
if isinstance(result, TextContent | ImageContent | AudioContent | EmbeddedResource):
if isinstance(result, Content):
return [result]
if isinstance(result, Image):