diff --git a/api/package.json b/api/package.json index 555064d195..cdcb71e748 100644 --- a/api/package.json +++ b/api/package.json @@ -47,7 +47,7 @@ "@librechat/api": "*", "@librechat/data-schemas": "*", "@microsoft/microsoft-graph-client": "^3.0.7", - "@modelcontextprotocol/sdk": "^1.21.0", + "@modelcontextprotocol/sdk": "^1.24.3", "@node-saml/passport-saml": "^5.1.0", "@smithy/node-http-handler": "^4.4.5", "axios": "^1.12.1", diff --git a/client/src/components/MCP/ServerInitializationSection.tsx b/client/src/components/MCP/ServerInitializationSection.tsx index d736b5cd7b..b5f71335d7 100644 --- a/client/src/components/MCP/ServerInitializationSection.tsx +++ b/client/src/components/MCP/ServerInitializationSection.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import { RefreshCw } from 'lucide-react'; +import { RefreshCw, Trash2 } from 'lucide-react'; import { Button, Spinner } from '@librechat/client'; import { useLocalize, useMCPServerManager, useMCPConnectionStatus } from '~/hooks'; -import { useGetStartupConfig } from '~/data-provider'; interface ServerInitializationSectionProps { sidePanel?: boolean; @@ -22,12 +21,13 @@ export default function ServerInitializationSection({ const localize = useLocalize(); const { + getOAuthUrl, + isCancellable, + isInitializing, + cancelOAuthFlow, initializeServer, availableMCPServers, - cancelOAuthFlow, - isInitializing, - isCancellable, - getOAuthUrl, + revokeOAuthForServer, } = useMCPServerManager({ conversationId }); const { connectionStatus } = useMCPConnectionStatus({ @@ -73,7 +73,6 @@ export default function ServerInitializationSection({ // Unified button rendering const isReinit = shouldShowReinit; - const outerClass = isReinit ? 'flex justify-start' : 'flex justify-end'; const buttonVariant = isReinit ? undefined : 'default'; let buttonText = ''; @@ -94,13 +93,24 @@ export default function ServerInitializationSection({ ); return ( -
+
+ {requiresOAuth && revokeOAuthForServer && ( + + )}