| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- #
 - #  Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
 - #
 - #  Licensed under the Apache License, Version 2.0 (the "License");
 - #  you may not use this file except in compliance with the License.
 - #  You may obtain a copy of the License at
 - #
 - #      http://www.apache.org/licenses/LICENSE-2.0
 - #
 - #  Unless required by applicable law or agreed to in writing, software
 - #  distributed under the License is distributed on an "AS IS" BASIS,
 - #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - #  See the License for the specific language governing permissions and
 - #  limitations under the License.
 - #
 - from api.db.db_models import DB, MCPServer
 - from api.db.services.common_service import CommonService
 - 
 - 
 - class MCPServerService(CommonService):
 -     """Service class for managing MCP server related database operations.
 - 
 -     This class extends CommonService to provide specialized functionality for MCP server management,
 -     including MCP server creation, updates, and deletions.
 - 
 -     Attributes:
 -         model: The MCPServer model class for database operations.
 -     """
 - 
 -     model = MCPServer
 - 
 -     @classmethod
 -     @DB.connection_context()
 -     def get_servers(cls, tenant_id: str, id_list: list[str] | None = None):
 -         """Retrieve all MCP servers associated with a tenant.
 - 
 -         This method fetches all MCP servers for a given tenant, ordered by creation time.
 -         It only includes fields for list display.
 - 
 -         Args:
 -             tenant_id (str): The unique identifier of the tenant.
 -             id_list (list[str]): Get servers by ID list. Will ignore this condition if None.
 - 
 -         Returns:
 -             list[dict]: List of MCP server dictionaries containing MCP server details.
 -                        Returns None if no MCP servers are found.
 -         """
 -         fields = [
 -             cls.model.id, cls.model.name, cls.model.server_type, cls.model.url, cls.model.description, 
 -             cls.model.variables, cls.model.update_date
 -         ]
 - 
 -         servers = cls.model.select(*fields).order_by(cls.model.create_time.desc()).where(cls.model.tenant_id == tenant_id)
 - 
 -         if id_list is not None:
 -             servers = servers.where(cls.model.id.in_(id_list))
 - 
 -         servers = list(servers.dicts())
 -         if not servers:
 -             return None
 -         return servers
 
 
  |