Repository navigation
Support for Go modules (go install) as a package type #1307
Description
Activity
I'd like to take this one —
gowould round out the package types nicely, given how many MCP servers ship as a singlego install-able binary.Reading through how the existing types are wired:
ValidatePackageininternal/validators/package.goswitches onRegistryTypeand dispatches to the per-registry validators underinternal/validators/registries/. Existence + ownership for npm/pypi/etc. works by fetching the published package metadata and checking it carries the server name (npm'smcpNamematchingserverName).Go is a bit different: modules don't carry an arbitrary metadata field we could stuff the server name into — there's no
mcpNameequivalent ingo.mod— so the npm-style "package declares its MCP name" check doesn't map directly.What does map cleanly is that a Go module path is its source location. For a server published under the
io.github.<owner>/...namespace with a module path ofgithub.com/<owner>/<repo>/..., the publisher already authenticated for that GitHub namespace and the module is rooted at the same repo, so matching the owner segment proves ownership without needing anything extra inside the module. Existence/version can be confirmed against the module proxy (https://proxy.golang.org/<case-encoded-module>/@v/listand/@latest).Does that ownership model sound acceptable, or would you prefer an explicit marker (sentinel file /
go.moddirective) so non-GitHub module paths can be supported too? Happy to implement once the approach is settled — looks like a newmodel.RegistryTypeGo, acasein the switch, and aregistries/go.govalidator + tests mirroring the existing ones.Reacted by AntoineOpened #1321 implementing this. It follows the v1 shape we discussed: GitHub-namespace ownership (
io.github.<owner>⇒ module rooted atgithub.com/<owner>/..., owner compared case-insensitively), existence verified viaproxy.golang.org, non-GitHub paths left as a follow-up.identifieris the module path. Happy to iterate on edge cases — and if you want to be the first publisher once it lands,github.com/P4ST4S/mcp-auditshould validate cleanly.Reacted by Antoine- added a commit that references this issue
on May 30, 2026 +1, hit the same wall publishing io.github.lsequeiraa/mcp-sidecar, a Go MCP server whose canonical install is
go install github.com/lsequeiraa/mcp-sidecar@latest.Since "wrap it in npm" comes up as the suggested workaround, a concrete data point on what that actually costs:
- Wrapper package (mcp-sidecar) with a bin.js that resolves the platform binary via
require.resolve. - Five platform packages (@mcp-sidecar/{darwin-arm64,darwin-x64,linux-arm64,linux-x64,win32-x64}) listed as optionalDependencies so npm picks the right one per host.
- GoReleaser for the Go binaries, plus a CI step that cross-compiles a second time for npm, version-bumps every sub-package, and npm publishes six packages per release.
"registryType": "npm"in server.json, even though the artifact is a Go binary.
It works (same pattern esbuild/swc/biome use), but it's a lot of mechanism for a tool whose canonical install is one go install command. Native
registryType: "go"would collapse that to publishing the module and writing the server.json.#1321 looks like the right shape: ownership anchored in the GitHub namespace the publisher already authenticates for, existence via proxy.golang.org. Would be great to see it land.
Reacted by Antoine- Wrapper package (mcp-sidecar) with a bin.js that resolves the platform binary via
- added 2 commits that reference this issue
on Jun 3, 2026
Is your feature request related to a problem? Please describe.
I'm trying to publish io.github.P4ST4S/mcp-audit, a Go MCP proxy server installable via
go install github.com/P4ST4S/mcp-audit/cmd/mcp-audit@latest. The registry currently returns "unsupported registry type: go", making it impossible to publish Go-based MCP servers.Describe the solution you'd like
Add support for
"registryType": "go"in server.json, using the Go module proxy (proxy.golang.org) as the package source. Ownership verification could check that the module path matches the repository URL in server.json, since Go modules are naturally scoped to their VCS host.Describe alternatives you've considered
Publishing as OCI/Docker adds unnecessary complexity for a CLI tool distributed via
go install. Wrapping in an npm package is not idiomatic for Go projects.Additional context
Reference server: https://github.com/P4ST4S/mcp-audit Go module: github.com/P4ST4S/mcp-audit
Installable today via: go install github.com/P4ST4S/mcp-audit/cmd/mcp-audit@latest
Go is increasingly used for MCP infrastructure tooling (proxies, gateways, audit layers) due to its performance characteristics. Native Go module support would meaningfully expand the registry's coverage of this category.