Phase 3.5 extraction & assembly

Deepen existing mcp-memory Streamable HTTP skeleton (G6.M1 / ADR-0050) with dual protocol-version negotiation coverage and RFC 9728 minimum PRM fields — expand the process, do not recreate it.

Milestone 3.5.E.1 — MCP Server Skeleton and Transport

Status: Completed Goal: Track E — MCP Tool Surface
Phase: 3.5 — Extraction & Context Assembly
Estimated effort: 2 days
Track: Track E — MCP Tool Surface
Depends on: Phase 3 exit + Phase 2.5.G6.M1 / ADR-0050


Why This Milestone Exists

Deepen the existing MCP resource-server skeleton so transport, auth discovery, and protocol-version negotiation are explicitly proven against the current MCP 1.x SDK — before Phase 3.5 replaces stub tool bodies with real memory pipelines.


Transport Decision (ADR-0050)

  • Streamable HTTP as the only supported production transport (established in 2.5.G6.M1)
  • stdio for dev-convenience only, gated behind IBEX_MCP_TRANSPORT=stdio + IBEX_MCP_ALLOW_STDIO
  • Python 3.12 + official mcp SDK 1.x (modelcontextprotocol/python-sdk)
  • Expand existing services/mcp-memory/ — do not create a second MCP process

Orientation (indicative)

Named paths, package layouts, libraries, schemas, env vars, and commands anywhere on this page are rough sketches for orientation — inspiration and a baseline, not a required change list.

During implementation, expect to:

  • open the live tree and follow existing patterns before inventing new ones
  • research current constraints (latency, tenancy, deploy shape, libraries) more deeply than this page can
  • advance the design beyond the sketch where measurement or code reality says so
  • land work in different filenames, merged packages, deferred docs, or new surfaces when the situation calls for it

Prefer outcomes over matching any particular file tree or command sequence.

Areas that may be involved (situational — not a checklist):

  • MCP server surface (services/mcp-memory/)
  • Conformance evidence (infra/scripts/mcp-conformance.sh)

Success signals

Outcome-oriented signals that the milestone is in good shape. Exact filenames, package layouts, and commands may differ from any sketches above.

  • Starts, responds to MCP initialize over Streamable HTTP for 2024-11-05 and 2025-11-25, with negotiated protocolVersion asserted
  • Bearer required; invalid token → HTTP 401 + WWW-Authenticate resource_metadata (OAuth RS shape)
  • Auth outage → HTTP 503 fail-closed
  • RFC 9728 PRM at /.well-known/oauth-protected-resource includes resource, authorization_servers, scopes_supported
  • Stub tools remain registered (real bodies deferred to 3.5.E.2)
  • make mcp-conformance / ci-gate-python paths still pass
  • Follow-up issues filed: #728 (RFC 9728 exhaustive fields), #729 (official conformance harness)

Prerequisites

  • Phase 3 exit
  • Auth service gRPC contract stable
  • Phase 2.5.G6.M1 / ADR-0050 skeleton present
Edit on GitHub

Last updated on