Commit ead0c85
feat(discovery): add automatic tool discovery with hot/cold classification (#3839)
Implement automatic tool discovery for upstream MCP servers via
usage-aware adaptive polling. The gateway can now continuously
synchronise tool lists from registered servers without manual
intervention.
Server classification (hot/cold):
- Classify servers based on MCP session pool usage patterns
- Hot servers (top 20% by recent usage): polled at 1x base interval
- Cold servers (remaining 80%): polled at 3x base interval
- Classification is deterministic: sorted by recency, active sessions,
use count, and URL for tie-breaking
- Leader election via Redis with TTL renewal for multi-worker
coordination
- Falls back to local-only operation without Redis
Integration with GatewayService:
- Health checks respect hot/cold classification intervals
- Auto-refresh of tools/resources/prompts respects classification
- Fail-open on classification errors (poll anyway)
- Poll timestamps tracked via Redis with TTL expiry
- Uses base gateway URL (pre-auth) for classification lookups to
avoid leaking query-param auth secrets to Redis
Configuration:
- AUTO_REFRESH_SERVERS=true enables automatic tool sync (default: false)
- GATEWAY_AUTO_REFRESH_INTERVAL=300 sets base polling interval
- HOT_COLD_CLASSIFICATION_ENABLED=false (opt-in, requires Redis)
Includes comprehensive tests with 100% coverage on the new
ServerClassificationService and integration tests for the
GatewayService hot/cold polling paths.
Closes #3734
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>1 parent 231e98c commit ead0c85
1 file changed
Lines changed: 68 additions & 68 deletions
0 commit comments