MCP Documentation Server

import { Request, Response, NextFunction } from 'express'; import { rateLimiter } from '../utils/rateLimit'; import { RateLimitExceededError } from '../errors'; export const rateLimitMiddleware = (type: string) => { return (req: Request, res: Response, next: NextFunction) => { if (!rateLimiter.isAllowed(type)) { throw new RateLimitExceededError(`Rate limit exceeded for ${type}`); } // Add rate limit headers res.setHeader('X-RateLimit-Limit', '100'); res.setHeader('X-RateLimit-Remaining', rateLimiter.getRemainingRequests(type).toString()); res.setHeader('X-RateLimit-Reset', Math.floor(Date.now() / 1000 + 60).toString()); next(); }; };