content: from dataclasses import dataclass
  
  from starlette.requests import Request
  from starlette.responses import Response
  
  from mcp.server.auth.json_response import PydanticJSONResponse
  from mcp.shared.auth import OAuthMetadata, ProtectedResourceMetadata
  
  
  @dataclass
  class MetadataHandler:
      metadata: OAuthMetadata
  
      async def handle(self, request: Request) -> Response:
          return PydanticJSONResponse(
              content=self.metadata,
              headers={"Cache-Control": "public, max-age=3600"},  # Cache for 1 hour
          )
  
  
  @dataclass
  class ProtectedResourceMetadataHandler:
      metadata: ProtectedResourceMetadata
  
      async def handle(self, request: Request) -> Response:
          return PydanticJSONResponse(
              content=self.metadata,
              headers={"Cache-Control": "public, max-age=3600"},  # Cache for 1 hour
          )
  