Repository navigation
Allow native coordinator MCP protocol clients - #591
Closed
adrianwebb wants to merge 3 commits into
Closed
adrianwebb wants to merge 3 commits into
adrianwebb wants to merge 3 commits into
Conversation
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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):
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
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.npm run check:file-lengths: pass, including architecture policy.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
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.