diff --git a/src/mcp/types.py b/src/mcp/types.py index 91432d69c..0cf72a541 100644 --- a/src/mcp/types.py +++ b/src/mcp/types.py @@ -714,11 +714,26 @@ class AudioContent(BaseModel): model_config = ConfigDict(extra="allow") +class DictContent(BaseModel): + """Dict content for a message.""" + + type: Literal["dict"] + data: dict[str, Any] + """The dict content of the message.""" + annotations: Annotations | None = None + meta: dict[str, Any] | None = Field(alias="_meta", default=None) + """ + See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + for notes on _meta usage. + """ + model_config = ConfigDict(extra="allow") + + class SamplingMessage(BaseModel): """Describes a message issued to or received from an LLM API.""" role: Role - content: TextContent | ImageContent | AudioContent + content: TextContent | ImageContent | AudioContent | DictContent model_config = ConfigDict(extra="allow") @@ -751,7 +766,7 @@ class ResourceLink(Resource): type: Literal["resource_link"] -ContentBlock = TextContent | ImageContent | AudioContent | ResourceLink | EmbeddedResource +ContentBlock = TextContent | ImageContent | AudioContent | DictContent | ResourceLink | EmbeddedResource """A content block that can be used in prompts and tool results.""" Content: TypeAlias = ContentBlock @@ -1044,7 +1059,7 @@ class CreateMessageResult(Result): """The client's response to a sampling/create_message request from the server.""" role: Role - content: TextContent | ImageContent | AudioContent + content: TextContent | ImageContent | AudioContent | DictContent model: str """The name of the model that generated the message.""" stopReason: StopReason | None = None