@@ -74,6 +74,31 @@ class ResourceTemplate(BaseResource):
7474 """URI template (RFC 6570) for constructing resource URIs."""
7575
7676
77+ @dataclass (repr = False , kw_only = True )
78+ class ServerCapabilities :
79+ """Capabilities that an MCP server supports."""
80+
81+ experimental : list [str ] | None = None
82+ """Experimental, non-standard capabilities that the server supports."""
83+
84+ logging : bool = False
85+ """Whether the server supports sending log messages to the client."""
86+
87+ prompts : bool = False
88+ """Whether the server offers any prompt templates."""
89+
90+ resources : bool = False
91+ """Whether the server offers any resources to read."""
92+
93+ tools : bool = False
94+ """Whether the server offers any tools to call."""
95+
96+ completions : bool = False
97+ """Whether the server offers autocompletion suggestions for prompts and resources."""
98+
99+ __repr__ = _utils .dataclasses_no_defaults_repr
100+
101+
77102def map_from_mcp_params (params : mcp_types .CreateMessageRequestParams ) -> list [messages .ModelMessage ]:
78103 """Convert from MCP create message request parameters to pydantic-ai messages."""
79104 pai_messages : list [messages .ModelMessage ] = []
@@ -217,3 +242,15 @@ def map_from_mcp_resource_template(mcp_template: mcp_types.ResourceTemplate) ->
217242 ),
218243 meta = mcp_template .meta ,
219244 )
245+
246+
247+ def map_from_mcp_server_capabilities (mcp_capabilities : mcp_types .ServerCapabilities ) -> ServerCapabilities :
248+ """Convert from MCP ServerCapabilities to native Pydantic AI ServerCapabilities."""
249+ return ServerCapabilities (
250+ experimental = list (mcp_capabilities .experimental .keys ()) if mcp_capabilities .experimental else None ,
251+ logging = mcp_capabilities .logging is not None ,
252+ prompts = mcp_capabilities .prompts is not None ,
253+ resources = mcp_capabilities .resources is not None ,
254+ tools = mcp_capabilities .tools is not None ,
255+ completions = mcp_capabilities .completions is not None ,
256+ )
0 commit comments