Skip to main content
Glama

CentralMind/Gateway

config.go2.94 kB
package oracle import ( "fmt" "strings" "gopkg.in/yaml.v3" ) // Config holds the configuration for Oracle database connection type Config struct { ConnType string `yaml:"type"` Hosts []string `yaml:"hosts"` User string `yaml:"user"` Password string `yaml:"password"` Database string `yaml:"database"` Schema string `yaml:"schema"` Port int `yaml:"port"` ConnString string `yaml:"conn_string"` IsReadonly bool `yaml:"is_readonly"` } func (c Config) Readonly() bool { return c.IsReadonly } // UnmarshalYAML implements the yaml.Unmarshaler interface to allow for both // direct connection string or full configuration objects in YAML func (c *Config) UnmarshalYAML(value *yaml.Node) error { // Try to unmarshal as a string (connection string) var connString string if err := value.Decode(&connString); err == nil && len(connString) > 0 { c.ConnString = connString return nil } // If that didn't work, try to unmarshal as a full config object type configAlias Config // Use alias to avoid infinite recursion var alias configAlias if err := value.Decode(&alias); err != nil { return err } *c = Config(alias) return nil } // Type implements the connectors.Config interface func (c Config) Type() string { return "oracle" } // Doc returns documentation for the Oracle configuration func (c Config) Doc() string { return "Oracle database connection configuration" } // ConnectionString builds Oracle connection string func (c Config) ConnectionString() string { // If direct connection string is provided, use it if c.ConnString != "" { return c.ConnString } // Oracle connection string format for go-ora: // oracle://user:password@host:port/service_name host := c.Hosts[0] if host == "localhost" { host = "127.0.0.1" } return fmt.Sprintf("oracle://%s:%s@%s:%d/%s", c.User, c.Password, host, c.Port, c.Database, ) } // Validate implements the connectors.Config interface func (c Config) Validate() error { var errors []string if c.ConnType != "oracle" { errors = append(errors, "type must be 'oracle'") } if len(c.Hosts) == 0 { errors = append(errors, "at least one host must be specified") } if c.User == "" { errors = append(errors, "user must be specified") } if c.Password == "" { errors = append(errors, "password must be specified") } if c.Database == "" { errors = append(errors, "database must be specified") } if c.Schema == "" { errors = append(errors, "schema must be specified") } if c.Port == 0 { errors = append(errors, "port must be specified") } if len(errors) > 0 { return fmt.Errorf("invalid oracle configuration: %s", strings.Join(errors, ", ")) } return nil } // ExtraPrompt implements the connectors.Config interface func (c Config) ExtraPrompt() []string { return nil } // Type implements the connectors.Config interface func (c Config) GetType() string { return c.Type() }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/centralmind/gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server