🔧 fix: Fix rampant pings and rate limiting

- Skips idle connection checks in `getMCPManager` to avoid unnecessary pings.
- Introduces a skipOAuthTimeout flag during initial connection to prevent timeouts during server discovery.
- Uses a lightweight connection state check instead of ping to avoid rate limits.
- Prevents refetch spam and rate limit errors when checking connection status.
- Fixes an issue where the server connection was not being disconnected.
This commit is contained in:
Dustin Healy 2025-07-21 12:53:28 -07:00
parent 1da5365397
commit 10e06f2221
9 changed files with 90 additions and 39 deletions

View file

@ -219,7 +219,7 @@ router.get('/connection/status', requireJwtAuth, async (req, res) => {
return res.status(401).json({ error: 'User not authenticated' });
}
const mcpManager = getMCPManager();
const mcpManager = getMCPManager(null, true); // Skip idle checks to avoid ping spam
const connectionStatus = {};
// Get all MCP server names from custom config
@ -237,12 +237,14 @@ router.get('/connection/status', requireJwtAuth, async (req, res) => {
const userConnection = mcpManager.getUserConnectionIfExists(user.id, serverName);
const hasUserConnection = !!userConnection;
// Determine if connected based on actual connection state
// Use lightweight connection state check instead of ping-based isConnected()
let connected = false;
if (hasAppConnection) {
connected = await appConnection.isConnected();
// Check connection state without ping to avoid rate limits
connected = appConnection.connectionState === 'connected';
} else if (hasUserConnection) {
connected = await userConnection.isConnected();
// Check connection state without ping to avoid rate limits
connected = userConnection.connectionState === 'connected';
}
// Determine if this server requires user authentication