Skip to content

MCP Server 1.0.6

Latest

Choose a tag to compare

@mxmsmnv mxmsmnv released this 28 Oct 14:53

Security update for credential policy, request admission and audit reliability.

  • Preserve concurrent token revocation, scope reductions and expiry changes across authentication, client creation and revocation. Reload current policy after credential verification and immediately before provider dispatch. Thanks to AndZyk for the private concurrency report and public review.
  • Fail closed on unavailable client storage, use atomic per-client request counters, and bound attempts before expensive authentication, including invalid tokens.
  • Persist a started audit record before execution; refuse tool execution when that record cannot be inserted. Retain evidence when completion fails and safely represent oversized Unicode request IDs.
  • Filter authenticated tool/capability/provider discovery by scope. Restrict PHP/ProcessWire and provider version details to admin clients.

Validation: 195 local checks passed, including 32 real MariaDB storage regressions, 32 HTTP checks and ProcessWire permission checks. GitHub Actions passed on PHP 8.2 and 8.5 with MySQL 8. Concurrency cases use controlled interleaving, not a load benchmark. Provider business rules remain the responsibility of their owning modules.

Install the attached complete runtime ZIP and refresh ProcessWire modules to create mcp_server_limits. Existing token formats remain compatible. Disable the endpoint, drain in-flight requests and retain normal database/files backups before deployment. Review and reapply intended revocations, scope reductions and expiry dates: earlier concurrent writes may have restored old policy.

Authentication admission allows 120 attempts per direct peer and 600 globally per UTC minute, before the separate configured client limit. REMOTE_ADDR selects the peer bucket; arbitrary forwarded headers are not trusted. Review trusted-proxy address handling when deploying behind a reverse proxy.

Keep the endpoint disabled if an immediate upgrade is unavailable or an older runtime is restored. Revocation prevents subsequent dispatch; it cannot cancel provider operations already running.