Skip to main content
Glama
agarwalvivek29

OpenTelemetry MCP Server

config.py3.17 kB
"""Configuration management for otel-mcp server.""" import os from typing import Literal, Optional from pydantic import BaseModel, Field from pydantic_settings import BaseSettings from dotenv import load_dotenv # Load environment variables load_dotenv() class BackendAuth(BaseModel): """Authentication configuration for backends.""" type: Literal["none", "basic", "bearer"] = "none" username: Optional[str] = None password: Optional[str] = None bearer_token: Optional[str] = None class PrometheusConfig(BaseModel): """Prometheus backend configuration.""" url: str = Field(default="http://localhost:9090") auth: BackendAuth = Field(default_factory=lambda: BackendAuth(type="none")) timeout: int = Field(default=30) class LokiConfig(BaseModel): """Loki backend configuration.""" url: str = Field(default="http://localhost:3100") auth: BackendAuth = Field(default_factory=lambda: BackendAuth(type="none")) tenant_id: str = Field(default="system") timeout: int = Field(default=30) class Config(BaseSettings): """Main configuration for otel-mcp server.""" # Server settings server_name: str = Field(default="otel-mcp") log_level: str = Field(default="INFO") max_query_results: int = Field(default=10000) default_time_range: str = Field(default="1h") # Prometheus settings prometheus_url: str = Field(default="http://localhost:9090") prometheus_auth_type: Literal["none", "basic", "bearer"] = Field(default="none") prometheus_username: Optional[str] = None prometheus_password: Optional[str] = None prometheus_bearer_token: Optional[str] = None # Loki settings loki_url: str = Field(default="http://localhost:3100") loki_auth_type: Literal["none", "basic", "bearer"] = Field(default="none") loki_username: Optional[str] = None loki_password: Optional[str] = None loki_bearer_token: Optional[str] = None loki_tenant_id: str = Field(default="system") # General settings query_timeout: int = Field(default=30) model_config = { "env_file": ".env", "case_sensitive": False, "extra": "ignore" } @property def prometheus(self) -> PrometheusConfig: """Get Prometheus configuration.""" return PrometheusConfig( url=self.prometheus_url, auth=BackendAuth( type=self.prometheus_auth_type, username=self.prometheus_username, password=self.prometheus_password, bearer_token=self.prometheus_bearer_token, ), timeout=self.query_timeout, ) @property def loki(self) -> LokiConfig: """Get Loki configuration.""" return LokiConfig( url=self.loki_url, auth=BackendAuth( type=self.loki_auth_type, username=self.loki_username, password=self.loki_password, bearer_token=self.loki_bearer_token, ), tenant_id=self.loki_tenant_id, timeout=self.query_timeout, ) # Global config instance config = Config()

Latest Blog Posts

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/agarwalvivek29/opentelemetry-mcp'

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