@@ -56,6 +56,10 @@ func run(name string) error {
5656 if err := isRemoteValid (name ); err != nil {
5757 return err
5858 }
59+
60+ if err := isOAuthDynamicValid (name ); err != nil {
61+ return err
62+ }
5963
6064 return nil
6165}
@@ -233,10 +237,41 @@ func isRemoteValid(name string) error {
233237 return fmt .Errorf ("remote server must have a transport_type specified" )
234238 }
235239
240+ // Validate transport_type is one of the allowed values
241+ validTransports := []string {"stdio" , "sse" , "streamable-http" }
242+ isValid := false
243+ for _ , valid := range validTransports {
244+ if server .Remote .TransportType == valid {
245+ isValid = true
246+ break
247+ }
248+ }
249+ if ! isValid {
250+ return fmt .Errorf ("remote server transport_type must be one of: stdio, sse, streamable-http (got: %s)" , server .Remote .TransportType )
251+ }
252+
236253 fmt .Println ("✅ Remote is valid" )
237254 return nil
238255}
239256
257+ // check if servers with OAuth have dynamic tools enabled
258+ func isOAuthDynamicValid (name string ) error {
259+ server , err := readServerYaml (name )
260+ if err != nil {
261+ return err
262+ }
263+
264+ // If server has OAuth configuration, it must have dynamic tools enabled
265+ if len (server .OAuth ) > 0 {
266+ if server .Dynamic == nil || ! server .Dynamic .Tools {
267+ return fmt .Errorf ("server with OAuth must have 'dynamic: tools: true' configuration" )
268+ }
269+ }
270+
271+ fmt .Println ("✅ OAuth dynamic configuration is valid" )
272+ return nil
273+ }
274+
240275func readServerYaml (name string ) (servers.Server , error ) {
241276 serverYaml , err := os .ReadFile (filepath .Join ("servers" , name , "server.yaml" ))
242277 if err != nil {
0 commit comments