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 && (
+
+ )}