registry/cmd/publisher
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Yusufhan Saçak 8df5a7711d
fix(publisher): omit repository when URL cannot be detected (#1149)
## Summary

When `detectRepoURL()` cannot determine the repository (no git remote,
no package.json repository field), return an empty string instead of a
placeholder URL (`https://github.com/YOUR_USERNAME/YOUR_REPO`). This
causes `createServerJSON()` to omit the `repository` field entirely,
preventing schema validation failures on publish.

Fixes #613

## Problem

`mcp-publisher init` generated a `repository` object with a placeholder
URL that fails the `uri` format validation on publish. 88 published
servers in the official registry had this issue.

## Change

- `cmd/publisher/commands/init.go`: `detectRepoURL()` returns `""`
instead of placeholder when no repo is found
- The existing guard in `createServerJSON()` (`if repoURL != "" &&
repoSource != ""`) already handles this correctly — it omits the
repository when URL is empty

## Test plan

- [x] `go build ./cmd/publisher/...` compiles
- [x] `go test ./cmd/publisher/commands/...` passes
- [ ] Manual: `mcp-publisher init` in a directory without git remote or
package.json repo — verify no `repository` field in generated
server.json
- [ ] Manual: `mcp-publisher init` in a git repo — verify `repository`
is populated correctly

## AI Disclosure

AI assistance (Claude) was used for issue research. The implementation
was written and reviewed by the author.
2026-04-15 07:16:23 -04:00
..
auth fix: store tokens in ~/.config/mcp-publisher/ instead of cwd (#1166) 2026-04-15 03:23:07 -04:00
commands fix(publisher): omit repository when URL cannot be detected (#1149) 2026-04-15 07:16:23 -04:00
main.go Publisher-managed "deleted" support (#893) 2026-02-27 09:00:07 -08:00
README.md Publisher-managed "deleted" support (#893) 2026-02-27 09:00:07 -08:00

MCP Publisher Tool - Development

CLI tool for publishing MCP servers to the registry.

These docs are for contributors. See the Publisher User Guide for end-user documentation.

Quick Development Setup

# Build the tool
make publisher

# Test locally 
make dev-compose  # Start local registry
./bin/mcp-publisher init
./bin/mcp-publisher login none --registry=http://localhost:8080
./bin/mcp-publisher publish --registry=http://localhost:8080

Architecture

Commands

  • init - Generate server.json templates with auto-detection
  • login - Handle authentication (github, dns, http, none)
  • publish - Validate and upload servers to registry
  • status - Update server lifecycle status (active, deprecated, deleted)
  • logout - Clear stored credentials

Authentication Providers

  • github - Interactive OAuth flow
  • github-oidc - CI/CD with GitHub Actions
  • dns - Domain verification via DNS TXT records
  • http - Domain verification via HTTPS endpoints
  • none - No auth (testing only)

Signing Providers

Optional: enables dns and http methods to sign out-of-process without direct access to the private key.

  • google-kms - Google KMS signing
  • azure-key-vault - Azure Key Vault signing

Key Files

  • main.go - CLI setup and command routing
  • commands/ - Command implementations with auto-detection logic
  • auth/ - Authentication provider implementations
  • build.sh - Cross-platform build script