diff --git a/api/server/routes/config.js b/api/server/routes/config.js index 466c7dcb68..82bc19dfbe 100644 --- a/api/server/routes/config.js +++ b/api/server/routes/config.js @@ -1,10 +1,14 @@ const express = require('express'); const { isEnabled } = require('@librechat/api'); const { logger } = require('@librechat/data-schemas'); -const { CacheKeys, defaultSocialLogins, Constants } = require('librechat-data-provider'); -const { getCustomConfig } = require('~/server/services/Config/getCustomConfig'); -const { getAppConfig } = require('~/server/services/Config/getAppConfig'); +const { + Constants, + CacheKeys, + removeNullishValues, + defaultSocialLogins, +} = require('librechat-data-provider'); const { getLdapConfig } = require('~/server/services/Config/ldap'); +const { getAppConfig } = require('~/server/services/Config/app'); const { getProjectByName } = require('~/models/Project'); const { getMCPManager } = require('~/config'); const { getLogStores } = require('~/cache'); @@ -112,25 +116,30 @@ router.get('/', async function (req, res) { }; payload.mcpServers = {}; - const config = await getCustomConfig(); - if (config?.mcpServers != null) { + const getMCPServers = () => { try { const mcpManager = getMCPManager(); + if (!mcpManager) { + return; + } + const mcpServers = mcpManager.getAllServers(); + if (!mcpServers) return; const oauthServers = mcpManager.getOAuthServers(); - for (const serverName in config.mcpServers) { - const serverConfig = config.mcpServers[serverName]; - payload.mcpServers[serverName] = { + for (const serverName in mcpServers) { + const serverConfig = mcpServers[serverName]; + payload.mcpServers[serverName] = removeNullishValues({ startup: serverConfig?.startup, chatMenu: serverConfig?.chatMenu, isOAuth: oauthServers?.has(serverName), - customUserVars: serverConfig?.customUserVars || {}, - }; + customUserVars: serverConfig?.customUserVars, + }); } - } catch (err) { - logger.error('Error loading MCP servers', err); + } catch (error) { + logger.error('Error loading MCP servers', error); } - } + }; + getMCPServers(); const webSearchConfig = appConfig.webSearch; if ( webSearchConfig != null && diff --git a/packages/api/src/mcp/MCPManager.ts b/packages/api/src/mcp/MCPManager.ts index 41b4f1a0fb..88becae7d2 100644 --- a/packages/api/src/mcp/MCPManager.ts +++ b/packages/api/src/mcp/MCPManager.ts @@ -54,6 +54,11 @@ export class MCPManager extends UserConnectionManager { return this.serversRegistry.oauthServers!; } + /** Get all servers */ + public getAllServers(): t.MCPServers | null { + return this.serversRegistry.rawConfigs!; + } + /** Returns all available tool functions from app-level connections */ public getAppToolFunctions(): t.LCAvailableTools | null { return this.serversRegistry.toolFunctions!;