Sean McGrath
b443254151
🔐 fix: persist new MCP oauth tokens properly ( #10439 )
...
* fix: re-fetch OAuth flow state after completeOAuthFlow
* test: add tests for MCP OAuth flow state bugs
2025-11-10 19:51:20 -05:00
Theo N. Truong
ce7e6edad8
🔄 refactor: MCP Registry System with Distributed Caching ( #10191 )
...
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Has been cancelled
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Has been cancelled
Docker Dev Images Build / build (Dockerfile, librechat-dev, node) (push) Has been cancelled
Docker Dev Images Build / build (Dockerfile.multi, librechat-dev-api, api-build) (push) Has been cancelled
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Has been cancelled
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Has been cancelled
* refactor: Restructure MCP registry system with caching
- Split MCPServersRegistry into modular components:
- MCPServerInspector: handles server inspection and health checks
- MCPServersInitializer: manages server initialization logic
- MCPServersRegistry: simplified registry coordination
- Add distributed caching layer:
- ServerConfigsCacheRedis: Redis-backed configuration cache
- ServerConfigsCacheInMemory: in-memory fallback cache
- RegistryStatusCache: distributed leader election state
- Add promise utilities (withTimeout) replacing Promise.race patterns
- Add comprehensive cache integration tests for all cache implementations
- Remove unused MCPManager.getAllToolFunctions method
* fix: Update OAuth flow to include user-specific headers
* chore: Update Jest configuration to ignore additional test files
- Added patterns to ignore files ending with .helper.ts and .helper.d.ts in testPathIgnorePatterns for cleaner test runs.
* fix: oauth headers in callback
* chore: Update Jest testPathIgnorePatterns to exclude helper files
- Modified testPathIgnorePatterns in package.json to ignore files ending with .helper.ts and .helper.d.ts for cleaner test execution.
* ci: update test mocks
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
2025-10-31 15:00:21 -04:00
Federico Ruggi
ea45d0b9c6
🏷️ fix: Add user ID to MCP tools cache keys ( #10201 )
...
* add user id to mcp tools cache key
* tests
* clean up redundant tests
* remove unused imports
2025-10-30 17:09:56 -04:00
Federico Ruggi
5ce67b5b71
📮 feat: Custom OAuth Headers Support for MCP Server Config ( #10014 )
...
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Waiting to run
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Blocked by required conditions
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Has been cancelled
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Has been cancelled
Docker Dev Images Build / build (Dockerfile, librechat-dev, node) (push) Has been cancelled
Docker Dev Images Build / build (Dockerfile.multi, librechat-dev-api, api-build) (push) Has been cancelled
* add oauth_headers field to mcp options
* wrap fetch to pass oauth headers
* fix order
* consolidate headers passing
* fix tests
2025-10-11 11:17:12 -04:00
Sean McGrath
f61e057f7f
🔐 fix: MCP OAuth Token Persistence Race Condition and Refresh Auth Method ( #9773 )
...
* set supported endpoint auth method when token_url exists
* persist tokens immediately
* add token storage validation tests
2025-09-23 09:35:56 -04:00
Danny Avila
386900fb4f
🧰 refactor: Decouple MCP Tools from System Tools ( #9748 )
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Waiting to run
2025-09-21 07:56:40 -04:00
Danny Avila
c827fdd10e
🚦 feat: Auto-reinitialize MCP Servers on Request ( #9226 )
2025-08-23 03:27:05 -04:00
Danny Avila
da4aa37493
🛠️ refactor: Consolidate MCP Tool Caching ( #9172 )
...
* 🛠️ refactor: Consolidate MCP Tool Caching
* 🐍 fix: Correctly mock and utilize updateMCPUserTools in MCP route tests
2025-08-20 12:19:29 -04:00
Theo N. Truong
8780a78165
♻️ refactor: MCPManager for Scalability, Fix App-Level Detection, Add Lazy Connections ( #8930 )
...
* feat: MCP Connection management overhaul - Making MCPManager manageable
Refactor the monolithic MCPManager into focused, single-responsibility classes:
• MCPServersRegistry: Server configuration discovery and metadata management
• UserConnectionManager: Manages user-level connections
• ConnectionsRepository: Low-level connection pool with lazy loading
• MCPConnectionFactory: Handles MCP connection creation with OAuth support
New Features:
• Lazy loading of app-level connections for horizontal scaling
• Automatic reconnection for app-level connections
• Enhanced OAuth detection with explicit requiresOAuth flag
• Centralized MCP configuration management
Bug Fixes:
• App-level connection detection in MCPManager.callTool
• MCP Connection Reinitialization route behavior
Optimizations:
• MCPConnection.isConnected() caching to reduce overhead
• Concurrent server metadata retrieval instead of sequential
This refactoring addresses scalability bottlenecks and improves reliability
while maintaining backward compatibility with existing configurations.
* feat: Enabled import order in eslint.
* # Moved tests to __tests__ folder
# added tests for MCPServersRegistry.ts
* # Add unit tests for ConnectionsRepository functionality
* # Add unit tests for MCPConnectionFactory functionality
* # Reorganize MCP connection tests and improve error handling
* # reordering imports
* # Update testPathIgnorePatterns in jest.config.mjs to exclude development TypeScript files
* # removed mcp/manager.ts
2025-08-13 11:45:06 -04:00
Dustin Healy
f1c6e4d55e
🧪 ci: Unit Tests for MCP Routes ( #8803 )
...
* refactor: remove unreachable if checks from mcp routes
* test: add tests for mcp routes
2025-08-01 14:47:00 -04:00