mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
* 🔧 refactor: move `processMCPEnv` from `librechat-data-provider` and move to `@librechat/api` * 🔧 refactor: Update resolveHeaders import paths * 🔧 refactor: Enhance resolveHeaders to support user and custom variables - Updated resolveHeaders function to accept user and custom user variables for placeholder replacement. - Modified header resolution in multiple client and controller files to utilize the enhanced resolveHeaders functionality. - Added comprehensive tests for resolveHeaders to ensure correct processing of user and custom variables. * 🔧 fix: Update user ID placeholder processing in env.ts * 🔧 fix: Remove arguments passing this.user rather than req.user - Updated multiple client and controller files to call resolveHeaders without the user parameter * 🔧 refactor: Enhance processUserPlaceholders to be more readable / less nested * 🔧 refactor: Update processUserPlaceholders to pass all tests in mpc.spec.ts and env.spec.ts * chore: remove legacy ChatGPTClient * chore: remove LLM initialization code * chore: initial deprecation removal of `gptPlugins` * chore: remove cohere-ai dependency from package.json and package-lock.json * chore: update brace-expansion to version 2.0.2 and add license information * chore: remove PluginsClient test file * chore: remove legacy * ci: remove deprecated sendMessage/getCompletion/chatCompletion tests --------- Co-authored-by: Dustin Healy <54083382+dustinhealy@users.noreply.github.com>
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
const { logger } = require('@librechat/data-schemas');
|
|
const { CacheKeys } = require('librechat-data-provider');
|
|
const { findToken, updateToken, createToken, deleteTokens } = require('~/models');
|
|
const { getMCPManager, getFlowStateManager } = require('~/config');
|
|
const { getCachedTools, setCachedTools } = require('./Config');
|
|
const { getLogStores } = require('~/cache');
|
|
|
|
/**
|
|
* Initialize MCP servers
|
|
* @param {import('express').Application} app - Express app instance
|
|
*/
|
|
async function initializeMCP(app) {
|
|
const mcpServers = app.locals.mcpConfig;
|
|
if (!mcpServers) {
|
|
return;
|
|
}
|
|
|
|
logger.info('Initializing MCP servers...');
|
|
const mcpManager = getMCPManager();
|
|
const flowsCache = getLogStores(CacheKeys.FLOWS);
|
|
const flowManager = flowsCache ? getFlowStateManager(flowsCache) : null;
|
|
|
|
try {
|
|
await mcpManager.initializeMCP({
|
|
mcpServers,
|
|
flowManager,
|
|
tokenMethods: {
|
|
findToken,
|
|
updateToken,
|
|
createToken,
|
|
deleteTokens,
|
|
},
|
|
});
|
|
|
|
delete app.locals.mcpConfig;
|
|
const availableTools = await getCachedTools();
|
|
|
|
if (!availableTools) {
|
|
logger.warn('No available tools found in cache during MCP initialization');
|
|
return;
|
|
}
|
|
|
|
const toolsCopy = { ...availableTools };
|
|
await mcpManager.mapAvailableTools(toolsCopy, flowManager);
|
|
await setCachedTools(toolsCopy, { isGlobal: true });
|
|
|
|
logger.info('MCP servers initialized successfully');
|
|
} catch (error) {
|
|
logger.error('Failed to initialize MCP servers:', error);
|
|
}
|
|
}
|
|
|
|
module.exports = initializeMCP;
|