"""MCP 服务相关数据结构"""
from typing import Any
from pydantic import BaseModel, Field
from apps.models.mcp import MCPInstallStatus, MCPTools, MCPType
from apps.schemas.response_data import ResponseData
class MCPServiceCardItem(BaseModel):
"""插件中心:MCP服务卡片数据结构"""
mcpservice_id: str = Field(..., alias="mcpserviceId", description="mcp服务ID")
name: str = Field(..., description="mcp服务名称")
description: str = Field(..., description="mcp服务简介")
author: str = Field(..., description="mcp服务作者")
is_active: bool = Field(default=False, alias="isActive", description="mcp服务是否激活")
status: MCPInstallStatus = Field(default=MCPInstallStatus.INSTALLING, description="mcp服务状态")
class BaseMCPServiceOperationMsg(BaseModel):
"""插件中心:MCP服务操作Result数据结构"""
service_id: str = Field(..., alias="serviceId", description="服务ID")
class GetMCPServiceListMsg(BaseModel):
"""GET /api/service Result数据结构"""
current_page: int = Field(..., alias="currentPage", description="当前页码")
services: list[MCPServiceCardItem] = Field(..., description="解析后的服务列表")
class GetMCPServiceListRsp(ResponseData):
"""GET /api/service 返回数据结构"""
result: GetMCPServiceListMsg = Field(..., title="Result")
class UpdateMCPServiceMsg(BaseModel):
"""插件中心:MCP服务属性数据结构"""
service_id: str = Field(..., alias="serviceId", description="MCP服务ID")
name: str = Field(..., description="MCP服务名称")
class UpdateMCPServiceRsp(ResponseData):
"""POST /api/mcp_service 返回数据结构"""
result: UpdateMCPServiceMsg = Field(..., title="Result")
class GetMCPServiceDetailMsg(BaseModel):
"""GET /api/mcp_service/{serviceId} Result数据结构"""
service_id: str = Field(..., alias="serviceId", description="MCP服务ID")
name: str = Field(..., description="MCP服务名称")
description: str = Field(description="MCP服务描述")
overview: str = Field(description="MCP服务概述")
tools: list[MCPTools] = Field(description="MCP服务Tools列表", default=[])
status: MCPInstallStatus = Field(
description="MCP服务状态",
default=MCPInstallStatus.INIT,
)
class EditMCPServiceMsg(BaseModel):
"""编辑MCP服务"""
service_id: str = Field(..., alias="serviceId", description="MCP服务ID")
name: str = Field(..., description="MCP服务名称")
description: str = Field(description="MCP服务描述")
overview: str = Field(description="MCP服务概述")
data: dict[str, Any] = Field(description="MCP服务配置")
mcp_type: MCPType = Field(alias="mcpType", description="MCP 类型")
class GetMCPServiceDetailRsp(ResponseData):
"""GET /api/service/{serviceId} 返回数据结构"""
result: GetMCPServiceDetailMsg | EditMCPServiceMsg = Field(..., title="Result")
class DeleteMCPServiceRsp(ResponseData):
"""DELETE /api/service/{serviceId} 返回数据结构"""
result: BaseMCPServiceOperationMsg = Field(..., title="Result")
class ActiveMCPServiceRsp(ResponseData):
"""POST /api/mcp/active/{serviceId} 返回数据结构"""
result: BaseMCPServiceOperationMsg = Field(..., title="Result")