Validate remote MCP URLs in config UI

This commit is contained in:
Gabrielsv01 2026-05-04 23:28:04 -03:00
parent bc8c08d930
commit 7c989ce26c
4 changed files with 73 additions and 0 deletions

View file

@ -338,6 +338,20 @@ export function ConfigPage() {
throw new Error(`MCP server ${server.name} requires a URL.`)
}
try {
const parsedURL = new URL(server.url)
if (
parsedURL.protocol !== "http:" &&
parsedURL.protocol !== "https:"
) {
throw new Error("invalid protocol")
}
} catch {
throw new Error(
`MCP server ${server.name} requires a valid HTTP(S) URL.`,
)
}
return [
server.name,
{

View file

@ -399,6 +399,42 @@ export function MCPSection({
onServerFieldChange(server.id, "enabled", checked)
}
/>
<Select
value={
server.deferredOverride === null
? "inherit"
: server.deferredOverride
? "deferred"
: "eager"
}
onValueChange={(value) =>
onServerFieldChange(
server.id,
"deferredOverride",
value === "inherit" ? null : value === "deferred",
)
}
>
<SelectTrigger>
<SelectValue
placeholder={t(
"pages.config.mcp_server_discovery_mode",
)}
/>
</SelectTrigger>
<SelectContent>
<SelectItem value="inherit">
{t("pages.config.mcp_server_discovery_mode_inherit")}
</SelectItem>
<SelectItem value="deferred">
{t("pages.config.mcp_server_discovery_mode_deferred")}
</SelectItem>
<SelectItem value="eager">
{t("pages.config.mcp_server_discovery_mode_eager")}
</SelectItem>
</SelectContent>
</Select>
</div>
{server.type !== "stdio" ? (
@ -442,6 +478,19 @@ export function MCPSection({
)
}
/>
<Input
value={server.envFile}
placeholder={t(
"pages.config.mcp_server_env_file_placeholder",
)}
onChange={(e) =>
onServerFieldChange(
server.id,
"envFile",
e.target.value,
)
}
/>
<Textarea
value={server.argsText}
placeholder={t(

View file

@ -720,9 +720,14 @@
"mcp_server_add": "Add server",
"mcp_server_remove": "Remove",
"mcp_server_enabled": "Enabled",
"mcp_server_discovery_mode": "Discovery mode",
"mcp_server_discovery_mode_inherit": "Follow global discovery mode",
"mcp_server_discovery_mode_deferred": "Deferred discovery",
"mcp_server_discovery_mode_eager": "Eager registration",
"mcp_server_name_placeholder": "Server name (e.g. github)",
"mcp_server_url_placeholder": "Server URL (e.g. https://example.com/mcp)",
"mcp_server_command_placeholder": "Command (e.g. npx)",
"mcp_server_env_file_placeholder": "Environment file path (optional)",
"mcp_server_args_placeholder": "Args, one per line",
"mcp_server_env_placeholder": "Environment JSON object",
"mcp_server_headers_placeholder": "Headers JSON object",

View file

@ -720,9 +720,14 @@
"mcp_server_add": "添加服务器",
"mcp_server_remove": "移除",
"mcp_server_enabled": "已启用",
"mcp_server_discovery_mode": "发现模式",
"mcp_server_discovery_mode_inherit": "跟随全局发现模式",
"mcp_server_discovery_mode_deferred": "延迟发现",
"mcp_server_discovery_mode_eager": "立即注册",
"mcp_server_name_placeholder": "服务器名称(例如 github",
"mcp_server_url_placeholder": "服务器 URL例如 https://example.com/mcp",
"mcp_server_command_placeholder": "命令(例如 npx",
"mcp_server_env_file_placeholder": "环境变量文件路径(可选)",
"mcp_server_args_placeholder": "参数(每行一个)",
"mcp_server_env_placeholder": "环境变量 JSON 对象",
"mcp_server_headers_placeholder": "请求头 JSON 对象",