Adds oci-javascript-mcp-server Kubernetes/Kata Isolation Provider - #431
Open
dustin-sale wants to merge 14 commits into
Open
dustin-sale wants to merge 14 commits into
dustin-sale wants to merge 14 commits into
Conversation
…cal development profiles
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
2 times, most recently
from
September 3, 2026 19:43
a5b46e4 to
0fa9f5b
Compare
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
from
September 3, 2026 19:52
0fa9f5b to
a652aab
Compare
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
from
September 4, 2026 14:39
e576b6d to
2f92241
Compare
dustin-sale
marked this pull request as ready for review
September 4, 2026 18:21
dustin-sale
requested review from
AlaaShaker,
gebhardtr and
krisrice
as code owners
September 4, 2026 18:21
dustin-sale
marked this pull request as draft
September 4, 2026 19:05
dustin-sale
marked this pull request as ready for review
September 4, 2026 20:09
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
from
September 16, 2026 13:03
2f92241 to
831ae23
Compare
dustin-sale
marked this pull request as draft
September 30, 2026 13:24
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
3 times, most recently
from
September 30, 2026 16:49
b7aebd3 to
d5f71a4
Compare
Resolve the Kubernetes isolation provider on the shared protobuf gRPC transport with mTLS and pod port-forwarding.
dustin-sale
force-pushed
the
dustin-sale/oci-javascript-k8s-isolation-provider
branch
from
September 30, 2026 17:14
d5f71a4 to
055ac40
Compare
dustin-sale
marked this pull request as ready for review
October 2, 2026 17:16
This branch has not been deployed
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.
Description
Extends the existing
oci-javascript-mcp-serverwith a Kubernetes isolation provider while preserving Podman as the default. Provider and profile selection are trusted startup configuration, use exact accepted values, and fail closed without falling back to another runtime or credential source.The Kubernetes provider includes:
local-development,in-cluster, andkata-in-clusterprofiles behind a shared isolation-provider interface.RuntimeClassand handler where applicable.The motivation is to support cluster-managed execution and an optional Kata-backed deployment profile without weakening the server's trusted-host boundary or changing existing Podman deployments. The standard Kubernetes profiles provide container isolation only. The Kata profile is intentionally documented as a proof of concept and still requires deployment-specific runtime evidence and a current security review before it can be treated as a VM-grade boundary.
The implementation adds
@kubernetes/client-nodeand its WebSocket type support. Kubernetes deployments require access to a compatible cluster, the documented namespaces and RBAC/admission/network controls, a digest-pinned runner image, and a reviewed KataRuntimeClassforkata-in-cluster. The credential synchronization helper additionally requires Python 3 and an existing OCI CLI configuration. Podman remains the default and gains no new Kubernetes dependency at runtime. No downstream module changes are required.Additional unit-test coverage identified and corrected four behavior defects:
fails closed, and the initial readiness GET and watch both respect
cancellation and the absolute execution deadline.
named profiles that inherit a DEFAULT security-token path and profiles that
explicitly override or clear that value.
with regression cases for strings, templates, regular expressions, postfix
division, and JavaScript line terminators.
discover_ociexamples now represent required array fields as arrays,including model arrays, while retaining bounded model expansion.
The suite also verifies concurrent RPC response correlation with reversed
replies and mixed success/failure outcomes, plus background reconciliation's
immediate execution, prevention of overlapping cycles, recovery after failure,
and idempotent stop behavior. These tests use fake APIs and controlled responses.
The RPC protocol and reconciliation shutdown contract are unchanged.
Type of change
How Has This Been Tested?
Run the following from
src/oci-javascript-mcp-server:npm run check— TypeScript validation passed.npm run packcheck— npm package dry-run verification passed.npm run check:kubernetes-manifests— all 14 standard and Kata Kubernetes manifest tests passed.git diff --check 6633b602248bf44dbaf9aebe2e584c4a53622f1a...HEAD— passed with no whitespace errors.npm run ci— 184 tests passed with 95.39% coverageAdditionally, I tested in both
local-developmentandin-clusterkubernetes isolation provider profile modes.Latest whole-server validation, run from the repository root:
moon run --no-actions oci-javascript-mcp-server:check oci-javascript-mcp-server:test— native setup, protobuf compilation, TypeScript checking, and the c8 test
task passed.
and 95.75% lines. All configured 90% coverage thresholds passed.
corrections and passing afterward. Additional review regressions cover
late readiness events and JavaScript source-preservation edge cases.
git diff --checkpassed.--no-actionsbypassed dependency setup/synchronization after npm dedupestalled; compilation, checking, tests, and coverage enforcement still ran.
These results validate the installed dependency environment. Fake API tests
do not establish real-cluster runtime or admission-policy behavior.
Test Configuration:
arm64)oci-sdk2.132.x;@kubernetes/client-node2.x;@modelcontextprotocol/sdk1.29.xChecklist: