"""Type definitions for MCP multi-server client."""
from typing import Optional
from pydantic import BaseModel
from mcp.types import (
ListPromptsResult,
ListResourcesResult,
ListResourceTemplatesResult,
ListToolsResult,
)
[docs]
class ServerCapabilities(BaseModel):
"""Capabilities discovered from an MCP server.
This class stores all the capabilities (tools, resources, templates, prompts)
that were discovered during server initialization. It's used internally to
track what each server can do and to aggregate capabilities across all servers.
Attributes:
name: The unique identifier for the server.
tools: List of tools provided by the server, if any.
resources: List of resources provided by the server, if any.
resource_templates: List of resource templates provided by the server, if any.
prompts: List of prompts provided by the server, if any.
Note:
All capability fields (tools, resources, etc.) are optional because:
- A server may not implement all capability types
- Capability discovery may fail for some types while succeeding for others
- Empty capability lists are represented as None rather than empty lists
"""
name: str
tools: Optional[ListToolsResult] = None
resources: Optional[ListResourcesResult] = None
resource_templates: Optional[ListResourceTemplatesResult] = None
prompts: Optional[ListPromptsResult] = None