From a5f64ea1cce4541f1968107040812c2dfb5bb0a4 Mon Sep 17 00:00:00 2001 From: christianwaldmann Date: Fri, 21 Nov 2025 23:11:07 +0100 Subject: [PATCH 01/10] feat: add support for custom headers in MCP server configuration in frontend --- .../[locale]/(sidebar)/mcp-servers/page.tsx | 40 ++++++++++++++++++ apps/frontend/components/edit-mcp-server.tsx | 42 ++++++++++++++++++- .../public/locales/en/mcp-servers.json | 2 + .../public/locales/zh/mcp-servers.json | 2 + packages/zod-types/src/mcp-servers.zod.ts | 9 ++++ packages/zod-types/src/metamcp.zod.ts | 1 + 6 files changed, 95 insertions(+), 1 deletion(-) diff --git a/apps/frontend/app/[locale]/(sidebar)/mcp-servers/page.tsx b/apps/frontend/app/[locale]/(sidebar)/mcp-servers/page.tsx index 41584fe1..c9b17d22 100644 --- a/apps/frontend/app/[locale]/(sidebar)/mcp-servers/page.tsx +++ b/apps/frontend/app/[locale]/(sidebar)/mcp-servers/page.tsx @@ -58,6 +58,7 @@ export default function McpServersPage() { env: "", url: "", bearerToken: "", + headers: "", user_id: undefined, // Default to private (current user) }, }); @@ -108,6 +109,22 @@ export default function McpServersPage() { } } + // Parse headers string into object + const headersObject: Record = {}; + if (data.headers) { + const headersLines = data.headers.trim().split("\n"); + for (const line of headersLines) { + const trimmedLine = line.trim(); + if (trimmedLine && trimmedLine.includes("=")) { + const [key, ...valueParts] = trimmedLine.split("="); + const value = valueParts.join("="); // Handle values that contain '=' + if (key?.trim()) { + headersObject[key.trim()] = value; + } + } + } + } + const request: CreateMcpServerRequest = { name: data.name, description: data.description, @@ -117,6 +134,8 @@ export default function McpServersPage() { env: envObject, url: data.url, bearerToken: data.bearerToken, + headers: + Object.keys(headersObject).length > 0 ? headersObject : undefined, user_id: data.user_id, }; @@ -399,6 +418,27 @@ export default function McpServersPage() { )} /> + + ( + + {t("mcp-servers:headers")} + +