import React from 'react'; import { Button, Input } from 'antd'; import type { OverlayWorkbenchTheme } from '../../utils/overlayWorkbenchTheme'; import type { ParseMCPCommandDraftResult } from '../../utils/mcpCommandDraft'; import { MCP_COMMAND_EXAMPLES, MCP_COMMAND_PARSE_EXAMPLE, MCP_FIELD_GUIDES, MCP_SERVER_FILL_STEPS, MCP_TROUBLESHOOTING_GUIDES, } from '../../utils/mcpServerGuidance'; import AIMCPCommandDraftPreview from './AIMCPCommandDraftPreview'; import AIMCPFieldGuideCard from './AIMCPFieldGuideCard'; import { buildMCPHintStyle, mcpLabelStyle } from './AIMCPHelpBlock'; interface AIMCPServerGuidePanelProps { cardBorder: string; inputBg: string; darkMode: boolean; overlayTheme: OverlayWorkbenchTheme; rawCommandDraft: string; parsedCommandDraft: ParseMCPCommandDraftResult; onApplyCommandDraft: () => void; onRawCommandDraftChange: (value: string) => void; } const AIMCPServerGuidePanel: React.FC = ({ cardBorder, inputBg, darkMode, overlayTheme, rawCommandDraft, parsedCommandDraft, onApplyCommandDraft, onRawCommandDraftChange, }) => ( <>
填写示例
启动命令只填可执行程序本身,不要把参数混在一起。常见形式: {' '} {MCP_COMMAND_EXAMPLES.join(' / ')}
推荐填写顺序
小白用户可以按这个顺序填:先选上面的模板或粘整行命令,再确认下面的必填项,最后只在需要时补参数、环境变量和超时。
{MCP_SERVER_FILL_STEPS.map((item) => ( {item.step}. {item.title} ))}
字段速查
如果看到某个参数名不知道该填什么,先看这一块;下面每个字段也都有更具体的示例和注意事项。
{MCP_FIELD_GUIDES.map((item) => ( ))}
常见填错现象
如果测试失败,先按这里反查要改哪个字段;大多数问题都不是 MCP 坏了,而是命令、参数或环境变量拆错了。
{MCP_TROUBLESHOOTING_GUIDES.map((item) => (
{item.symptom}
常见原因:{item.likelyCause}
处理方式:{item.fix}
{item.example ? (
示例: {' '} {item.example}
) : null}
))}
只有一条完整命令?
直接粘贴完整命令,GoNavi 会自动拆成“启动命令 / 命令参数 / 环境变量”三块;支持 Unix 的 KEY=VALUE,也支持 Windows PowerShell 的 $env:KEY=VALUE; 和 cmd 的 set KEY=VALUE && 写法。
onRawCommandDraftChange(event.target.value)} placeholder={`直接粘贴完整命令,例如:\n${MCP_COMMAND_PARSE_EXAMPLE}`} style={{ borderRadius: 10, background: inputBg, border: `1px solid ${cardBorder}`, fontFamily: 'var(--gn-font-mono)' }} />
{rawCommandDraft.trim() ? parsedCommandDraft.ok && parsedCommandDraft.draft ? `将解析为:命令 ${parsedCommandDraft.draft.command},参数 ${parsedCommandDraft.draft.args.length} 个,环境变量 ${Object.keys(parsedCommandDraft.draft.env).length} 个。` : parsedCommandDraft.error : '支持带引号路径、带空格参数,以及 KEY=VALUE / $env:KEY=VALUE; / set KEY=VALUE && 环境变量前缀。'}
{parsedCommandDraft.ok && parsedCommandDraft.draft && rawCommandDraft.trim() && ( )}
); export default AIMCPServerGuidePanel;