MTContext Docs

Changelog

What changed in each MT-MCP release.

All notable changes to MTContext are documented here, grouped by release date. Format loosely follows Keep a Changelog.

2026-09-23

@mt-mcp/mcp — v2.0.0

Major Changes

  • a77d2fb: Consolidated and renamed several MCP tools to reduce tool-selection confusion for AI clients:

    • Removed get_correlation (pairwise correlation). Use get_correlation_matrix with a 2-element symbols array instead — matrix[0][1] is the pairwise coefficient.
    • Renamed get_journal to get_terminal_journal_log to stop it colliding with the unrelated trade-journal tools (write_trade_note / query_journal / explain_setup / score_journal_entry).
    • Renamed modify_order to modify_pending_order to distinguish it from modify_position (open positions vs. pending orders).
    • Merged set_equity_guard / get_equity_guard_status / remove_equity_guard into a single manage_equity_guard tool, dispatched by action: set | status | remove — matching the existing manage_alerts / manage_news_guard pattern.
    • Merged set_prop_firm_rules / get_prop_firm_status / remove_prop_firm_rules into a single manage_prop_firm_rules tool, dispatched by action: set | status | remove.

    Any MCP client with a cached tool list must refresh tools/list to pick up the new names.

  • 1a524ef: Fixed check_portfolio_exposure's notional_pct_equity (and the max_currency_notional_pct cap it feeds) to be leverage-adjusted instead of comparing raw face-value notional to equity. Previously any ordinary leveraged FX position breached the default 30% cap regardless of how the account was actually positioned — a 0.05-lot USDJPY position on a $986, 100:1-leverage account reported over 500% of equity. notional_pct_equity now reports (notional / leverage) / equity * 100, approximating the margin the position actually commits.

    The response gains a top-level leverage field showing the account leverage used. When leverage is unavailable or invalid (a stale EA build, or a broker feed that omits it), the tool fails safe: LEVERAGE_UNAVAILABLE is added to fail_safe_reasons (forcing verdict to at least caution), leverage and every currency's notional_pct_equity report null, and max_currency_notional_pct is excluded from breaches for that call — it never silently falls back to the old unadjusted ratio.

    Breaking (values, not shape): notional_pct_equity magnitudes change materially for every existing caller under the corrected formula — the field name, type, and null-vs-computed semantics are unchanged. Any caller or prop-firm rule hard-coded against the old (uniformly-breaching) scale should be revisited.

  • bf778fc: Removed two macro-context MCP tools whose scoring inputs don't support the confidence they presented (plans/260828-2047-mtcontext-assessment-fixes/phase-09-tool-catalog-cleanup.md):

    • get_cb_stance — derived a central-bank hawk/dove score from unfiltered scraped news with no source-quality filtering.
    • recommend_strategy_style — its style/confidence output contradicted backtest evidence for several regime/trend/volatility combinations in its own threshold table.

    Both are full removals, not scoring-logic fixes — the underlying input-quality problems aren't repairable by changing how the score is computed. There is no replacement tool for either. get_risk_regime and get_economic_surprise are unaffected; the shared computeCurrentRegime helper recommend_strategy_style depended on is retained and continues to back get_risk_regime.

    Also documents the 9999 sentinel ratio value get_order_flow reports for a one-sided order-flow imbalance (unrelated cleanup, no behavior change).

Minor Changes

  • 1a524ef: backtest_strategy condition trees can now address three more indicators: adx (fields adx/plus_di/minus_di, Wilder's method, default period 14), cci (single series, default period 14), and stochastic (fields k/d, defaults k_period: 5, d_period: 3, slowing: 3) — matching get_indicator's existing ADX/CCI/STOCHASTIC parameter names and defaults exactly. The addressable indicator set grows from 7 to 10; existing bounds (tree depth ≤ 4, ≤ 32 nodes, ≤ 8 distinct series) are unchanged. Purely additive — no existing strategy or indicator is affected.

  • 1a524ef: get_indicator and get_market_snapshot now document and expose their array ordering convention, and get_indicator gains a current convenience field.

    • Both tools' descriptions now state that returned value arrays are newest-first (index 0 is the most recent completed bar), and name detect_structure, detect_patterns, the get_market_structure family, and get_order_flow as using the opposite (oldest-first/chronological) convention — a caller can no longer assume one ordering applies across the whole toolset.
    • Every successful get_indicator response (single-timeframe and each entry under by_timeframe) and every get_market_snapshot response now includes order: "newest_first", so callers can assert the convention programmatically instead of relying on having read the docs.
    • get_indicator responses now include a current field (or, for composite indicators, one <series>_current field per named series, e.g. macd_current/signal_current/histogram_current) holding the most recent completed-bar value, for callers who just want the latest reading.
    • check_confluence's description gains a one-clause cross-reference noting bar_index counts backward from the most recent bar, consistent with get_indicator's newest-first convention.
    • Purely additive: no existing field is removed, renamed, or reordered, and no EA/wire protocol change.
  • 5461195: GET /api/journal and the query_journal MCP tool now surface a license_total_entries field when a query resolves to an empty result because of terminal scoping (the caller's default terminal binding, or an explicit non-"all" terminal_id) rather than the license genuinely having no journal history. This distinguishes "this license has never journaled anything" from "entries exist, but outside the current terminal scope" — previously both cases returned an identical { entries: [], total: 0 }.

    • license_total_entries is only added when the scoped query returns zero entries, the effective terminal scope is narrower than "every terminal" (i.e. not terminal_id: "all", an empty string, or an omitted value on a session with no bound terminal), and the license has at least one journal entry anywhere.
    • No change to the response when the scoped query returns entries, or when the license genuinely has zero entries anywhere.
    • query_journal's tool description now documents this signal.

Patch Changes

  • bba917d: Fixed check_portfolio_exposure's clusters[].aggregate_notional_pct_equity reporting ~100x (the account's leverage ratio) too high, e.g. 404.33% instead of ~4.04% for a $989.29/100:1 account with two small correlated positions. The cluster aggregation summed raw face-value symbolNotional straight over equity, skipping the / leverage step that currency_exposure.notional_pct_equity already applied — the two fields now share the same ((notional / leverage) / equity) * 100 basis. Since the default max_cluster_notional_pct cap is 40%, this previously tripped block on any book with two or more correlated open positions regardless of actual size. When account leverage is unavailable (LEVERAGE_UNAVAILABLE), every cluster's aggregate_notional_pct_equity now reports null and max_cluster_notional_pct is excluded from breaches, mirroring max_currency_notional_pct's existing fail-safe treatment.
  • Updated dependencies [1a524ef]
    • @mt-mcp/shared@1.2.0

@mt-mcp/gateway — v2.0.0

Major Changes

  • bf778fc: Retired both REST/gateway surfaces serving the now-removed get_cb_stance MCP tool's score (see the @mt-mcp/mcp major changelog entry in this same release for the tool removal itself):

    • Gateway-internal GET /api/cb-stance (@mt-mcp/gateway), plus the CbStanceRefresher background job that populated it.
    • Public, OpenAPI-documented, Pro+ tier GET /api/v1/macro/cb-stance/:currency (@mt-mcp/api), proxying to the route above.

    Callers of either endpoint now receive a 404, with no deprecation window — both served a score already established as unreliable, so a transition period would only have kept serving it to unmigrated callers. No other @mt-mcp/api or @mt-mcp/gateway route changes.

    @mt-mcp/license loses the now-unused CbStanceStore abstraction (the interface, PgCbStanceStore, InMemoryCbStanceStore, and their exports) — nothing calls it once both REST surfaces and the refresher above are gone. The underlying cb_stance_snapshots table definition is left in place (dead schema, not migrated away).

Minor Changes

  • 5461195: GET /api/journal and the query_journal MCP tool now surface a license_total_entries field when a query resolves to an empty result because of terminal scoping (the caller's default terminal binding, or an explicit non-"all" terminal_id) rather than the license genuinely having no journal history. This distinguishes "this license has never journaled anything" from "entries exist, but outside the current terminal scope" — previously both cases returned an identical { entries: [], total: 0 }.

    • license_total_entries is only added when the scoped query returns zero entries, the effective terminal scope is narrower than "every terminal" (i.e. not terminal_id: "all", an empty string, or an omitted value on a session with no bound terminal), and the license has at least one journal entry anywhere.
    • No change to the response when the scoped query returns entries, or when the license genuinely has zero entries anywhere.
    • query_journal's tool description now documents this signal.

Patch Changes

  • Updated dependencies [1a524ef]
  • Updated dependencies [bf778fc]
    • @mt-mcp/shared@1.2.0
    • @mt-mcp/license@2.0.0
    • @mt-mcp/broker@1.0.2

@mt-mcp/license — v2.0.0

Major Changes

  • bf778fc: Retired both REST/gateway surfaces serving the now-removed get_cb_stance MCP tool's score (see the @mt-mcp/mcp major changelog entry in this same release for the tool removal itself):

    • Gateway-internal GET /api/cb-stance (@mt-mcp/gateway), plus the CbStanceRefresher background job that populated it.
    • Public, OpenAPI-documented, Pro+ tier GET /api/v1/macro/cb-stance/:currency (@mt-mcp/api), proxying to the route above.

    Callers of either endpoint now receive a 404, with no deprecation window — both served a score already established as unreliable, so a transition period would only have kept serving it to unmigrated callers. No other @mt-mcp/api or @mt-mcp/gateway route changes.

    @mt-mcp/license loses the now-unused CbStanceStore abstraction (the interface, PgCbStanceStore, InMemoryCbStanceStore, and their exports) — nothing calls it once both REST surfaces and the refresher above are gone. The underlying cb_stance_snapshots table definition is left in place (dead schema, not migrated away).

Patch Changes

  • Updated dependencies [1a524ef]
    • @mt-mcp/shared@1.2.0

@mt-mcp/shared — v1.2.0

Minor Changes

  • 1a524ef: backtest_strategy condition trees can now address three more indicators: adx (fields adx/plus_di/minus_di, Wilder's method, default period 14), cci (single series, default period 14), and stochastic (fields k/d, defaults k_period: 5, d_period: 3, slowing: 3) — matching get_indicator's existing ADX/CCI/STOCHASTIC parameter names and defaults exactly. The addressable indicator set grows from 7 to 10; existing bounds (tree depth ≤ 4, ≤ 32 nodes, ≤ 8 distinct series) are unchanged. Purely additive — no existing strategy or indicator is affected.

@mt-mcp/api — v2.0.0

Major Changes

  • bf778fc: Retired both REST/gateway surfaces serving the now-removed get_cb_stance MCP tool's score (see the @mt-mcp/mcp major changelog entry in this same release for the tool removal itself):

    • Gateway-internal GET /api/cb-stance (@mt-mcp/gateway), plus the CbStanceRefresher background job that populated it.
    • Public, OpenAPI-documented, Pro+ tier GET /api/v1/macro/cb-stance/:currency (@mt-mcp/api), proxying to the route above.

    Callers of either endpoint now receive a 404, with no deprecation window — both served a score already established as unreliable, so a transition period would only have kept serving it to unmigrated callers. No other @mt-mcp/api or @mt-mcp/gateway route changes.

    @mt-mcp/license loses the now-unused CbStanceStore abstraction (the interface, PgCbStanceStore, InMemoryCbStanceStore, and their exports) — nothing calls it once both REST surfaces and the refresher above are gone. The underlying cb_stance_snapshots table definition is left in place (dead schema, not migrated away).

Patch Changes

  • Updated dependencies [1a524ef]
  • Updated dependencies [bf778fc]
    • @mt-mcp/shared@1.2.0
    • @mt-mcp/license@2.0.0

@mt-mcp/dashboard — v1.1.2

Patch Changes

  • Updated dependencies [1a524ef]
    • @mt-mcp/shared@1.2.0

2026-08-22

@mt-mcp/mcp — v1.2.0

Minor Changes

  • Twenty new tools and several enhancements to existing ones, mostly server-side (no EA round-trip):

    • Market Character — get_volatility_regime (compressed/expanding/trending/choppy from ATR ratio, Bollinger bandwidth, efficiency ratio), get_market_structure (up to 4 timeframes at once: HH/HL/LH/LL swing sequence, per-timeframe trend, BOS/CHoCH break events, cross-timeframe alignment), get_state_delta (returns only what changed for a symbol since the caller's last call — new bar, RSI/EMA cross, ATR regime shift, key-level break), and get_symbol_session_profile (typical session range, drift, reversal timing, event sensitivity).
    • Market Structure (SMC/ICT) — detect_structure: fair value gaps, order blocks, liquidity sweeps, break of structure, change of character, as deterministic bar-derived locations (not trade signals).
    • Order Flow — get_order_flow: per-bar footprint (buy/sell volume, delta, POC, imbalances) estimated from tick history.
    • Session Analytics — get_session_stats: historical London/NY/Asia session range, drift, and breakout-continuation-vs-reversal rates.
    • Session Trading Mode — set_mode / get_mode: per-session paper/live switch. paper forces every trading tool's dry_run to true for the rest of the session; live (the default) changes nothing and is not a trading confirmation.
    • Trade Journal — explain_setup (win rate, expectancy, and streak stats for a named setup) and score_journal_entry (self-review quality score for a journal entry; optional LLM-assisted scoring is off by default).
    • Computed Analytics — get_equity_curve (realized-equity time series from closed trades), get_swap_calendar (projected rollover costs), estimate_fill (spread + this license's own audited slippage for a hypothetical order).
    • Macro Risk — recommend_strategy_style (trend-follow/mean-revert/breakout/stand-aside from regime + volatility) and get_event_sensitivity (historical price move per calendar event type for a symbol).
    • Risk Management — get_correlation_matrix (N×N correlation across 2-12 symbols) and check_portfolio_exposure (aggregate currency/cluster exposure with a proceed/caution/block verdict).
    • Indicator — check_confluence: evaluates up to 8 indicator conditions across timeframes into one pass/fail verdict.
    • AI Coaching — simulate_ea_action (what a mechanical EA template would do right now) and an upgrade to backtest_strategy: strategies now evaluate against real server-computed indicator series instead of a fixed stub context, plus a JSON condition-tree DSL. Legacy flat-key strategies still work but their reported results change now that they run against real data.
    • get_economic_calendar now tags every event with a category; get_news gained optional symbol/currency relevance filtering.

Patch Changes

  • Updated dependencies
    • @mt-mcp/shared@1.1.0

@mt-mcp/gateway — v1.2.1

Patch Changes

  • Updated dependencies
    • @mt-mcp/shared@1.1.0
    • @mt-mcp/broker@1.0.1
    • @mt-mcp/license@1.2.1

@mt-mcp/license — v1.2.1

Patch Changes

  • Updated dependencies
    • @mt-mcp/shared@1.1.0

@mt-mcp/shared — v1.1.0

Minor Changes

  • Twenty new tools and several enhancements to existing ones, mostly server-side (no EA round-trip):

    • Market Character — get_volatility_regime (compressed/expanding/trending/choppy from ATR ratio, Bollinger bandwidth, efficiency ratio), get_market_structure (up to 4 timeframes at once: HH/HL/LH/LL swing sequence, per-timeframe trend, BOS/CHoCH break events, cross-timeframe alignment), get_state_delta (returns only what changed for a symbol since the caller's last call — new bar, RSI/EMA cross, ATR regime shift, key-level break), and get_symbol_session_profile (typical session range, drift, reversal timing, event sensitivity).
    • Market Structure (SMC/ICT) — detect_structure: fair value gaps, order blocks, liquidity sweeps, break of structure, change of character, as deterministic bar-derived locations (not trade signals).
    • Order Flow — get_order_flow: per-bar footprint (buy/sell volume, delta, POC, imbalances) estimated from tick history.
    • Session Analytics — get_session_stats: historical London/NY/Asia session range, drift, and breakout-continuation-vs-reversal rates.
    • Session Trading Mode — set_mode / get_mode: per-session paper/live switch. paper forces every trading tool's dry_run to true for the rest of the session; live (the default) changes nothing and is not a trading confirmation.
    • Trade Journal — explain_setup (win rate, expectancy, and streak stats for a named setup) and score_journal_entry (self-review quality score for a journal entry; optional LLM-assisted scoring is off by default).
    • Computed Analytics — get_equity_curve (realized-equity time series from closed trades), get_swap_calendar (projected rollover costs), estimate_fill (spread + this license's own audited slippage for a hypothetical order).
    • Macro Risk — recommend_strategy_style (trend-follow/mean-revert/breakout/stand-aside from regime + volatility) and get_event_sensitivity (historical price move per calendar event type for a symbol).
    • Risk Management — get_correlation_matrix (N×N correlation across 2-12 symbols) and check_portfolio_exposure (aggregate currency/cluster exposure with a proceed/caution/block verdict).
    • Indicator — check_confluence: evaluates up to 8 indicator conditions across timeframes into one pass/fail verdict.
    • AI Coaching — simulate_ea_action (what a mechanical EA template would do right now) and an upgrade to backtest_strategy: strategies now evaluate against real server-computed indicator series instead of a fixed stub context, plus a JSON condition-tree DSL. Legacy flat-key strategies still work but their reported results change now that they run against real data.
    • get_economic_calendar now tags every event with a category; get_news gained optional symbol/currency relevance filtering.

@mt-mcp/api — v1.0.1

Patch Changes

  • Updated dependencies
    • @mt-mcp/shared@1.1.0
    • @mt-mcp/license@1.2.1

@mt-mcp/dashboard — v1.1.1

Patch Changes

  • Updated dependencies
    • @mt-mcp/shared@1.1.0

2026-08-17

@mt-mcp/api — v1.0.0

First release of a standalone REST API server (Hono, OpenAPI 3.1) that exposes the same account, market, trading, risk, and macro capabilities as the MCP tool surface over plain HTTP, for integrations that don't speak MCP:

  • Authentication — license-scoped API keys (mtmcp_api_ prefix, max 5 active per license, SHA-256 hashed) are exchanged for a short-lived JWT on first use and cached per-pod for 60s; a pre-exchanged JWT also works directly. Terminal targeting is via an X-Terminal-Id header rather than a session binding.
  • Coverage — market data, account/positions/orders/history, indicators, key levels & patterns, coaching (fibonacci, trade explain, backtest), analytics (stats, P&L, execution quality), risk (lot sizing, portfolio summary, correlation), macro/sentiment/news/risk-regime, and management config (alerts, equity guard, prop-firm rules, journal, news guard) — all gated by the same read / analytics / trade capability tiers as the MCP tools.
  • Trading safety — every trade-affecting endpoint (/api/v1/orders, /api/v1/positions/*) defaults dry_run to true; live execution requires an explicit "dry_run": false.
  • Rate limiting — Redis-backed, tier-scaled (Free 10 / Pro 60 / Team 300 / Enterprise 1000 req/min per license) on its own bucket, separate from MCP dispatch traffic; the server refuses to start in production without REDIS_URL configured rather than silently serving unlimited traffic.
  • Docs — interactive Scalar API reference at /api/v1/docs, OpenAPI 3.1 spec at /api/v1/openapi.json.
  • 57 unit tests covering routes, middleware, auth, and the gateway client; wired into CI.

@mt-mcp/dashboard — v1.1.0

  • Added an API Keys management page (Dashboard → API Keys) to create, label, and revoke REST API keys.

@mt-mcp/gateway — v1.2.0

  • Added GET/POST/DELETE /api/dashboard/api-keys so the dashboard can list, create, and revoke a license's REST API keys.

@mt-mcp/license — v1.2.0

  • Added the api_keys table and an ApiKeyRepository (SHA-256 hashed keys, license-scoped, JSONB permissions reserved for future scoped-key support) backing API key issuance, lookup, and revocation.

@mt-mcp/docs — v1.1.0

  • Added a REST API section (/docs/api) covering authentication, rate limits, response format, and a full endpoint reference table grouped by capability tier — ported from the engineering getting-started guide and cross-linked from the Introduction, Overview, and Architecture pages.

2026-07-21

@mt-mcp/mcp — v1.1.0

Five new macro & risk tool groups, all EA-independent (they work with no terminal connected):

  • Event & calendar risk — get_event_risk gives a pre-trade blackout verdict (proceed | caution | block, with resume_after) for a symbol's currencies, and get_holding_risk flags event landings, weekend/holiday gap exposure, and triple-swap days across a hold window. get_economic_calendar now falls back to a server-side calendar on MT4 or when the terminal is disconnected, and every response carries a source: "terminal" | "server" field.
  • Macro context — get_risk_regime (composite risk-on/risk-off score with drivers and sizing advice), get_economic_surprise (rolling actual-vs-forecast index per currency), get_cb_stance (hawk/dove score per central bank), and get_market_context (live DXY / VIX / US10Y levels with a transparent risk_tone tag; missing inputs are listed, never zeroed).
  • Rate expectations — get_rate_expectations returns each G10 central bank's next meeting and countdown, current policy rate, and last decision, plus market-implied hike/hold/cut probabilities for USD when a Fed Funds futures source is configured. Every entry is tagged data_quality: "implied" | "calendar_only" and never fabricates probabilities.
  • News guard — set_news_guard / get_news_guard_status / remove_news_guard: a server-side monitor that polls news, classifies severity and affected currencies, and delivers alerts through the existing poll_alerts path. Notify-only in this release.
  • Prop-firm rule tracker — set_prop_firm_rules / get_prop_firm_status / remove_prop_firm_rules: tracks daily-loss, static/trailing drawdown, profit target, minimum trading days, and consistency rules, and returns a decision-ready verdict (ok | warning | critical | breached), per-rule headroom, and a max_safe_risk_percent for the next trade. Ships FTMO and generic presets; advisory by default, with an optional link_equity_guard to install matching enforcement.
  • get_etf_flows (gold ETF creations/redemptions for GLD/IAU) is included but disabled by default behind MTMCP_ETF_FLOWS_ENABLED, pending issuer-feed licensing review.
  • Fixed COT report parsing for the CFTC TFF dataset (leveraged-money and asset-manager columns use no _all suffix).

@mt-mcp/gateway — v1.1.0

  • Added PUT/GET/DELETE /api/prop-firm-rules backed by a PropFirmEvaluator sampling loop that maintains trailing watermarks, daily snapshots, and days-traded counts (reusing the equity-guard reset-timezone machinery). Requires the trade capability; unreachable terminals fail safe to block.
  • Added PUT/GET/DELETE /api/news-guard and GET /api/cb-stance, backed by a NewsGuardMonitor poll loop (atomic Redis URL-dedup) and a CbStanceRefresher background job. Both require the analytics capability. News fetching is gated on NEWS_API_KEY and degrades to a safe no-op when unset.

@mt-mcp/license — v1.1.0

  • Added tables and stores for the new tools: prop_firm_rulesets and prop_firm_day_snapshots, news_guard_configs, cb_stance_snapshots, calendar_events, regime_history, and etf_flow_history (migrations 0011–0013).

2026-07-15

@mt-mcp/mcp — v1.0.0

  • Extracted client origin details (clientName and ipAddress) during connection and attached them to MCP tool execution payloads for audit tracking.

@mt-mcp/gateway — v1.0.0

  • Added GET /api/dashboard/support/identity for secure Chatwoot user identity verification via HMAC-SHA256.
  • Updated the MCP execution payload processor to correctly ingest client origin metadata into the audit log.

@mt-mcp/license — v1.0.0

  • Updated database schema and AuditLogService to track and fetch client_name and ip_address for all tool executions.

@mt-mcp/shared — v1.0.0

  • Internal dependency updates for v1.0.0 release.

@mt-mcp/dashboard — v1.0.0

  • Added Chatwoot live support widget with identity verification and custom context attributes.
  • Added new "Origin" and "Params" columns to the Audit Log, displaying client badges, IP addresses, and expandable JSON payloads.
  • Added graceful error handling for missing third-party credentials in sentiment and support widgets.

@mt-mcp/docs — v1.0.0

  • Updated branding to MTContext and finalized guides for v1.0.0 release.

2026-07-10

@mt-mcp/mcp

  • Added reverse_position — close and reopen a position in a single call instead of two round trips.
  • Modularized risk helpers and added preflight validation to order dispatch, failing closed on invalid requests.
  • Fixed the order-comment sanitizer rejecting literal dot characters.
  • JWT key files are now excluded from version control to prevent accidental commits.

@mt-mcp/dashboard

  • Added Myfxbook sentiment API integration.
  • Reworked the dashboard design system — new widgets, layouts, and API integrations, with consistent widget container heights.

2026-07-08

@mt-mcp/mcp

  • Improved JWT handling in the authenticated dispatch path to recover from terminal-ID mismatches without dropping the session.

2026-07-06

@mt-mcp/mcp

  • Added indicator handlers for Parabolic SAR, Stochastic, Standard Deviation, and Williams %R.
  • Removed obsolete verification scripts for HTTP transport resilience and Redis session routing (superseded by the integration test suite).

2026-07-01

@mt-mcp/gateway

  • Implemented multi-replica session routing with proxy logic, so a request can reach the right MCP instance regardless of which replica receives it.
  • Replaced the deprecated cross-instance Redis test with gateway-proxy and mcp-proxy tests covering session dispatch across replicas.

2026-06-28 – 2026-06-30

@mt-mcp/gateway

  • Added a Redis-backed session store to support multi-replica MCP server deployments.
  • Added compare-and-delete logic for the terminal → session pointer in Redis, closing a race on reconnect.
  • Added HTTP terminal session management and cross-instance dispatching via Redis.
  • Added an instance registry and request proxying for multi-replica MCP sessions.
  • Enhanced HTTP transport resilience with a dedicated heartbeat channel.

Infra

  • Adjusted replica counts and HPA configuration to right-size resource usage.
  • Updated network policies to allow egress to Redis and labeled deployments for Redis client discovery.

@mt-mcp/license

  • Implemented terminal-scoped key validation and updated the license service to support the new key structure — the change that made master license keys stop working for MCP/EA authentication (see the terminal key setup guide).

On this page