From 4230dc85f695cc5a010265b9d1e7dff59ec6aa6f Mon Sep 17 00:00:00 2001 From: Marc Nuri Date: Fri, 12 Dec 2025 10:55:30 +0100 Subject: [PATCH] feat(mcp-registry): add MCP Registry metadata and server manifest Add required metadata for publishing to the official Model Context Protocol (MCP) Registry: - Add mcpName field to npm package.json generation - Add mcp-name metadata to README.md for Python package - Add io.modelcontextprotocol.server.name to container image - Create server.json manifest with npm and PyPI package definitions Signed-off-by: Marc Nuri --- Dockerfile | 1 + README.md | 6 ++++- build/node.mk | 3 ++- server.json | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 server.json diff --git a/Dockerfile b/Dockerfile index bb8d7e4c2..f19617e36 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ COPY ./ ./ RUN make build FROM registry.access.redhat.com/ubi9/ubi-minimal:latest +LABEL io.modelcontextprotocol.server.name="io.github.containers/kubernetes-mcp-server" WORKDIR /app COPY --from=builder /app/kubernetes-mcp-server /app/kubernetes-mcp-server USER 65532:65532 diff --git a/README.md b/README.md index baf9e06ac..edc63639a 100644 --- a/README.md +++ b/README.md @@ -567,4 +567,8 @@ Compile the project and run the Kubernetes MCP server with [mcp-inspector](https make build # Run the Kubernetes MCP server with mcp-inspector npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server -``` \ No newline at end of file +``` + +--- + +mcp-name: io.github.containers/kubernetes-mcp-server \ No newline at end of file diff --git a/build/node.mk b/build/node.mk index f9c18280e..bc3a47281 100644 --- a/build/node.mk +++ b/build/node.mk @@ -41,7 +41,8 @@ npm-copy-project-files: npm-copy-binaries ## Copy the project files to the main @echo '"author": {"name": "Marc Nuri", "url": "https://www.marcnuri.com"},' >> $(MAIN_PACKAGE_JSON) @echo '"license": "Apache-2.0",' >> $(MAIN_PACKAGE_JSON) @echo '"bugs": {"url": "https://github.com/containers/kubernetes-mcp-server/issues"},' >> $(MAIN_PACKAGE_JSON) - @echo '"homepage": "https://github.com/containers/kubernetes-mcp-server#readme"' >> $(MAIN_PACKAGE_JSON) + @echo '"homepage": "https://github.com/containers/kubernetes-mcp-server#readme",' >> $(MAIN_PACKAGE_JSON) + @echo '"mcpName": "io.github.containers/kubernetes-mcp-server"' >> $(MAIN_PACKAGE_JSON) @echo '}' >> $(MAIN_PACKAGE_JSON) $(foreach os,$(OSES),$(foreach arch,$(ARCHS), \ OS_PACKAGE_JSON=./npm/$(NPM_PACKAGE)-$(os)-$(arch)/package.json; \ diff --git a/server.json b/server.json new file mode 100644 index 000000000..7380cfea0 --- /dev/null +++ b/server.json @@ -0,0 +1,68 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", + "name": "io.github.containers/kubernetes-mcp-server", + "description": "A Model Context Protocol (MCP) server for Kubernetes and OpenShift", + "status": "active", + "repository": { + "url": "https://github.com/containers/kubernetes-mcp-server", + "source": "github" + }, + "version": "0.0.0", + "packages": [ + { + "registryType": "npm", + "registryBaseUrl": "https://registry.npmjs.org", + "identifier": "kubernetes-mcp-server", + "version": "0.0.0", + "transport": { + "type": "stdio" + } + }, + { + "registryType": "pypi", + "registryBaseUrl": "https://pypi.org", + "identifier": "kubernetes-mcp-server", + "version": "0.0.0", + "runtimeHint": "uvx", + "transport": { + "type": "stdio" + } + }, + { + "registryType": "oci", + "identifier": "quay.io/containers/kubernetes_mcp_server:0.0.0", + "version": "0.0.0", + "runtimeHint": "docker", + "runtimeArguments": [ + { + "type": "named", + "name": "-v", + "description": "Volume mount for kubeconfig access (host_path:container_path)", + "format": "string", + "isRequired": true, + "placeholder": "~/.kube/config:/kubeconfig:ro" + }, + { + "type": "named", + "name": "-e", + "description": "Environment variable to set the kubeconfig path inside the container", + "format": "string", + "isRequired": true, + "default": "KUBECONFIG=/kubeconfig" + }, + { + "type": "named", + "name": "-p", + "description": "Port mapping for MCP server HTTP endpoint (host_port:container_port)", + "format": "string", + "isRequired": true, + "default": "8080:8080" + } + ], + "transport": { + "type": "streamable-http", + "url": "http://localhost:8080/mcp" + } + } + ] +}