diff --git a/packages/core/src/mcp/oauth-provider.ts b/packages/core/src/mcp/oauth-provider.ts index a2fca6eec..a3e998bb7 100644 --- a/packages/core/src/mcp/oauth-provider.ts +++ b/packages/core/src/mcp/oauth-provider.ts @@ -261,6 +261,10 @@ export class MCPOAuthProvider { `); activeCallbackServer = null; + if (activeCallbackTimeout) { + clearTimeout(activeCallbackTimeout); + activeCallbackTimeout = null; + } server.close(); reject(new Error(`OAuth error: ${error}`)); return; @@ -276,6 +280,10 @@ export class MCPOAuthProvider { res.writeHead(400); res.end('Invalid state parameter'); activeCallbackServer = null; + if (activeCallbackTimeout) { + clearTimeout(activeCallbackTimeout); + activeCallbackTimeout = null; + } server.close(); reject(new Error('State mismatch - possible CSRF attack')); return; @@ -294,10 +302,18 @@ export class MCPOAuthProvider { `); activeCallbackServer = null; + if (activeCallbackTimeout) { + clearTimeout(activeCallbackTimeout); + activeCallbackTimeout = null; + } server.close(); resolve({ code, state }); } catch (error) { activeCallbackServer = null; + if (activeCallbackTimeout) { + clearTimeout(activeCallbackTimeout); + activeCallbackTimeout = null; + } server.close(); reject(error); }