Skip to main content
Glama

CentralMind/Gateway

plugin.go1.56 kB
package piiremover import ( _ "embed" "fmt" "path" "regexp" "github.com/centralmind/gateway/plugins" ) //go:embed README.md var docString string func init() { plugins.Register(func(cfg Config) (plugins.Interceptor, error) { return New(cfg) }) } type Plugin struct { patterns map[string]*regexp.Regexp columns map[string]bool cfg Config } func (p *Plugin) Doc() string { return docString } func (p *Plugin) Process(data map[string]any, context map[string][]string) (processed map[string]any, skipped bool) { for k, v := range data { if p.columns[k] { data[k] = p.cfg.Replacement continue } for pattern := range p.columns { if matched, _ := path.Match(pattern, k); matched { data[k] = p.cfg.Replacement break } } if strVal, ok := v.(string); ok { for name, regex := range p.patterns { if k != name { continue } if regex.MatchString(strVal) { data[k] = p.cfg.Replacement break } } } } return data, false } func New(config Config) (plugins.Interceptor, error) { p := &Plugin{ patterns: make(map[string]*regexp.Regexp), columns: make(map[string]bool), cfg: config, } for name, pattern := range config.DetectionRules { regex, err := regexp.Compile(pattern) if err != nil { return nil, fmt.Errorf("invalid detection rule pattern for %s: %v", name, err) } p.patterns[name] = regex } if p.cfg.Replacement == "" { p.cfg.Replacement = "[REDACTED]" } for _, field := range config.Fields { p.columns[field] = true } return p, nil }

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