From 49f87016a8886d6adc00be1aa211d8ef2bb52c43 Mon Sep 17 00:00:00 2001 From: Dustin Healy Date: Mon, 28 Jul 2025 14:09:40 -0700 Subject: [PATCH] feat: add OAuth servers to conditional rendering logic for MCPPanel in SideNav --- api/server/routes/config.js | 4 ++++ client/src/hooks/Nav/useSideNavLinks.ts | 4 +++- client/src/locales/en/translation.json | 1 - packages/data-provider/src/config.ts | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/api/server/routes/config.js b/api/server/routes/config.js index 55d4cc3067..4fbeb639c8 100644 --- a/api/server/routes/config.js +++ b/api/server/routes/config.js @@ -5,6 +5,7 @@ const { getCustomConfig } = require('~/server/services/Config/getCustomConfig'); const { getLdapConfig } = require('~/server/services/Config/ldap'); const { getProjectByName } = require('~/models/Project'); const { isEnabled } = require('~/server/utils'); +const { getMCPManager } = require('~/config'); const { getLogStores } = require('~/cache'); const router = express.Router(); @@ -102,11 +103,14 @@ router.get('/', async function (req, res) { payload.mcpServers = {}; const config = await getCustomConfig(); if (config?.mcpServers != null) { + const mcpManager = getMCPManager(); + const oauthServers = mcpManager.getOAuthServers(); for (const serverName in config.mcpServers) { const serverConfig = config.mcpServers[serverName]; payload.mcpServers[serverName] = { customUserVars: serverConfig?.customUserVars || {}, chatMenu: serverConfig?.chatMenu, + isOAuth: oauthServers.has(serverName), }; } } diff --git a/client/src/hooks/Nav/useSideNavLinks.ts b/client/src/hooks/Nav/useSideNavLinks.ts index 7345415215..3f1e7904fd 100644 --- a/client/src/hooks/Nav/useSideNavLinks.ts +++ b/client/src/hooks/Nav/useSideNavLinks.ts @@ -155,7 +155,9 @@ export default function useSideNavLinks({ if ( startupConfig?.mcpServers && Object.values(startupConfig.mcpServers).some( - (server) => server.customUserVars && Object.keys(server.customUserVars).length > 0, + (server: any) => + (server.customUserVars && Object.keys(server.customUserVars).length > 0) || + server.isOAuth, ) ) { links.push({ diff --git a/client/src/locales/en/translation.json b/client/src/locales/en/translation.json index 964abab238..edef833a46 100644 --- a/client/src/locales/en/translation.json +++ b/client/src/locales/en/translation.json @@ -851,7 +851,6 @@ "com_ui_mcp_authenticated_success": "MCP server '{{0}}' authenticated successfully", "com_ui_mcp_dialog_desc": "Please enter the necessary information below.", "com_ui_mcp_enter_var": "Enter value for {{0}}", - "com_ui_mcp_init_cancelled": "MCP server '{{0}}' initialization was cancelled due to simultaneous request", "com_ui_mcp_init_failed": "Failed to initialize MCP server", "com_ui_mcp_initialize": "Initialize", "com_ui_mcp_initialized_success": "MCP server '{{0}}' initialized successfully", diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 89a3aa1383..f77272a1f6 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -613,6 +613,7 @@ export type TStartupConfig = { } >; chatMenu?: boolean; + isOAuth?: boolean; } >; mcpPlaceholder?: string;