Skip to content

AI Models API Package

nautobot_ai_models.api

REST API module for nautobot_ai_models app.

serializers

API serializers for nautobot_ai_models.

The MCP tool serializer carries the whole advertised definition, both schemas included.

AIModelSerializer

Bases: NautobotModelSerializer

AI Model Serializer.

Source code in nautobot_ai_models/api/serializers.py
class AIModelSerializer(NautobotModelSerializer):  # pylint: disable=too-many-ancestors
    """AI Model Serializer."""

    is_available = drf_serializers.BooleanField(read_only=True)
    resolved_parameters = drf_serializers.JSONField(read_only=True)

    class Meta:
        """Meta attributes."""

        model = models.AIModel
        fields = "__all__"
Meta

Meta attributes.

Source code in nautobot_ai_models/api/serializers.py
class Meta:
    """Meta attributes."""

    model = models.AIModel
    fields = "__all__"

AIProviderSerializer

Bases: NautobotModelSerializer

AI Provider Serializer.

Source code in nautobot_ai_models/api/serializers.py
class AIProviderSerializer(NautobotModelSerializer):  # pylint: disable=too-many-ancestors
    """AI Provider Serializer."""

    class Meta:
        """Meta attributes."""

        model = models.AIProvider
        fields = "__all__"
Meta

Meta attributes.

Source code in nautobot_ai_models/api/serializers.py
class Meta:
    """Meta attributes."""

    model = models.AIProvider
    fields = "__all__"

MCPServerSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

MCPServer Serializer.

Source code in nautobot_ai_models/api/serializers.py
class MCPServerSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):  # pylint: disable=too-many-ancestors
    """MCPServer Serializer."""

    tool_count = drf_serializers.SerializerMethodField()

    class Meta:
        """Meta attributes."""

        model = models.MCPServer
        fields = "__all__"

        read_only_fields = list(MCP_SERVER_DISCOVERED_FIELDS)

    def get_tool_count(self, obj) -> int:
        """Return how many tools this server offers.

        Args:
            obj (MCPServer): The server being rendered.

        Returns:
            The viewset's annotation, or a count when the object did not come from that queryset.
        """
        count = getattr(obj, "tool_count", None)
        return obj.tools.count() if count is None else count
Meta

Meta attributes.

Source code in nautobot_ai_models/api/serializers.py
class Meta:
    """Meta attributes."""

    model = models.MCPServer
    fields = "__all__"

    read_only_fields = list(MCP_SERVER_DISCOVERED_FIELDS)
get_tool_count(obj)

Return how many tools this server offers.

Parameters:

Name Type Description Default
obj MCPServer

The server being rendered.

required

Returns:

Type Description
int

The viewset's annotation, or a count when the object did not come from that queryset.

Source code in nautobot_ai_models/api/serializers.py
def get_tool_count(self, obj) -> int:
    """Return how many tools this server offers.

    Args:
        obj (MCPServer): The server being rendered.

    Returns:
        The viewset's annotation, or a count when the object did not come from that queryset.
    """
    count = getattr(obj, "tool_count", None)
    return obj.tools.count() if count is None else count

MCPToolSerializer

Bases: NautobotModelSerializer

MCPTool Serializer.

Source code in nautobot_ai_models/api/serializers.py
class MCPToolSerializer(NautobotModelSerializer):  # pylint: disable=too-many-ancestors
    """MCPTool Serializer."""

    is_available = drf_serializers.BooleanField(read_only=True)

    class Meta:
        """Meta attributes."""

        model = models.MCPTool
        fields = "__all__"

        read_only_fields = [
            "definition_fingerprint",
            "last_seen_at",
        ]
Meta

Meta attributes.

Source code in nautobot_ai_models/api/serializers.py
class Meta:
    """Meta attributes."""

    model = models.MCPTool
    fields = "__all__"

    read_only_fields = [
        "definition_fingerprint",
        "last_seen_at",
    ]

urls

Django API urlpatterns declaration for nautobot_ai_models app.

views

API views for nautobot_ai_models.

AIModelViewSet

Bases: NautobotModelViewSet

AI Model viewset.

Source code in nautobot_ai_models/api/views.py
class AIModelViewSet(NautobotModelViewSet):  # pylint: disable=too-many-ancestors
    """AI Model viewset."""

    queryset = models.AIModel.objects.select_related("provider")
    serializer_class = serializers.AIModelSerializer
    filterset_class = filters.AIModelFilterSet

AIProviderViewSet

Bases: NautobotModelViewSet

AI Provider viewset.

Source code in nautobot_ai_models/api/views.py
class AIProviderViewSet(NautobotModelViewSet):  # pylint: disable=too-many-ancestors
    """AI Provider viewset."""

    queryset = models.AIProvider.objects.select_related("external_integration")
    serializer_class = serializers.AIProviderSerializer
    filterset_class = filters.AIProviderFilterSet

MCPServerViewSet

Bases: NautobotModelViewSet

MCPServer viewset.

Source code in nautobot_ai_models/api/views.py
class MCPServerViewSet(NautobotModelViewSet):  # pylint: disable=too-many-ancestors
    """MCPServer viewset."""

    queryset = models.MCPServer.objects.select_related("external_integration", "tenant").annotate(
        tool_count=count_related(models.MCPTool, "mcp_server")
    )
    serializer_class = serializers.MCPServerSerializer
    filterset_class = filters.MCPServerFilterSet

MCPToolViewSet

Bases: NautobotModelViewSet

MCPTool viewset.

Source code in nautobot_ai_models/api/views.py
class MCPToolViewSet(NautobotModelViewSet):  # pylint: disable=too-many-ancestors
    """MCPTool viewset."""

    queryset = models.MCPTool.objects.select_related("mcp_server")
    serializer_class = serializers.MCPToolSerializer
    filterset_class = filters.MCPToolFilterSet