rapidapi-mcp-server
Version:
MCP server for discovering and assessing APIs from RapidAPI marketplace
38 lines (37 loc) • 1.62 kB
JavaScript
// Rate Limiting Configuration for Ethical Usage
// This module defines human-like timing patterns for respectful API interactions
// Human-like interaction timing patterns
export const ETHICAL_RATE_LIMITS = {
// 3-8 second delays between requests (human reading/decision time)
requestDelayMin: 3000,
requestDelayMax: 8000,
// Page interaction timing
pageLoadWait: 2000, // Wait for page to fully load
antiDetectionDelay: 2000, // Base delay + random 0-3s for anti-detection
// Error handling with exponential backoff
retryBaseDelay: 5000, // Start with 5 second delay
retryMaxAttempts: 3, // Maximum retry attempts
// Usage limits for respectful behavior
maxDailyRequests: 100, // Reasonable limit for API discovery
maxConcurrentRequests: 1 // Always sequential, never concurrent
};
// Generate human-like random delay
export function getRandomDelay(min, max) {
return min + Math.random() * (max - min);
}
// Calculate exponential backoff delay
export function getRetryDelay(attempt, baseDelay) {
return baseDelay * Math.pow(2, attempt - 1);
}
// Log request timing for audit purposes
export function logRequestTiming(action, url, delay) {
const timestamp = new Date().toISOString();
console.error(`[${timestamp}] ${action}: ${url}${delay ? ` (delayed ${Math.round(delay / 1000)}s)` : ''}`);
}
// Validate request against rate limits
export function validateRequestRate(requestCount, config) {
if (requestCount >= config.maxDailyRequests) {
throw new Error(`Daily request limit of ${config.maxDailyRequests} exceeded`);
}
return true;
}