import React from 'react'; import { CheckCircleFilled } from '@ant-design/icons'; import type { AIMCPClientInstallStatus } from '../../types'; import { isMCPClientKey, isRemoteMCPClientStatus, type MCPClientKey, } from '../../utils/mcpClientInstallStatus'; import type { OverlayWorkbenchTheme } from '../../utils/overlayWorkbenchTheme'; import { getMCPClientInstallStateLabel, getMCPClientOptionSummary, getMCPClientStatusTone, } from './mcpClientInstallPanelState'; interface AIMCPClientSelectorPanelProps { statuses: AIMCPClientInstallStatus[]; selectedClient: MCPClientKey; darkMode: boolean; overlayTheme: OverlayWorkbenchTheme; cardBorder: string; statusLoading: boolean; onSelectClient: (client: MCPClientKey) => void; } const MCP_CLIENT_INSTALL_STEPS = [ { step: '1', title: '选择目标客户端', detail: '本机 Claude/Codex 可自动安装,OpenClaw/Hermans 走远程接入说明。' }, { step: '2', title: '写入或复制配置', detail: '自动安装只改用户级 MCP 配置;远程 Agent 复制桥接说明。' }, { step: '3', title: '重启或配置目标端', detail: '本机 CLI 重启后验证;云端 Agent 配置远程 MCP 地址后验证。' }, ]; const AIMCPClientSelectorPanel: React.FC = ({ statuses, selectedClient, darkMode, overlayTheme, cardBorder, statusLoading, onSelectClient, }) => ( <>
接入外部客户端
先选择 1 个目标客户端。本机 CLI 可自动写入或更新配置;远程 Agent 需要通过 MCP 桥接/隧道访问当前 GoNavi,不应保存数据库连接密码。
{MCP_CLIENT_INSTALL_STEPS.map((item) => (
{item.step}
{item.title}
{item.detail}
))}
选择外部客户端
{statuses.map((status) => { const client = isMCPClientKey(status.client) ? status.client : 'claude-code'; const remoteClient = isRemoteMCPClientStatus(status); const active = selectedClient === client; const tone = getMCPClientStatusTone(status, darkMode); return ( ); })}
); export default AIMCPClientSelectorPanel;