Skip to content

Commit fc16ca4

Browse files
committed
feat: add support for build args in spec.yaml files
1 parent 23cfaf1 commit fc16ca4

File tree

4 files changed

+27
-4
lines changed

4 files changed

+27
-4
lines changed

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ metadata:
5959
spec:
6060
package: "your-package-name" # Required: Package name from registry
6161
version: "1.0.0" # Required: Specific version to build
62+
args: # Optional: Additional arguments for the package
63+
- "arg1" # Arguments are passed to the entrypoint
64+
- "arg2"
6265

6366
provenance: # Optional but recommended
6467
repository_uri: "https://github.com/user/repo" # Expected source repository (used for verification)
@@ -97,12 +100,26 @@ metadata:
97100
spec:
98101
package: "@your-org/mcp-server" # NPM package name
99102
version: "2.1.0"
103+
args: # Optional: Add required CLI arguments
104+
- "start" # For packages that need specific commands
100105

101106
provenance:
102107
repository_uri: "https://github.com/your-org/mcp-server"
103108
repository_ref: "refs/tags/v2.1.0"
104109
```
105110
111+
**Real-world example** (LaunchDarkly MCP server):
112+
```yaml
113+
# Some packages require specific CLI arguments to run
114+
# These are baked into the container entrypoint
115+
spec:
116+
package: "@launchdarkly/mcp-server"
117+
version: "0.4.2"
118+
args:
119+
- "start" # Required by LaunchDarkly's CLI
120+
# Results in: ENTRYPOINT ["npx", "@launchdarkly/mcp-server", "start"]
121+
```
122+
106123
#### UVX (Python) Example
107124

108125
Directory structure:

cmd/dockhand/main.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ type MCPServerMetadata struct {
3939

4040
// MCPServerPackageSpec defines the package to be containerized
4141
type MCPServerPackageSpec struct {
42-
Package string `yaml:"package"` // e.g., "@upstash/context7-mcp"
43-
Version string `yaml:"version,omitempty"` // e.g., "1.0.14"
42+
Package string `yaml:"package"` // e.g., "@upstash/context7-mcp"
43+
Version string `yaml:"version,omitempty"` // e.g., "1.0.14"
44+
Args []string `yaml:"args,omitempty"` // Additional arguments for the package
4445
}
4546

4647
// MCPServerProvenance contains supply chain provenance information
@@ -319,8 +320,8 @@ func generateDockerfile(ctx context.Context, spec *MCPServerSpec, customTag stri
319320
protocolScheme,
320321
"", // caCertPath - empty for now
321322
imageTag,
322-
[]string{}, // extraArgs
323-
true, // always dryRun to generate Dockerfile
323+
spec.Spec.Args, // Pass args from spec if present
324+
true, // always dryRun to generate Dockerfile
324325
)
325326
if err != nil {
326327
return "", fmt.Errorf("failed to generate Dockerfile for protocol scheme %s: %w", protocolScheme, err)

docs/packaging.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ metadata:
2828
spec:
2929
package: "{package-identifier}" # PyPI/npm name or Go module
3030
version: "{exact-version}"
31+
args: # Optional: CLI arguments for the package
32+
- "{arg1}" # Passed to the entrypoint command
33+
- "{arg2}"
3134

3235
provenance:
3336
repository_uri: "{github-url}"

npx/launchdarkly-mcp-server/spec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ metadata:
1212
spec:
1313
package: "@launchdarkly/mcp-server"
1414
version: "0.4.2"
15+
args:
16+
- "start"
1517

1618
provenance:
1719
repository_uri: "https://github.com/launchdarkly/mcp-server"

0 commit comments

Comments
 (0)