You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(diagnostics): make MCPX_DOCKER_EXEC_NOT_FOUND runtime-aware
The static DockerExecNotFound catalog message ("the image has no
uvx/node") is too generic to self-resolve. A field report (ElevenLabs /
uvx) hit it because of a per-server `isolation.image: "python:3.11"`
override — stock python has no uvx — but the owner misattributed it to
recent host-side docker PATH fixes.
Enrich the remediation with per-server context: name the detected
runtime (uvx/npx/pipx/…), the recommended runtime-default image
(default_images[runtimeType]), and flag a per-server isolation.image
override as the likely culprit when it differs from the default.
- ClassifierHints gains DockerCommand / DockerImageOverride /
DockerDefaultImages (diagnostics-only; never affect classification).
- RuntimeAwareRemediation(code, hints) builds the enriched message;
DiagnosticError.Remediation carries it; the REST/status serializers
prefer it over the static UserMessage when present.
- detectDockerRuntimeType mirrors core.DetectRuntimeType for display
(diagnostics must not import upstream/core).
- Add docs/errors/MCPX_DOCKER_EXEC_NOT_FOUND.md + README index entry.
Image selection and TransformCommandForContainer are unchanged
(correct since #477) — this is diagnostics-only.
Related MCP-2909
fmt.Fprintf(&b, "This `%s` server's Docker image has no `%s` interpreter, so the container could not start it.", runtimeType, runtimeType)
34
+
35
+
ifoverride!="" {
36
+
fmt.Fprintf(&b, " The per-server `isolation.image` override `%s` is the likely culprit", override)
37
+
ifrecommended!=""&&override!=recommended {
38
+
fmt.Fprintf(&b, " — it differs from the recommended image for `%s`", runtimeType)
39
+
}
40
+
b.WriteString(".")
41
+
}
42
+
43
+
switch {
44
+
caserecommended!=""&&override!="":
45
+
fmt.Fprintf(&b, " The recommended image for `%s` is `%s`. Remove the per-server `isolation.image` override to inherit it, or pick an image that includes `%s`.", runtimeType, recommended, runtimeType)
46
+
caserecommended!="":
47
+
fmt.Fprintf(&b, " The recommended image for `%s` is `%s`. Pick an image that includes `%s`.", runtimeType, recommended, runtimeType)
48
+
default:
49
+
fmt.Fprintf(&b, " Pick an image that includes `%s`.", runtimeType)
50
+
}
51
+
52
+
returnb.String()
53
+
}
54
+
55
+
// detectDockerRuntimeType maps a server's configured command to its runtime
56
+
// type key (the same keys used by config.DockerIsolationConfig.DefaultImages).
57
+
//
58
+
// It is a deliberately small, side-effect-free mirror of
0 commit comments