Documentation
¶
Overview ¶
Package ratelimit provides rate limiting functionality for the MCP server
Index ¶
Constants ¶
const (
// DefaultTool is the key for the default rate limit
DefaultTool = "default"
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶ added in v0.3.0
type Config struct {
// DefaultLimit is the default rate limit for tools not explicitly configured
DefaultLimit int
// ReadLimit is the rate limit for read operations (list_resources, get_resource)
ReadLimit int
// WriteLimit is the rate limit for write operations (apply_resource, delete_resource)
WriteLimit int
}
Config holds the rate limiting configuration
func NewDefaultConfig ¶ added in v0.3.0
func NewDefaultConfig() *Config
NewDefaultConfig returns a Config with default values, optionally overridden by environment variables:
- MKP_RATE_LIMIT_DEFAULT: default rate limit (default: 60)
- MKP_RATE_LIMIT_READ: read operations rate limit (default: 120)
- MKP_RATE_LIMIT_WRITE: write operations rate limit (default: 30)
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 GetRateLimiterWithConfig ¶ added in v0.3.0
func GetRateLimiterWithConfig(config *Config) *RateLimiter
GetRateLimiterWithConfig returns a RateLimiter with the given configuration. If config is nil, default configuration is used.
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