Skip to content

Allow native coordinator MCP protocol clients - #591

Closed
adrianwebb wants to merge 3 commits into
stagingfrom
codex/coordinator-mcp553
Closed

adrianwebb wants to merge 3 commits into
stagingfrom
codex/coordinator-mcp553

Conversation

@adrianwebb

@adrianwebb adrianwebb commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

Allow native Codex coordinators to connect to TreeSeed's existing MCP endpoint. The live client authenticates but its 2025-06-18 initialize request is rejected by our explicit modern-only setting. Use the MCP SDK's stateless legacy support with the same server factory, authorization, schemas and shared backend handlers.

Work authority

Contributor mode (select one):

  • Agent-authored under human authority

Plan

Reproduce the observed native protocol request through the real HTTP/Identity boundary, enable the SDK's built-in legacy stateless posture, then prove handshake, discovery and shared operation invocation. Keep the modern path and all authentication/precondition checks.

Changes and commits

852354d changes one handler option from legacy reject to stateless and adds the production-shaped HTTP regression using signed Identity tokens. No new adapter, runner, generic dispatch endpoint, storage or credential mechanism.

Verification

  • Before repair: initialize returned HTTP 400; 11 existing HTTP/Identity checks passed.
  • After repair: npx vitest run --config vitest.control-plane.config.ts --project control-plane tests/unit/control-plane/accounts/identity/resource-http.test.ts tests/unit/control-plane/mcp/authorization-equivalence.test.ts tests/unit/control-plane/mcp/schema-dialect.test.ts: 18/18 pass.
  • Native 2025 handshake, tools/list and tools/call reach the existing status handler with the verified client identity and expiry; invalid tokens still return 401.
  • npm run check:file-lengths: pass, including architecture policy.
  • Build and required Actions pending; no broad suite or full coordinator workflow pass claimed.
  • I ran the narrowest relevant package verification and documented any checks that could not be run.

Risk and rollback

Enables supported legacy stateless clients on the existing protected endpoint. The SDK owns wire adaptation; no downgrade of OAuth, grants or operation validation. Revert this merge through the normal PR process to restore modern-only admission. No data migration.

Completion summary

Focused repair complete. Live deployment/read-back and the full MCP workflow remain pending. SDK #435 separately narrows coordinator tool/resource declarations. This PR does not resume portfolio work.

AGPL committer authorization

The base-owned workflow checks the authenticated GitHub PR author against the existing approved-committers policy; no allowlist or licensing changes.

Submission checklist

  • The change is bounded to the stated work item and target repository.
  • Exact base and head refs are recorded and the branch is ready for review.
  • Verification and compatibility evidence are recorded above.
  • No plaintext secrets, credentials, machine state, or unrelated residue are included.
  • Plan, status, commits, and completion summary form a complete durable record.
  • Rollback or recovery steps are documented and executable.

CI follow-up: the previous protocol-contract assertion required rejection of the protocol this repair supports. It now sends the required JSON/SSE accept header and proves the negotiated 2025-06-18 response. The protocol and signed-Identity-token files pass 32/32; existing authorization denials remain unchanged. First verify run 39764314002 is retained as failed; replacement Actions pending.

CI follow-up 2: run39768044324 stopped on the 500-line policy (protocol-contract504). The duplicate legacy handshake case is consolidated into the existing owning signed-Identity HTTP regression, which already proves negotiation, discovery, invocation and token denial; modern protocol coverage is retained. Two focused files pass31/31, file/architecture policies pass. No deadline or policy relaxed. Replacement required Actions pending.

Superseded candidate

Consolidated into #595 at 8747a50. This PR's source changes, focused checks and failed observations remain retained. The complete current MCP candidate runs the unchanged required verification/996-step component scene; do not merge this older partial candidate or rerun its redundant campaign. No implementation/product evidence is replaced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant