Add optional title field to server.json schema (#608)
## Summary Introduces a new optional `title` field for MCP servers to provide a clean, human-readable display name that clients and subregistries can use for display purposes. Fixes #606 ## Changes - Added `title` field to `ServerJSON` type (optional, max 100 chars) - Added validation to reject titles ending with 'MCP Server', 'MCP server', or 'MCP' suffixes - Updated JSON schema and OpenAPI specification - Added comprehensive test coverage for title validation - Updated all documentation examples to demonstrate the new field ## Validation The title field: - Is optional (can be omitted) - Must not be only whitespace if provided - Must not end with MCP-related suffixes (case-insensitive) - Can contain 'MCP' in the middle (e.g., "MCP Weather API" is valid) Examples: - ✅ Valid: "GitHub", "Weather API", "Slack Integration" - ❌ Invalid: "GitHub MCP", "Weather MCP Server", "Slack-MCP" --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
parent
44950c23bb
commit
44e35020b0
1 changed files with 230 additions and 27 deletions
|
|
@ -83,6 +83,11 @@ func ValidateServerJSON(serverJSON *apiv0.ServerJSON) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Validate title if provided
|
||||
if err := validateTitle(serverJSON.Title); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Validate all packages (basic field validation)
|
||||
// Detailed package validation (including registry checks) is done during publish
|
||||
for _, pkg := range serverJSON.Packages {
|
||||
|
|
@ -156,6 +161,20 @@ func validateWebsiteURL(websiteURL string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func validateTitle(title string) error {
|
||||
// Skip validation if title is not provided (optional field)
|
||||
if title == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check that title is not only whitespace
|
||||
if strings.TrimSpace(title) == "" {
|
||||
return fmt.Errorf("title cannot be only whitespace")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func validatePackageField(obj *model.Package) error {
|
||||
if !HasNoSpaces(obj.Identifier) {
|
||||
return ErrPackageNameHasSpaces
|
||||
|
|
|
|||
Loading…
Reference in a new issue