Skip to main content
Glama

MCPJungle mcp gateway

by mcpjungle
Mozilla Public License 2.0
638
  • Apple
otel.go•2.44 kB
package telemetry import ( "context" "fmt" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/prometheus" "go.opentelemetry.io/otel/metric" sdkmetric "go.opentelemetry.io/otel/sdk/metric" sdkresource "go.opentelemetry.io/otel/sdk/resource" semconv "go.opentelemetry.io/otel/semconv/v1.24.0" ) // Config holds otel configuration options type Config struct { ServiceName string Enabled bool } // Providers holds the Otel configuration and metrics provider. // Eventually, it will also hold providers for tracing and logging type Providers struct { Config *Config MeterProvider *sdkmetric.MeterProvider Meter metric.Meter } // Init initializes Otel with the provided configuration func Init(ctx context.Context, config *Config) (*Providers, error) { // If otel is disabled, return empty providers if !config.Enabled { return &Providers{ Config: config, }, nil } // Create resource with service information res, err := sdkresource.New( ctx, sdkresource.WithFromEnv(), sdkresource.WithHost(), sdkresource.WithProcess(), sdkresource.WithAttributes( semconv.ServiceName(config.ServiceName), ), ) if err != nil { return nil, fmt.Errorf("failed to create otel resource: %w", err) } // Create Prometheus exporter exporter, err := prometheus.New() if err != nil { return nil, fmt.Errorf("failed to create Prometheus exporter: %w", err) } // Create meter provider with Prometheus exporter meterProvider := sdkmetric.NewMeterProvider( sdkmetric.WithReader(exporter), sdkmetric.WithResource(res), ) // Set the global meter provider otel.SetMeterProvider(meterProvider) // Create meter for the service meter := meterProvider.Meter(config.ServiceName) providers := &Providers{ Config: config, MeterProvider: meterProvider, Meter: meter, } return providers, nil } // Shutdown gracefully shuts down the otel providers func (p *Providers) Shutdown(ctx context.Context) error { if p == nil { return nil } if p.MeterProvider != nil { if err := p.MeterProvider.Shutdown(ctx); err != nil { return fmt.Errorf("failed to shutdown meter provider: %w", err) } } return nil } // IsEnabled returns true if otel is enabled func (p *Providers) IsEnabled() bool { return p.Config.Enabled } // ServiceName returns the service name configured for otel func (p *Providers) ServiceName() string { return p.Config.ServiceName }

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/mcpjungle/MCPJungle'

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