Skip to content

feat(mcp): let product plugins install remote connectors - #2

Open
mikield wants to merge 1 commit into
mainfrom
codex/public-mcp-connector-port
Open

mikield wants to merge 1 commit into
mainfrom
codex/public-mcp-connector-port

Conversation

@mikield

@mikield mikield commented Sep 11, 2026

Copy link
Copy Markdown
Member

Product plugins had no stable way to install a declared remote MCP connector. They either had to reach into MCP internals or make an authenticated HTTP call back into their own machine, and neither preserved the MCP plugin as the owner of OAuth and credentials.

Add the tokenless McpConnectorPort to the public Harness contract. The MCP plugin provides install, DCR authorization and sanitized status through that port; installed headers are strict vault-key/template bindings resolved only while dialing. A changed remote endpoint clears pending and persisted OAuth state, while the owner-facing OAuth route now delegates to the same DCR implementation.

Proven with focused MCP connector and OAuth tests, TypeScript typecheck, package build, dist health smoke, and boundary check. The full suite was also run but has a pre-existing Node 26 timing failure in src/shutdown.test.ts, whose shutdown socket assertion observed 0ms instead of its required >=49ms.

This does not add product pack manifests, platform UI, or brokered OAuth; those remain product-plugin responsibilities.

Product plugins had no stable way to install a declared remote MCP connector. They either had to reach into MCP internals or make an authenticated HTTP call back into their own machine, and neither preserved the MCP plugin as the owner of OAuth and credentials.

Add the tokenless McpConnectorPort to the public Harness contract. The MCP plugin provides install, DCR authorization and sanitized status through that port; installed headers are strict vault-key/template bindings resolved only while dialing. A changed remote endpoint clears pending and persisted OAuth state, while the owner-facing OAuth route now delegates to the same DCR implementation.

Proven with focused MCP connector and OAuth tests, TypeScript typecheck, package build, dist health smoke, and boundary check. The full suite was also run but has a pre-existing Node 26 timing failure in src/shutdown.test.ts, whose shutdown socket assertion observed 0ms instead of its required >=49ms.

This does not add product pack manifests, platform UI, or brokered OAuth; those remain product-plugin responsibilities.
@mikield
mikield added this pull request to stack #5 September 11, 2026 02:55
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