This release ships the Streamable HTTP transport (from the unpublished 1.1.0) together with scalability hardening across the request path and HTTP server.
Added
- Client-side rate limiting: a token bucket matching FRED's 120 requests/minute per-key quota
- TTL+LRU response cache and coalescing of identical in-flight requests
- Retries with exponential backoff and jitter for 429/5xx/network failures, honoring
Retry-After - Request timeouts via
AbortController - HTTP session limits (
MCP_MAX_SESSIONS) and idle-session reaping (MCP_SESSION_TTL_MS) GET /healthzendpoint with session, cache, and uptime statistics- Graceful shutdown on SIGTERM as well as SIGINT
- Leveled stderr logging via
LOG_LEVEL - Streamable HTTP transport (
--httpflag orTRANSPORT=http), MCP conformance CI, documentation site - All tunables configurable through environment variables (see the README configuration table)
Changed
- A missing
FRED_API_KEYnow fails with a clear configuration error instead of sending a placeholder key that FRED rejected with an opaque 400 - Unknown HTTP session IDs return 404 instead of 400
fred_get_seriesfetches observations and metadata concurrentlyfred_browseacceptsfilter_variableandfilter_valueforcategory_series- Tools are registered through
registerTool(SDK 1.25 deprecatedserver.tool)
Fixed
Full changelog: v1.0.2...v1.2.0