registry/internal/validators
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tadas Antanavicius 70a27717fb
feat(schema): allow template variables in transport URL field (#910)
Authored by Claude Code Opus 4.5, steered/reviewed by me.

## Summary
- Updated the URL regex pattern in `StreamableHttpTransport` and
`SseTransport` to allow template variables like `{baseUrl}` as an
alternative to requiring the `https://` prefix
- This enables more flexible URL configuration in the `remotes` section
of server.json

## Changes
- Modified the `url` field pattern from `^https?://[^\s]+$` to
`^(https?://[^\s]+|\{[a-zA-Z_][a-zA-Z0-9_]*\}[^\s]*)$`
- Updated both `openapi.yaml` and the derived `server.schema.json`
- Added clarifying documentation that URL must start with `http://`,
`https://`, or a template variable

## Regex breakdown

```
^(https?://[^\s]+|\{[a-zA-Z_][a-zA-Z0-9_]*\}[^\s]*)$
```

| Part | Meaning |
|------|---------|
| `^` | Start of string |
| `(` | Begin alternation group |
| `https?://[^\s]+` | `http://` or `https://` followed by non-whitespace
|
| `\|` | OR |
| `\{[a-zA-Z_][a-zA-Z0-9_]*\}` | Template variable: `{` + valid
identifier + `}` |
| `[^\s]*` | Optional path/query after template variable |
| `)` | End alternation group |
| `$` | End of string |

## Test cases

**Should match ✓**
- `https://api.example.com/mcp`
- `http://localhost:8080/sse`
- `https://example.com/path?query=value`
- `{baseUrl}`
- `{baseUrl}/mcp`
- `{server_url}/api/v1`
- `{API_ENDPOINT}`

**Should NOT match ✗**
- `ftp://example.com` — wrong protocol
- `example.com` — missing protocol or variable
- `/relative/path` — relative paths not allowed
- `{invalid-name}/path` — hyphens not valid in variable names
- `{123invalid}` — variables can't start with numbers

---------

Co-authored-by: Agent Orchestrator <agent@ao.pulsemcp.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-02-09 11:51:17 +02:00
..
registries Ensure tests are failing CI (#840) 2025-12-11 09:56:57 +02:00
schemas Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
constants.go feat: Add LocalTransport/RemoteTransport with URL template variables (#570) 2025-12-11 09:17:32 -08:00
package.go Add registry validators (#350) 2025-09-04 22:45:59 +01:00
schema.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
schema_regex_test.go feat(schema): allow template variables in transport URL field (#910) 2026-02-09 11:51:17 +02:00
schema_test.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
utils.go feat: Add LocalTransport/RemoteTransport with URL template variables (#570) 2025-12-11 09:17:32 -08:00
validation_detailed_test.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
validation_types.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
validation_types_test.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00
validators.go Added /validate endpoint and modified mcp-publish so that all validation happens there (#896) 2026-02-04 15:52:07 +02:00
validators_test.go Enhanced server.json validation (phase 1) (#636) 2026-01-16 00:49:39 +02:00