mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-06-26 22:19:57 +00:00

### What problem does this PR solve? This is a cherry-pick from #7781 as requested. ### Type of change - [x] New Feature (non-breaking change which adds functionality) Co-authored-by: Kevin Hu <kevinhu.sh@gmail.com>
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
#
|
|
# 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
|