Skip to main content
Glama
base.py2.74 kB
""" Base models for TrueNAS MCP Server """ from typing import Any, Dict, Optional, Generic, TypeVar from datetime import datetime from pydantic import BaseModel as PydanticBaseModel, Field T = TypeVar("T") class BaseModel(PydanticBaseModel): """Base model with common configuration""" model_config = { "populate_by_name": True, # Updated from allow_population_by_field_name "use_enum_values": True, "validate_assignment": True, "json_encoders": { datetime: lambda v: v.isoformat() }, "json_schema_extra": { # Updated from schema_extra "example": {} } } class ResponseModel(BaseModel, Generic[T]): """ Standard response model for all API responses Provides consistent response structure with success indicator, optional data, error information, and metadata. """ success: bool = Field( ..., description="Indicates if the operation was successful" ) data: Optional[T] = Field( None, description="Response data (present on success)" ) error: Optional[str] = Field( None, description="Error message (present on failure)" ) error_details: Optional[Dict[str, Any]] = Field( None, description="Additional error details" ) metadata: Optional[Dict[str, Any]] = Field( default_factory=dict, description="Additional metadata about the response" ) timestamp: datetime = Field( default_factory=datetime.utcnow, description="Response timestamp" ) @classmethod def success_response(cls, data: T, metadata: Optional[Dict[str, Any]] = None) -> "ResponseModel[T]": """ Create a successful response Args: data: Response data metadata: Optional metadata Returns: ResponseModel instance """ return cls( success=True, data=data, metadata=metadata or {} ) @classmethod def error_response( cls, error: str, error_details: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None ) -> "ResponseModel[T]": """ Create an error response Args: error: Error message error_details: Optional error details metadata: Optional metadata Returns: ResponseModel instance """ return cls( success=False, error=error, error_details=error_details, metadata=metadata or {} )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vespo92/TrueNasCoreMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server