// MCP 客户端相关类型定义 export type RouteKey = | 'chat' | 'tools' | 'data' | 'model-providers' | 'display-settings' | 'mcp' export interface MCPServerConfig { id: string name: string url: string type: 'http' | 'sse' | 'websocket' description?: string enabled: boolean status: 'connected' | 'disconnected' | 'connecting' | 'error' capabilities?: { tools?: Array<{ name: string; description?: string; inputSchema?: any; enabled?: boolean; autoApprove?: boolean }> prompts?: Array<{ name: string; description?: string; arguments?: Array<{ name: string }> }> resources?: Array<{ name: string; description?: string; uri: string; mimeType?: string }> } headers?: Array<{ key: string; value: string }> lastConnected?: string error?: string version?: string } export interface MCPTool { serverId: string serverName: string name: string description?: string inputSchema?: any } export interface MCPResource { serverId: string serverName: string uri: string name: string description?: string mimeType?: string } export interface MCPPrompt { serverId: string serverName: string name: string description?: string arguments?: Array<{ name: string description?: string required?: boolean }> } export interface ModelProvider { id: string name: string type: 'openai' | 'claude' | 'google' | 'ollama' | 'custom' apiKey?: string baseUrl?: string models: string[] defaultModel?: string enabled: boolean maxTokens?: number temperature?: number timeout?: number description?: string usage?: { requestCount: number tokenCount: number errorCount: number lastUsed?: string } } export interface DisplaySettings { theme: 'light' | 'dark' | 'auto' primaryColor: string backgroundMaterial: 'default' | 'glass' | 'acrylic' | 'solid' language: 'zh-CN' | 'en-US' | 'ja-JP' | 'ko-KR' | 'fr-FR' | 'es-ES' fontSize: number fontFamily: string lineHeight: number borderRadius: number compactMode: boolean animations: { enabled: boolean duration: number easing: string } sidebar: { width: number collapsed: boolean position: 'left' | 'right' } layout: { maxWidth: number padding: number gap: number } accessibility: { highContrast: boolean reduceMotion: boolean focusVisible: boolean } advanced: { enableGpu: boolean maxHistoryItems: number autoSave: boolean debugMode: boolean } } export interface ToolExecution { id: string toolName: string serverId: string parameters: Record status: 'pending' | 'running' | 'completed' | 'error' startTime: string endTime?: string result?: any error?: string } export interface NotificationMessage { id: string type: 'success' | 'error' | 'warning' | 'info' title: string content?: string duration?: number timestamp: string }