Documentation
¶
Overview ¶
Package ratelimit provides token-bucket rate limiting for MCP servers.
The public API consists of the Limiter interface, Decision result type, and NewLimiter constructor. The token bucket implementation is internal.
Index ¶
Constants ¶
View Source
const ( // MiddlewareType is the type constant for the rate limit middleware. MiddlewareType = "ratelimit" // CodeRateLimited is the JSON-RPC error code for rate-limited requests. // Per RFC THV-0057: implementation-defined code in the -32000 to -32099 range. CodeRateLimited int64 = -32029 // MessageRateLimited is the JSON-RPC error message for rate-limited requests. MessageRateLimited = "Rate limit exceeded" )
Variables ¶
This section is empty.
Functions ¶
func CreateMiddleware ¶ added in v0.17.0
func CreateMiddleware(config *types.MiddlewareConfig, runner types.MiddlewareRunner) error
CreateMiddleware is the factory function for rate limit middleware.
Types ¶
type Decision ¶
type Decision struct {
// Allowed is true when the request may proceed.
Allowed bool
// RetryAfter is populated when Allowed is false.
// It indicates the minimum wait before the next request may succeed.
RetryAfter time.Duration
}
Decision holds the result of a rate limit check.
type Limiter ¶
type Limiter interface {
// Allow checks whether a request is permitted.
// toolName is the MCP tool being called (empty for non-tool requests).
// userID is the authenticated user (reserved for #4550, currently no-op).
Allow(ctx context.Context, toolName, userID string) (*Decision, error)
}
Limiter checks rate limits for an MCP server.
func NewLimiter ¶
func NewLimiter(client redis.Cmdable, namespace, name string, crd *v1alpha1.RateLimitConfig) (Limiter, error)
NewLimiter constructs a Limiter from CRD configuration. Returns a no-op limiter (always allows) when crd is nil. namespace and name identify the MCP server for Redis key derivation.
type MiddlewareParams ¶ added in v0.17.0
type MiddlewareParams struct {
Namespace string `json:"namespace"`
ServerName string `json:"server_name"`
Config *v1alpha1.RateLimitConfig `json:"config"`
RedisAddr string `json:"redis_addr,omitempty"`
RedisDB int32 `json:"redis_db,omitempty"`
}
MiddlewareParams holds the parameters for the rate limit middleware factory.
Click to show internal directories.
Click to hide internal directories.