Documentation
¶
Overview ¶
Package ratelimit provides rate limiting functionality for the MCP server
Index ¶
Constants ¶
const (
DefaultTool = "default"
)
TODO: make these constants configurable
Variables ¶
var DefaultConfig = map[string]int{ types.ListResourcesToolName: readLimit, types.GetResourceToolName: readLimit, types.ApplyResourceToolName: writeLimit, types.DeleteResourceToolName: writeLimit, DefaultTool: defaultLimit, }
DefaultConfig defines the default rate limits for different tools
Functions ¶
Types ¶
type MockToolHandler ¶
MockToolHandler for testing middleware
func (*MockToolHandler) Handle ¶
func (m *MockToolHandler) Handle(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)
Handle implements the ToolHandler interface for mock testing
type RateLimiter ¶
type RateLimiter struct {
// contains filtered or unexported fields
}
RateLimiter implements a rate limiting middleware for MCP server Using a fixed window rate limiting algorithm
func GetDefaultRateLimiter ¶
func GetDefaultRateLimiter() *RateLimiter
GetDefaultRateLimiter returns a RateLimiter with default configuration
func NewRateLimiter ¶
func NewRateLimiter(opts ...RateLimiterOption) *RateLimiter
NewRateLimiter creates a new rate limiter with the given options
func (*RateLimiter) Middleware ¶
func (rl *RateLimiter) Middleware() server.ToolHandlerMiddleware
Middleware returns a middleware function for the MCP server
type RateLimiterOption ¶
type RateLimiterOption func(*RateLimiter)
RateLimiterOption is a function that configures a RateLimiter
func WithDefaultLimit ¶
func WithDefaultLimit(requestsPerMinute int) RateLimiterOption
WithDefaultLimit sets the default rate limit for all tools
func WithTimeWindow ¶
func WithTimeWindow(window time.Duration) RateLimiterOption
WithTimeWindow sets the time window for rate limiting
func WithToolLimit ¶
func WithToolLimit(toolName string, requestsPerMinute int) RateLimiterOption
WithToolLimit sets the rate limit for a specific tool